diff --git a/addons/purchase_stock/tests/__init__.py b/addons/purchase_stock/tests/__init__.py index aa9e156fd88..31ce9c7181a 100644 --- a/addons/purchase_stock/tests/__init__.py +++ b/addons/purchase_stock/tests/__init__.py @@ -17,3 +17,4 @@ from . import test_replenish_wizard from . import test_reordering_rule from . import test_move_cancel_propagation from . import test_product_template +from . import test_routes diff --git a/addons/purchase_stock/tests/test_routes.py b/addons/purchase_stock/tests/test_routes.py new file mode 100644 index 00000000000..7510011b0bc --- /dev/null +++ b/addons/purchase_stock/tests/test_routes.py @@ -0,0 +1,53 @@ +from odoo.tests.common import TransactionCase, Form + + +class TestRoutes(TransactionCase): + + def test_allow_rule_creation_for_route_without_company(self): + self.env['res.config.settings'].write({ + 'group_stock_adv_location': True, + 'group_stock_multi_locations': True, + }) + + warehouse = self.env['stock.warehouse'].search([('company_id', '=', self.env.company.id)], limit=1) + + location_1 = self.env['stock.location'].create({ + 'name': 'loc1', + 'location_id': warehouse.id + }) + + location_2 = self.env['stock.location'].create({ + 'name': 'loc2', + 'location_id': warehouse.id + }) + + receipt_1 = self.env['stock.picking.type'].create({ + 'name': 'Receipts from loc1', + 'sequence_code': 'IN1', + 'code': 'incoming', + 'warehouse_id': warehouse.id, + 'default_location_dest_id': location_1.id, + }) + + receipt_2 = self.env['stock.picking.type'].create({ + 'name': 'Receipts from loc2', + 'sequence_code': 'IN2', + 'code': 'incoming', + 'warehouse_id': warehouse.id, + 'default_location_dest_id': location_2.id, + }) + + route = self.env['stock.location.route'].create({ + 'name': 'Buy', + 'company_id': False + }) + + with Form(route) as r: + with r.rule_ids.new() as line: + line.name = 'first rule' + line.action = 'buy' + line.picking_type_id = receipt_1 + with r.rule_ids.new() as line: + line.name = 'second rule' + line.action = 'buy' + line.picking_type_id = receipt_2 diff --git a/addons/stock/models/stock_rule.py b/addons/stock/models/stock_rule.py index 79d718d6e8f..789981b627f 100644 --- a/addons/stock/models/stock_rule.py +++ b/addons/stock/models/stock_rule.py @@ -34,6 +34,13 @@ class StockRule(models.Model): _order = "sequence, id" _check_company_auto = True + @api.model + def default_get(self, fields_list): + res = super().default_get(fields_list) + if 'company_id' in fields_list and not res['company_id']: + res['company_id'] = self.env.company.id + return res + name = fields.Char( 'Name', required=True, translate=True, help="This field will fill the packing origin and the name of its moves")