summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/stock_landed_costs/models/stock_landed_cost.py13
-rw-r--r--addons/stock_landed_costs/views/stock_landed_cost_views.xml3
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"/>