From 6fcbcde8237641dc83ac84c9c33753b506b3fbb2 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Fri, 10 Jul 2020 12:56:15 +0000 Subject: [PATCH] [FIX] stock: put in pack and unreserve - Create a product P, tracked by lot - Add some stock with a lot - Create an outgoing picking - Set 10 units of P - Set 2 done, Put in Pack - Unreserve An error occurs: 'It is not possible to unreserve more products of P than you have in stock.' It happens because the `lot_id` is removed from the copied `stock.move.line`. Commit eac8c06e2233d93e0b1a520e makes sense for incoming pickings, but not for internal or outgoing transfers. opw-2288208 closes odoo/odoo#54355 X-original-commit: ed738fb56ffe84f3af08b84e429db916a5e560b6 Signed-off-by: Nicolas Martinelli (nim) --- addons/stock/models/stock_picking.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py index 87b1f62f4af..4e5d7474b74 100644 --- a/addons/stock/models/stock_picking.py +++ b/addons/stock/models/stock_picking.py @@ -1248,10 +1248,11 @@ class Picking(models.Model): new_move_line = ml.copy( default={'product_uom_qty': 0, 'qty_done': ml.qty_done}) vals = {'product_uom_qty': quantity_left_todo, 'qty_done': 0.0} - if ml.lot_id: - vals['lot_id'] = False - if ml.lot_name: - vals['lot_name'] = False + if pick.picking_type_id.code == 'incoming': + if ml.lot_id: + vals['lot_id'] = False + if ml.lot_name: + vals['lot_name'] = False ml.write(vals) new_move_line.write({'product_uom_qty': done_to_keep}) move_lines_to_pack |= new_move_line