From 213b74be16cecc50e6e99c00f47786a9cbf327a8 Mon Sep 17 00:00:00 2001 From: "Touati Djamel (otd)" <otd@odoo.com> Date: Wed, 23 Nov 2022 12:10:39 +0000 Subject: [PATCH] [FIX] stock_picking_batch: put in pack move lines from different picking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Steps to reproduce the bug: - Enable “package†option in the settings - Create a storable product “P1†- update the stock to 100 - Create a picking: - product : P1 - Qty: 1 - operation type: delivery - go to additional info > add a carrier - Mark as todo - update the qty done to 1 - Create a second picking with the same steps - Create a batch picking: - Add the picking 1 and 2 - Confirm - Go to “Detailed operation†tab - Click on “Put in pack†- add a “Delivery packaging†- Save - Click a second time on “Put in pack†- Select the same “Delivery packaging†- Save Problem: Traceback is triggered: “tuple index out of range†When the “Put in pack†button is clicked, the “action_put_in_pack†function is called, the move_line_ids which has no package or with a 0 quantity done are filtered, in this case the 2nd move_line with the product “P2†will be used, but the `_pre_put_in_pack_hook` function is not called with its picking: https://github.com/odoo/odoo/blob/14.0/addons/stock_picking_batch/models/stock_picking_batch.py#L229 But rather with the first picking, it will have no move_line because the first move_line already has a quantity done at 1 and a package. So we try to get a record in an empty array: https://github.com/odoo/odoo/blob/14.0/addons/stock/models/stock_picking.py#L1312 opw-3067921 closes odoo/odoo#106937 X-original-commit: 1b6208a2db00ed387bcd0833787fa05416a426ba Signed-off-by: William Henrotin (whe) <whe@odoo.com> Signed-off-by: Djamel Touati (otd) <otd@odoo.com> --- addons/stock_picking_batch/models/stock_picking_batch.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/stock_picking_batch/models/stock_picking_batch.py b/addons/stock_picking_batch/models/stock_picking_batch.py index ed13bbac1a21..3adb8e6e39b9 100644 --- a/addons/stock_picking_batch/models/stock_picking_batch.py +++ b/addons/stock_picking_batch/models/stock_picking_batch.py @@ -278,9 +278,9 @@ class StockPickingBatch(models.Model): precision_rounding=ml.product_uom_id.rounding) > 0 and float_compare(ml.qty_done, 0.0, precision_rounding=ml.product_uom_id.rounding) == 0) if move_line_ids: - res = self.picking_ids[0]._pre_put_in_pack_hook(move_line_ids) + res = move_line_ids.picking_id[0]._pre_put_in_pack_hook(move_line_ids) if not res: - res = self.picking_ids[0]._put_in_pack(move_line_ids, False) + res = move_line_ids.picking_id[0]._put_in_pack(move_line_ids, False) return res else: raise UserError(_("Please add 'Done' quantities to the batch picking to create a new pack.")) -- GitLab