diff options
| -rw-r--r-- | addons/stock_landed_costs/models/stock_landed_cost.py | 13 | ||||
| -rw-r--r-- | addons/stock_landed_costs/views/stock_landed_cost_views.xml | 3 |
2 files changed, 15 insertions, 1 deletions
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 @@ <group> <group> <field name="date"/> - <field name="picking_ids" widget="many2many_tags" options="{'no_create_edit': True}" domain="[('state', '=', 'done'), ('picking_type_code', '!=', 'internal')]"/> + <field name="allowed_picking_ids" invisible="1"/> + <field name="picking_ids" widget="many2many_tags" options="{'no_create_edit': True}" domain="[('id', 'in', allowed_picking_ids)]"/> </group> <group> <label for="account_journal_id" string="Journal"/> |
