From 1fd158e83ee91912286b4cf1d72b76ce0b988654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A0n=20Todorovich?= Date: Thu, 8 Jul 2021 16:39:52 -0300 Subject: [PATCH] [IMP] Also empty zip_id when city_id or zip mismatch --- base_location/models/res_city_zip.py | 2 ++ base_location/models/res_partner.py | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/base_location/models/res_city_zip.py b/base_location/models/res_city_zip.py index a113160d3..887911198 100644 --- a/base_location/models/res_city_zip.py +++ b/base_location/models/res_city_zip.py @@ -22,6 +22,8 @@ class ResCityZip(models.Model): ondelete="cascade", index=True, ) + state_id = fields.Many2one(related="city_id.state_id") + country_id = fields.Many2one(related="city_id.country_id") display_name = fields.Char( compute="_compute_new_display_name", store=True, index=True ) diff --git a/base_location/models/res_partner.py b/base_location/models/res_partner.py index b441e4d6a..d939a6cf8 100644 --- a/base_location/models/res_partner.py +++ b/base_location/models/res_partner.py @@ -32,17 +32,24 @@ class ResPartner(models.Model): ) state_id = fields.Many2one(compute="_compute_state_id", readonly=False, store=True) - @api.depends("state_id", "country_id") + @api.depends("state_id", "country_id", "city_id", "zip") def _compute_zip_id(self): """Empty the zip auto-completion field if data mismatch when on UI.""" for record in self.filtered("zip_id"): - for field in ["state_id", "country_id"]: + fields_map = { + "zip": "name", + "city_id": "city_id", + "state_id": "state_id", + "country_id": "country_id", + } + for rec_field, zip_field in fields_map.items(): if ( - record[field] - and record[field] != record._origin[field] - and record[field] != record.zip_id.city_id[field] + record[rec_field] + and record[rec_field] != record._origin[rec_field] + and record[rec_field] != record.zip_id[zip_field] ): record.zip_id = False + break @api.depends("zip_id") def _compute_city_id(self):