diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index e2bc5929622..9a8a9cdb9b1 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -661,7 +661,7 @@ class MrpWorkorder(models.Model): vals['date_start'] = end_date if not workorder.date_planned_start or end_date < workorder.date_planned_start: vals['date_planned_start'] = end_date - workorder.write(vals) + workorder.with_context(bypass_duration_calculation=True).write(vals) return True def end_previous(self, doall=False): diff --git a/addons/mrp/tests/test_order.py b/addons/mrp/tests/test_order.py index afe15113bd9..6284f130b31 100644 --- a/addons/mrp/tests/test_order.py +++ b/addons/mrp/tests/test_order.py @@ -2674,18 +2674,24 @@ class TestMrpOrder(TestMrpCommon): # produce 20 / 10 / 5 on workorders, create backorder + duration_expected = wo_1.duration_expected wo_1.button_start() wo_1.qty_producing = 20 self.assertEqual(mo.state, 'progress') wo_1.button_finish() + self.assertEqual(duration_expected, wo_1.duration_expected) + duration_expected = wo_2.duration_expected wo_2.button_start() wo_2.qty_producing = 10 wo_2.button_finish() + self.assertEqual(duration_expected, wo_2.duration_expected) + duration_expected = wo_3.duration_expected wo_3.button_start() wo_3.qty_producing = 5 wo_3.button_finish() + self.assertEqual(duration_expected, wo_3.duration_expected) self.assertEqual(mo.state, 'to_close') mo.button_mark_done()