[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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user