index 7995ab4..4277d89 100644 --- a/trytond/trytond/modules/stock/move.py +++ b/trytond/trytond/modules/stock/move.py @@ -841,6 +841,8 @@ class Move(Workflow, ModelSQL, ModelView): child_locations = {} to_write = [] to_assign = [] + to_copy_moves = [] + to_copy_values = [] success = True for move in moves: if move.state != 'draft': @@ -900,14 +902,20 @@ class Move(Workflow, ModelSQL, ModelView): to_assign.append(move) first = False else: - with Transaction().set_context(_stock_move_split=True): - to_assign.extend(cls.copy([move], default=values)) + to_copy_moves.append(move) + to_copy_values.append(values) qty_default_uom = Uom.compute_qty(move.uom, qty, move.product.default_uom, round=False) from_key = get_key(move, from_location) pbl[from_key] = pbl.get(from_key, 0.0) - qty_default_uom + if to_copy_moves: + with Transaction().set_context(_stock_move_split=True): + copied = cls.copy(to_copy_moves) + for record, values in zip(copied, to_copy_values): + to_write.extend([[record], values]) + to_assign.extend(copied) if to_write: cls.write(*to_write) if to_assign: