diff options
| author | Simon Lejeune <sle@openerp.com> | 2020-01-09 09:52:02 +0000 |
|---|---|---|
| committer | Simon Lejeune <sle@openerp.com> | 2020-01-16 12:07:42 +0000 |
| commit | 50cbaef2dd5e31ac8a4f0513725048ae4cf9ff4d (patch) | |
| tree | fac8e7d781aa7ffc94b4b3b6420b66d51518c94b | |
| parent | 218e1cad6152999a0f41f073b5efa3c9428da48d (diff) | |
[REF] stock_landed_costs: domain on transfers
The previous domain was too naive: a receipt is not always valued
(inter-warehouse transfer) and even a receipt that should be valued
isn't always (receive goods you do not own, change your config from
manual to automated and then apply the lc on an old receipt, etc.)
Enforce a domain making sure the transfer is valued.
related opw-2165697
task-2169844
closes odoo/odoo#43410
X-original-commit: c6aa61b22a18c3f110baa7ed3c97e275b21e5329
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
| -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"/> |
