diff --git a/addons/stock_landed_costs/models/stock_landed_cost.py b/addons/stock_landed_costs/models/stock_landed_cost.py index 21b23e27aca..91f8d42cdae 100644 --- a/addons/stock_landed_costs/models/stock_landed_cost.py +++ b/addons/stock_landed_costs/models/stock_landed_cost.py @@ -45,6 +45,7 @@ class LandedCost(models.Model): picking_ids = fields.Many2many( 'stock.picking', string='Transfers', copy=False, states={'done': [('readonly', True)]}) + allowed_picking_ids = fields.Many2many('stock.picking', compute='_compute_allowed_picking_ids') cost_lines = fields.One2many( 'stock.landed.cost.lines', 'cost_id', 'Cost Lines', copy=True, states={'done': [('readonly', True)]}) @@ -79,6 +80,18 @@ class LandedCost(models.Model): for cost in self: cost.amount_total = sum(line.price_unit for line in cost.cost_lines) + @api.depends('company_id') + def _compute_allowed_picking_ids(self): + self.env.cr.execute("""SELECT sm.picking_id, sm.company_id + FROM stock_move AS sm + INNER JOIN stock_valuation_layer AS svl ON svl.stock_move_id = sm.id + WHERE sm.picking_id IS NOT NULL""") + valued_picking_ids_per_company = defaultdict(list) + for res in self.env.cr.fetchall(): + valued_picking_ids_per_company[res[1]].append(res[0]) + for cost in self: + cost.allowed_picking_ids = valued_picking_ids_per_company[cost.company_id.id] + @api.model def create(self, vals): if vals.get('name', _('New')) == _('New'): diff --git a/addons/stock_landed_costs/views/stock_landed_cost_views.xml b/addons/stock_landed_costs/views/stock_landed_cost_views.xml index 2593e484264..e96a3b79d4c 100644 --- a/addons/stock_landed_costs/views/stock_landed_cost_views.xml +++ b/addons/stock_landed_costs/views/stock_landed_cost_views.xml @@ -29,7 +29,8 @@ - + +