summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold Moyaux <arm@odoo.com>2019-09-24 15:36:56 +0000
committerArnold Moyaux <arm@odoo.com>2019-09-25 13:17:05 +0000
commite7bdf82f59b1fb8cdd1ebe6bb5fadbed691d9a36 (patch)
treea0d859ad4fac05a29574ac4f27d780b5d67273ca
parent618d67b131f1d7379940f14243d1a2ffa19d1198 (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.py14
-rw-r--r--addons/stock/views/stock_location_views.xml1
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>