[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) <las@odoo.com>
Signed-off-by: Julien Van Roy (juvr) <juvr@odoo.com>
This commit is contained in:
Julien Van Roy
2024-04-29 08:07:32 +00:00
parent 35017adaa9
commit e8f8c9b428
+7 -3
View File
@@ -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):