Odoo Mindscape. Understand Odoo faster. Explore modules, fields, dependencies and version differences in one place instead of digging through the source code.

Module: Inventory

Entity: stock.picking

Compute Method: _compute_packages_count

Inputs Method Outputs
done_pickings = self.filtered(lambda picking: picking.state == 'done')
other_pickings = self - done_pickings
packages_by_pick = defaultdict(int)
packages = self.env['stock.package'].search([('picking_ids', 'in', other_pickings.ids)])
for pack in packages:
            for picking in pack.picking_ids:
                packages_by_pick[picking] += 1
histories_by_pick = self.env['stock.package.history']._read_group([
            ('picking_ids', 'in', done_pickings.ids)], ['picking_ids'], ['__count'])
histories_by_pick = dict(histories_by_pick)
for picking in done_pickings:
            picking.packages_count = histories_by_pick.get(picking, 0)
for picking in other_pickings:
            picking.packages_count = packages_by_pick.get(picking, 0)

Back to entity