From 8b5d22aae75fa5bba616dea8ce31c3f9bb84f56d Mon Sep 17 00:00:00 2001 From: William Henrotin Date: Mon, 15 Oct 2018 15:20:52 +0200 Subject: [PATCH] [FIX] mrp: done workorder on multiple reserved move lines Producing a manufacturing order on components with more than one unit could leads to multiple move line reserved on this component. Marking the workorder as done, in that case, will trigger an error saying "Cannot set the done quantity from this stock move, work directly with the move lines". Instead of setting the quantity done directly, this commit uses the magical function _set_quantity_done() that manage the case of more than one move lines. OPW-1888780 --- addons/mrp/models/mrp_workorder.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index 8bbe08d457071..723b0d596bfc4 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -317,8 +317,10 @@ def record_production(self): if self.product_id.tracking != 'none': qty_to_add = float_round(self.qty_producing * move.unit_factor, precision_rounding=rounding) move._generate_consumed_move_line(qty_to_add, self.final_lot_id) - else: + elif len(move._get_move_lines()) < 2: move.quantity_done += float_round(self.qty_producing * move.unit_factor, precision_rounding=rounding) + else: + move._set_quantity_done(move.quantity_done + float_round(self.qty_producing * move.unit_factor, precision_rounding=rounding)) # Transfer quantities from temporary to final move lots or make them final for move_line in self.active_move_line_ids: