|
|
children_by_dest_pack, all_pack_ids = self._get_all_children_package_dest_ids()
groups = self.env['stock.move.line']._read_group(
domain=[('state', 'not in', ['done', 'cancel']), ('result_package_id', 'in', all_pack_ids), ('picking_id', '!=', False)],
groupby=['result_package_id'], aggregates=['picking_id:array_agg'])
pickings_by_package = {package.id: picking_ids for package, picking_ids in groups}
for package in self:
picking_ids = {picking_id for child_id in children_by_dest_pack[package] for picking_id in pickings_by_package.get(child_id, [])}
picking_ids.update(pickings_by_package.get(package.id, []))
package.picking_ids = [Command.set(list(picking_ids))]
|
|