diff --git a/addons/base_address_extended/models/res_partner.py b/addons/base_address_extended/models/res_partner.py index 5bb0f006eeb..2503e6f085a 100644 --- a/addons/base_address_extended/models/res_partner.py +++ b/addons/base_address_extended/models/res_partner.py @@ -16,6 +16,10 @@ class Partner(models.Model): city_id = fields.Many2one(comodel_name='res.city', string='City ID') country_enforce_cities = fields.Boolean(related='country_id.enforce_cities') + @api.model + def _address_fields(self): + return super()._address_fields() + ['city_id'] + def _inverse_street_data(self): """ update self.street based on street_name, street_number and street_number2 """ for partner in self: diff --git a/addons/base_address_extended/tests/test_street_fields.py b/addons/base_address_extended/tests/test_street_fields.py index 6558c047f71..a540d8dd7c3 100644 --- a/addons/base_address_extended/tests/test_street_fields.py +++ b/addons/base_address_extended/tests/test_street_fields.py @@ -36,3 +36,26 @@ class TestStreetFields(TransactionCase): partner.street_number = number partner.street_name = name self.assertEqual(partner.street, street.strip(), 'Wrongly formatted street: expected %s, received %s' % (street, partner.street)) + + def test_child_sync(self): + """ Test that city_id is propagated to (contact-type) children contacts. """ + usa = self.env.ref('base.us') + new_york_city = self.env['res.city'].create({ + 'name': 'New York', + 'country_id': usa.id, + }) + parent = self.env['res.partner'].create({ + 'name': 'Parent Company', + 'country_id': usa.id, + 'city_id': new_york_city.id, + }) + child = self.env['res.partner'].create({ + 'name': 'Child Contact', + 'type': 'contact', + 'parent_id': parent.id, + }) + self.assertRecordValues(child, [{ + 'name': 'Child Contact', + 'country_id': usa.id, + 'city_id': new_york_city.id, + }])