Index: stock.py =================================================================== --- ./modules/stock_lot/stock.py +++ ./modules/stock_lot/stock.py @@ -80,6 +80,19 @@ for move in moves: move.check_lot() + @classmethod + def assign_try(cls, moves, grouping=('product',)): + lot_moves = [] + product_moves = [] + for move in moves: + if move.lot: + lot_moves.append(move) + else: + product_moves.append(move) + return (super(Move, cls).assign_try(lot_moves, + grouping=('product', 'lot')) and super(Move, cls).assign_try( + product_moves, grouping=grouping)) + class ShipmentIn: __name__ = 'stock.shipment.in' @@ -121,6 +134,8 @@ outgoing_moves = outgoing_by_product[move.product.id] while outgoing_moves and quantity > 0: out_move = outgoing_moves.pop() + if out_move.state == 'cancel': + continue out_quantity = Uom.compute_qty(out_move.uom, out_move.quantity, out_move.product.default_uom, round=False)