diff --git a/addons/website_sale/models/res_country.py b/addons/website_sale/models/res_country.py index 06b0f8285e7..aab125e7823 100644 --- a/addons/website_sale/models/res_country.py +++ b/addons/website_sale/models/res_country.py @@ -34,7 +34,5 @@ class ResCountry(models.Model): states = res break states |= carrier.state_ids - if not states: - states = states.search([('country_id', '=', self.id)]) res = res & states return res diff --git a/addons/website_sale/tests/test_delivery_controller.py b/addons/website_sale/tests/test_delivery_controller.py index a346647af11..90f6484d61e 100644 --- a/addons/website_sale/tests/test_delivery_controller.py +++ b/addons/website_sale/tests/test_delivery_controller.py @@ -34,3 +34,25 @@ class TestWebsiteSaleDeliveryController(PaymentCommon): order = self.website.sale_get_order(force_create=True) order.transaction_ids = self._create_transaction(flow='redirect', state='draft') self.Controller.update_eshop_carrier(carrier_id=1) + + def test_address_states(self): + US = self.env.ref('base.us') + MX = self.env.ref('base.mx') + + # Set all carriers to mexico + self.env['delivery.carrier'].sudo().search([('website_published', '=', True)]).country_ids = [(6, 0, [MX.id])] + + # Create a new carrier to only one state in mexico + self.env['delivery.carrier'].create({ + 'name': "One_state", + 'product_id': self.env['product.product'].create({'name': "delivery product"}).id, + 'website_published': True, + 'country_ids': [(6, 0, [MX.id])], + 'state_ids': [(6, 0, [MX.state_ids.ids[0]])] + }) + + country_info = self.Controller.country_infos(country=MX, mode="shipping") + self.assertEqual(len(country_info['states']), len(MX.state_ids)) + + country_info = self.Controller.country_infos(country=US, mode="shipping") + self.assertEqual(len(country_info['states']), 0)