From e8f8c9b4286f60733153220511fd0e2bf33370b3 Mon Sep 17 00:00:00 2001 From: Julien Van Roy Date: Wed, 24 Apr 2024 15:58:05 +0000 Subject: [PATCH] [FIX] account_edi: retrieve partner linked to the same company first Before fce296acd9f4187c8473ca5ae0b68fb96e9026ff, the retrieve partner function first looked for a partner with company_id = env.company.id. If a parter wasn't found, a global search without constraining `company_id` was made. Thus, a search in a database with 2 partners with the same VAT (one has a company_id, the other not) would return the partner linked to the right company. After fce296acd9f4187c8473ca5ae0b68fb96e9026ff, it is no longer the case. The search is done with `[('company_id', 'in', [self.env.company.id, False])`, so 2 partners are found, and none are returned. We reintroduce that loop in this commit to fix that case. closes odoo/odoo#163702 X-original-commit: ff71f130cf19732f803fe8c2fbf1fc08c41dbc35 Signed-off-by: Laurent Smet (las) Signed-off-by: Julien Van Roy (juvr) --- addons/account/models/partner.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/account/models/partner.py b/addons/account/models/partner.py index 8a7d758db37..d0cce28887a 100644 --- a/addons/account/models/partner.py +++ b/addons/account/models/partner.py @@ -881,9 +881,13 @@ class ResPartner(models.Model): return self.env['res.partner'].search(domain + extra_domain, limit=1) for search_method in (search_with_vat, search_with_domain, search_with_phone_mail, search_with_name): - partner = search_method(self.env['res.partner']._check_company_domain(company or self.env.company)) - if partner and len(partner) == 1: - return partner + for extra_domain in ( + [*self.env['res.partner']._check_company_domain(company or self.env.company), ('company_id', '!=', False)], + [('company_id', '=', False)], + ): + partner = search_method(extra_domain) + if partner and len(partner) == 1: + return partner return self.env['res.partner'] def _merge_method(self, destination, source):