[FIX] stock: correct reserved_qty inverse

Issue:
Since PR #80434, for versions 15.2 onward stock.move.line changed the
product_qty field to reserved_qty. When doing this change, the compute and
inverse function definitions were changed, but the inverse method on the field
was never corrected. This means that if something tries to write to reserved_qty
a traceback will occur:

AttributeError: 'stock.move.line' object has no attribute '_set_product_qty'

To recreate this error, make a write call on stock.move.line to reserved_qty
and you will get the traceback instead of the UserError.

Solution:

Change the field's definition to the correct function name (_set_reserved_qty)
leads to the proper UserError instead of a traceback.

opw-3204213

closes odoo/odoo#113812

X-original-commit: 5ac0568af2909864a2231309fa3e72397a581957
Signed-off-by: Tiffany Chang <tic@odoo.com>
This commit is contained in:
Andrew Gavgavian
2023-03-01 18:42:53 +01:00
parent f00c2d364d
commit 41d458d91d
2 changed files with 3 additions and 1 deletions
+1 -1
View File
@@ -34,7 +34,7 @@ class StockMoveLine(models.Model):
product_category_name = fields.Char(related="product_id.categ_id.complete_name", store=True, string="Product Category")
reserved_qty = fields.Float(
'Real Reserved Quantity', digits=0, copy=False,
compute='_compute_reserved_qty', inverse='_set_product_qty', store=True)
compute='_compute_reserved_qty', inverse='_set_reserved_qty', store=True)
reserved_uom_qty = fields.Float(
'Reserved', default=0.0, digits='Product Unit of Measure', required=True, copy=False)
qty_done = fields.Float('Done', default=0.0, digits='Product Unit of Measure', copy=False)
+2
View File
@@ -217,6 +217,8 @@ class StockMove(TransactionCase):
self.assertEqual(move_line.reserved_qty, 100.0)
self.assertEqual(move_line.qty_done, 0.0)
move_line.qty_done = 100.0
with self.assertRaises(UserError, msg="It should not be possible to write directly to reserved_qty"):
move_line.reserved_qty = 1.0
# validation
move1._action_done()