[FIX] stock: put stored related field product_code in compute_sudo

Have a multi-company setup, with shared products.
Write the default code of a product; an access error is raised on inventory.line

On inventory.line, the field product_code is defined as related to
'product_id.default_code', and stored.
So when writing on the default_code of a product, we get the inventory lines of
other companies. For obvious reasons their access is protected by the record
rule "Inventory Line multi-company", therefore the access error is raised.

To avoid that situation stored related fields should be in compute_sudo.

Note that similarly this is necessary for product_name.
There is one more subtlety: directly writing on the product.product does trigger
the access error, but writing it on the product.template does not.

opw 2007167

closes odoo/odoo#34019

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
This commit is contained in:
Nans Lefebvre
2019-06-12 07:58:15 +00:00
parent a25f6e1b96
commit f1706c848d
+2 -2
View File
@@ -310,9 +310,9 @@ class InventoryLine(models.Model):
domain=[('type', '=', 'product')],
index=True, required=True)
product_name = fields.Char(
'Product Name', related='product_id.name', store=True, readonly=True)
'Product Name', related='product_id.name', store=True, readonly=True, compute_sudo=True)
product_code = fields.Char(
'Product Code', related='product_id.default_code', store=True)
'Product Code', related='product_id.default_code', store=True, readonly=True, compute_sudo=True)
product_uom_id = fields.Many2one(
'product.uom', 'Product Unit of Measure',
required=True,