diff --git a/addons/delivery/models/stock_picking.py b/addons/delivery/models/stock_picking.py index 9b2d4a67239de61abafcf015b69433acef5d03e4..492f5eafd30b586296ea25584ce26a2cfe0dac45 100644 --- a/addons/delivery/models/stock_picking.py +++ b/addons/delivery/models/stock_picking.py @@ -77,13 +77,17 @@ class StockPicking(models.Model): @api.depends('move_line_ids', 'move_line_ids.result_package_id') def _compute_packages(self): - for package in self: - packs = set() - if self.env['stock.move.line'].search_count([('picking_id', '=', package.id), ('result_package_id', '!=', False)]): - for move_line in package.move_line_ids: - if move_line.result_package_id: - packs.add(move_line.result_package_id.id) - package.package_ids = list(packs) + packages = { + res["picking_id"][0]: set(res["result_package_id"]) + for res in self.env["stock.move.line"].read_group( + [("picking_id", "in", self.ids), ("result_package_id", "!=", False)], + ["result_package_id:array_agg"], + ["picking_id"], + lazy=False, orderby="picking_id asc", + ) + } + for picking in self: + picking.package_ids = list(packages.get(picking.id, [])) @api.depends('move_line_ids', 'move_line_ids.result_package_id', 'move_line_ids.product_uom_id', 'move_line_ids.qty_done') def _compute_bulk_weight(self):