diff options
| author | Arnold Moyaux <arm@odoo.com> | 2019-09-24 15:36:56 +0000 |
|---|---|---|
| committer | Arnold Moyaux <arm@odoo.com> | 2019-09-25 13:17:05 +0000 |
| commit | e7bdf82f59b1fb8cdd1ebe6bb5fadbed691d9a36 (patch) | |
| tree | a0d859ad4fac05a29574ac4f27d780b5d67273ca | |
| parent | 618d67b131f1d7379940f14243d1a2ffa19d1198 (diff) | |
[FIX] stock: empty warehouse when company is not set.
When the user do not set a company on a route and check warehouse selectable
then it's impossible to select a warehouse. It happens due to the
check_company domain ['|', ('company_id', '=', company_id)('company_id','=',False)]
closes odoo/odoo#37404
Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
| -rw-r--r-- | addons/stock/models/stock_location.py | 14 | ||||
| -rw-r--r-- | addons/stock/views/stock_location_views.xml | 1 |
2 files changed, 14 insertions, 1 deletions
diff --git a/addons/stock/models/stock_location.py b/addons/stock/models/stock_location.py index 794658d55ba..6ce9ac1019b 100644 --- a/addons/stock/models/stock_location.py +++ b/addons/stock/models/stock_location.py @@ -187,9 +187,21 @@ class Route(models.Model): 'product.template', 'stock_route_product', 'route_id', 'product_id', 'Products', copy=False, check_company=True) categ_ids = fields.Many2many('product.category', 'stock_location_route_categ', 'route_id', 'categ_id', 'Product Categories', copy=False) + warehouse_domain_ids = fields.One2many('stock.warehouse', compute='_compute_warehouses') warehouse_ids = fields.Many2many( 'stock.warehouse', 'stock_route_warehouse', 'route_id', 'warehouse_id', - 'Warehouses', copy=False, check_company=True) + 'Warehouses', copy=False, domain="[('id', 'in', warehouse_domain_ids)]") + + @api.depends('company_id') + def _compute_warehouses(self): + for loc in self: + domain = [('company_id', '=', loc.company_id.id)] if loc.company_id else [] + loc.warehouse_domain_ids = self.env['stock.warehouse'].search(domain) + + @api.onchange('company_id') + def _onchange_company(self): + if self.company_id: + self.warehouse_ids = self.warehouse_ids.filtered(lambda w: w.company_id == self.company_id) @api.onchange('warehouse_selectable') def _onchange_warehouse_selectable(self): diff --git a/addons/stock/views/stock_location_views.xml b/addons/stock/views/stock_location_views.xml index 5f8053dbd6d..dc0b83af390 100644 --- a/addons/stock/views/stock_location_views.xml +++ b/addons/stock/views/stock_location_views.xml @@ -184,6 +184,7 @@ </group> <group> <field name="warehouse_selectable" string="Warehouses"/> + <field name="warehouse_domain_ids" invisible="1"/> <field name="warehouse_ids" widget="many2many_tags" nolabel="1" attrs="{'invisible': [('warehouse_selectable', '=', False)]}"/> </group> |
