diff --git a/odoo/addons/base/res/res_partner.py b/odoo/addons/base/res/res_partner.py
index 04da7a94042..597e8cff2ba 100644
--- a/odoo/addons/base/res/res_partner.py
+++ b/odoo/addons/base/res/res_partner.py
@@ -350,6 +350,13 @@ class Partner(models.Model, FormatAddress):
result['value'] = {key: convert(self.parent_id[key]) for key in address_fields}
return result
+ @api.onchange('country_id')
+ def _onchange_country_id(self):
+ if self.country_id:
+ return {'domain': {'state_id': [('country_id', '=', self.country_id.id)]}}
+ else:
+ return {'domain': {'state_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 03caeffae68..92d4c41db55 100644
--- a/odoo/addons/base/res/res_partner_view.xml
+++ b/odoo/addons/base/res/res_partner_view.xml
@@ -110,9 +110,7 @@
-
+
@@ -175,9 +173,7 @@
+ attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}" context="{'country_id': country_id, 'zip': zip}"/>