[FIX] sale: allow invoice creation from public user

- Activate automatic invoicing after successful payment
- Go to the eCommerce with the public user
- Purchase an item

An error occurs because a `list` has no attribute `id`.

The root cause is the following line:

https://github.com/odoo/odoo/commit/3abe78087a0426ad2783942baa01e1d5fbdff2d9#diff-39d0613187d36f16c541734e80925e9dR556

We want to allow the following scenarios:
- a saleman generates an invoice for its customer but doesn't have
  accounting rights
  => check on `sale.order`
- an accountant generates an invoice from a SO he can read but not
  modify
  => check on `account.move`
- an invoice is generated from a purchase on the ecommerce
  => use of `sudo` in calling methods

opw-2185680

closes odoo/odoo#44400

X-original-commit: 9ef6282fe51bbd3f0ec56d7ac420d9ffe5c46331
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Co-authored-by: alt-odoo <alt@odoo.com>
Co-authored-by: Thibault Francois <tfr@openerp.com>
This commit is contained in:
Nicolas Martinelli
2020-01-31 14:37:17 +00:00
co-authored by alt-odoo Thibault Francois
parent 83f2811217
commit b5902c3fa2
+7 -3
View File
@@ -6,7 +6,7 @@ from functools import partial
from itertools import groupby
from odoo import api, fields, models, SUPERUSER_ID, _
from odoo.exceptions import UserError, ValidationError
from odoo.exceptions import AccessError, UserError, ValidationError
from odoo.tools.misc import formatLang
from odoo.osv import expression
from odoo.tools import float_is_zero, float_compare
@@ -580,8 +580,12 @@ class SaleOrder(models.Model):
:param final: if True, refunds will be generated if necessary
:returns: list of created invoices
"""
if not self.env.user.has_group('sales_team.group_sale_salesman'):
return []
if not self.env['account.move'].check_access_rights('create', False):
try:
self.check_access_rights('write')
self.check_access_rule('write')
except AccessError:
return self.env['account.move']
precision = self.env['decimal.precision'].precision_get('Product Unit of Measure')