From b3c345cf28ac0d02252d41cf613c6a296fa54b38 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Thu, 29 Aug 2019 15:44:54 +0000 Subject: [PATCH] [FIX] sale_purchase: Access rights error Fine tuning of https://github.com/odoo/odoo/commit/6236ed1a5b138c5165929aa3f5c1d1f4f6aa061c#diff-2f6cca7f38255368e4a54b0a19406aa4 Steps to reproduce the bug: - Install Sales and Purchase modules - Create a user U with access rights to Sales - Try to open an existing SO or try create one with U Bug: An access right error was raised because the non stored field purchase_line_count must be computed PS: the compute_sudo had no effect on field purchase_line_count because it's a non stored field. opw:2056746 closes odoo/odoo#36247 Signed-off-by: Simon Goffin (sig) --- addons/sale_purchase/models/sale_order.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/sale_purchase/models/sale_order.py b/addons/sale_purchase/models/sale_order.py index 0b85753411f..7822271f9e0 100644 --- a/addons/sale_purchase/models/sale_order.py +++ b/addons/sale_purchase/models/sale_order.py @@ -71,12 +71,12 @@ class SaleOrderLine(models.Model): _inherit = 'sale.order.line' purchase_line_ids = fields.One2many('purchase.order.line', 'sale_line_id', string="Generated Purchase Lines", readonly=True, help="Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.") - purchase_line_count = fields.Integer("Number of generated purchase items", compute='_compute_purchase_count', compute_sudo=True) + purchase_line_count = fields.Integer("Number of generated purchase items", compute='_compute_purchase_count') @api.multi @api.depends('purchase_line_ids') def _compute_purchase_count(self): - database_data = self.env['purchase.order.line'].read_group([('sale_line_id', 'in', self.ids)], ['sale_line_id'], ['sale_line_id']) + database_data = self.env['purchase.order.line'].sudo().read_group([('sale_line_id', 'in', self.ids)], ['sale_line_id'], ['sale_line_id']) mapped_data = dict([(db['sale_line_id'][0], db['sale_line_id_count']) for db in database_data]) for line in self: line.purchase_line_count = mapped_data.get(line.id, 0)