From 24aba6014c55206fb0bf18e2239ab3167a9d3cac Mon Sep 17 00:00:00 2001
From: Martin Trigaux <mat@odoo.com>
Date: Wed, 12 Oct 2016 13:48:39 +0200
Subject: [PATCH] [FIX] base: restrict state selection to the selected country

It was not an issue before as there where only the US states in the data.
Remove onchange as useless since domain restriction.

Fixes #13657
---
 odoo/addons/base/res/res_partner.py       | 5 -----
 odoo/addons/base/res/res_partner_view.xml | 8 ++++++--
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/odoo/addons/base/res/res_partner.py b/odoo/addons/base/res/res_partner.py
index 74751b86f7bd..81d0aa04d649 100644
--- a/odoo/addons/base/res/res_partner.py
+++ b/odoo/addons/base/res/res_partner.py
@@ -350,11 +350,6 @@ class Partner(models.Model, FormatAddress):
                 result['value'] = {key: convert(self.parent_id[key]) for key in address_fields}
         return result
 
-    @api.onchange('state_id')
-    def onchange_state(self):
-        if self.state_id:
-            self.country_id = self.state_id.country_id
-
     @api.onchange('email')
     def onchange_email(self):
         if not self.image and not self._context.get('yaml_onchange') and self.email:
diff --git a/odoo/addons/base/res/res_partner_view.xml b/odoo/addons/base/res/res_partner_view.xml
index 92d4c41db55b..03caeffae68d 100644
--- a/odoo/addons/base/res/res_partner_view.xml
+++ b/odoo/addons/base/res/res_partner_view.xml
@@ -110,7 +110,9 @@
                                 <field name="street" placeholder="Street..." class="o_address_street"/>
                                 <field name="street2" placeholder="Street 2..." class="o_address_street"/>
                                 <field name="city" placeholder="City" class="o_address_city"/>
-                                <field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'/>
+                                <field name="state_id" class="o_address_state" placeholder="State"
+                                       options='{"no_open": True}'
+                                       domain="[('country_id', '=', country_id')]"/>
                                 <field name="zip" placeholder="ZIP" class="o_address_zip"/>
                                 <field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/>
                             </div>
@@ -173,7 +175,9 @@
                                 <field name="city" placeholder="City" class="o_address_city"
                                     attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/>
                                 <field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'
-                                    attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}" context="{'country_id': country_id, 'zip': zip}"/>
+                                    attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"
+                                    context="{'country_id': country_id, 'zip': zip}"
+                                    domain="[('country_id', '=', country_id')]"/>
                                 <field name="zip" placeholder="ZIP" class="o_address_zip"
                                     attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/>
                                 <field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'
-- 
GitLab