diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py index 7efc8fe3335..d1dfdaf4a3e 100644 --- a/addons/mrp/models/mrp_production.py +++ b/addons/mrp/models/mrp_production.py @@ -1571,9 +1571,9 @@ class MrpProduction(models.Model): production.name = self._get_name_backorder(production.name, production.backorder_sequence) (production.move_raw_ids | production.move_finished_ids).name = production.name (production.move_raw_ids | production.move_finished_ids).origin = production._get_origin() - production.product_qty = amounts[production][0] backorder_vals = production.copy_data(default=production._get_backorder_mo_vals())[0] backorder_qtys = amounts[production][1:] + production.product_qty = amounts[production][0] next_seq = max(production.procurement_group_id.mrp_production_ids.mapped("backorder_sequence"), default=1) @@ -1725,7 +1725,7 @@ class MrpProduction(models.Model): bo = production_to_backorders[production] # Adapt duration - for workorder in (production | bo).workorder_ids: + for workorder in bo.workorder_ids: workorder.duration_expected = workorder.duration_expected * workorder.production_id.product_qty / initial_qty # Adapt quantities produced diff --git a/addons/mrp/tests/test_order.py b/addons/mrp/tests/test_order.py index 56691bb2d43..5b85a0bfc1e 100644 --- a/addons/mrp/tests/test_order.py +++ b/addons/mrp/tests/test_order.py @@ -2655,6 +2655,7 @@ class TestMrpOrder(TestMrpCommon): wo_1, wo_2, wo_3 = mo.workorder_ids self.assertEqual(mo.state, 'confirmed') self.assertEqual(wo_1.state, 'ready') + self.assertEqual(wo_1.duration_expected, 20 * 60) # produce 20 / 10 / 5 on workorders, create backorder @@ -2687,6 +2688,7 @@ class TestMrpOrder(TestMrpCommon): wo_4, wo_5, wo_6 = mo_2.workorder_ids self.assertEqual(wo_4.state, 'cancel') + self.assertEqual(wo_5.duration_expected, 15 * 60) # produce 10 / 5, create backorder @@ -2716,6 +2718,7 @@ class TestMrpOrder(TestMrpCommon): self.assertEqual(wo_7.state, 'cancel') self.assertEqual(wo_8.state, 'cancel') + self.assertEqual(wo_9.duration_expected, 10 * 60) # produce 10 and finish work