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