From eaf45ab9caf3f5fe72add5643a9db4644e1bec31 Mon Sep 17 00:00:00 2001 From: Arnold Moyaux Date: Fri, 20 Jan 2023 13:07:08 +0000 Subject: [PATCH] [FIX] sale_stock: user default on warehouse Use case: - Create a user default value to set the warehouse as empty - Create a SO The SO warehouse is filled. It happens because there is an extra check to add the warehouse based on the user preference or first company's warehouse. However the user default could be use to prevent that behavior and force the user to choose a warehouse (15.0 behavior) This commit always respect the user default if it's set. Also remove a strange condition that could set warehouse of wrong company closes odoo/odoo#111033 X-original-commit: 3afb0bae0b48dc152908a2a39b0de7e2f966b54c Signed-off-by: Adrien Widart Signed-off-by: Arnold Moyaux (arm) --- addons/sale_stock/models/sale_order.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/addons/sale_stock/models/sale_order.py b/addons/sale_stock/models/sale_order.py index a4d246d66bb..deedeaa007b 100644 --- a/addons/sale_stock/models/sale_order.py +++ b/addons/sale_stock/models/sale_order.py @@ -162,15 +162,12 @@ class SaleOrder(models.Model): for order in self: default_warehouse_id = self.env['ir.default'].with_company( order.company_id.id).get_model_defaults('sale.order').get('warehouse_id') - if order.company_id and order.company_id != order._origin.company_id: - warehouse = default_warehouse_id - else: - warehouse = self.env['stock.warehouse'] - if order.state in ['draft', 'sent']: - order.warehouse_id = warehouse or order.user_id.with_company(order.company_id.id)._get_default_warehouse_id() - # In case we create a record in another state (eg: demo data, or business code) - if not order.warehouse_id: - order.warehouse_id = self.env.user._get_default_warehouse_id() + if order.state in ['draft', 'sent'] or not order.ids: + # Should expect empty + if default_warehouse_id is not None: + order.warehouse_id = default_warehouse_id + else: + order.warehouse_id = order.user_id.with_company(order.company_id.id)._get_default_warehouse_id() @api.onchange('partner_shipping_id') def _onchange_partner_shipping_id(self):