summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2020-01-31 10:12:49 +0000
committerNicolas Martinelli <nim@odoo.com>2020-01-31 14:37:17 +0000
commitb5902c3fa23c444565eaf0b1aa6d8f956ce14453 (patch)
treee1b9e02c80c4bace570275470a5d79a812bfd313
parent83f2811217ba3b178046f7be4f34303182f07ef2 (diff)
[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>
-rw-r--r--addons/sale/models/sale.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py
index e234ac6ea61..cd0049cc23c 100644
--- a/addons/sale/models/sale.py
+++ b/addons/sale/models/sale.py
@@ -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')