diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index c170d2cc5fa..43a51a03831 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -868,13 +868,15 @@ class StockMove(models.Model): false_quants += [reserved_quant] elif float_compare(lot_quantities.get(reserved_quant.lot_id.id, 0), 0, precision_rounding=rounding) > 0: if float_compare(lot_quantities[reserved_quant.lot_id.id], reserved_quant.qty, precision_rounding=rounding) >= 0: - lot_quantities[reserved_quant.lot_id.id] -= reserved_quant.qty - quants_taken += [(reserved_quant, reserved_quant.qty)] - qty_on_link -= reserved_quant.qty + qty_taken = min(reserved_quant.qty, qty_on_link) + lot_quantities[reserved_quant.lot_id.id] -= qty_taken + quants_taken += [(reserved_quant, qty_taken)] + qty_on_link -= qty_taken else: - quants_taken += [(reserved_quant, lot_quantities[reserved_quant.lot_id.id])] - lot_quantities[reserved_quant.lot_id.id] = 0 - qty_on_link -= lot_quantities[reserved_quant.lot_id.id] + qty_taken = min(qty_on_link, lot_quantities[reserved_quant.lot_id.id]) + quants_taken += [(reserved_quant, qty_taken)] + lot_quantities[reserved_quant.lot_id.id] -= qty_taken + qty_on_link -= qty_taken lot_move_qty[move.id] = qty_on_link remaining_move_qty[move.id] -= prout_move_qty[move] diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py index c1f5f98ba09..3d381ac064c 100644 --- a/addons/stock/models/stock_picking.py +++ b/addons/stock/models/stock_picking.py @@ -737,7 +737,7 @@ class Picking(models.Model): flag = quant.package_id == ops.package_id else: flag = not quant.package_id.id - flag = flag and (ops.owner_id.id == quant.owner_id.id) + flag = flag and (ops.owner_id.id == quant.owner_id.id) and (ops.location_id.id == quant.location_id.id) if flag: if not lot_qty: max_qty_on_link = min(quant.qty, qty_to_assign)