From 0d68acff8e4436e55676a5016e0496b7c3aa35aa Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Mon, 6 Feb 2017 13:03:09 +0100 Subject: [PATCH] [FIX] base: _compute_commercial_partner Before the fix: *Scenario 1: create company A as a res.partner on company A, add an individual contact B on individual B, add an individual contact C on individual C, go in accounting tab, click on 'parent company' link, you arrive on company A *Scenario 2: create individual B add a contact individual C on individual B create company A on individual B, select a parent company A on individual C, go in accounting tab, click on 'parent company' link, you arrive on B After the fix, on each scenario, you arrive on company A. opw:706757 --- odoo/addons/base/res/res_partner.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/odoo/addons/base/res/res_partner.py b/odoo/addons/base/res/res_partner.py index 597e8cff2ba..8b328214c21 100644 --- a/odoo/addons/base/res/res_partner.py +++ b/odoo/addons/base/res/res_partner.py @@ -429,6 +429,7 @@ class Partner(models.Model, FormatAddress): sync_children = self.child_ids.filtered(lambda c: not c.is_company) for child in sync_children: child._commercial_sync_to_children() + sync_children._compute_commercial_partner() return sync_children.write(sync_vals) @api.multi @@ -452,6 +453,10 @@ class Partner(models.Model, FormatAddress): commercial_fields = self._commercial_fields() if any(field in values for field in commercial_fields): self._commercial_sync_to_children() + for child in self.child_ids.filtered(lambda c: not c.is_company): + if child.commercial_partner_id != self.commercial_partner_id : + self._commercial_sync_to_children() + break # 2b. Address fields: sync if address changed address_fields = self._address_fields() if any(field in values for field in address_fields):