From 7f73bb3bedad2c69c267990dfd9af121f7e65ed0 Mon Sep 17 00:00:00 2001 From: Alexis Allemann <47788288+alexis-allemann@users.noreply.github.com> Date: Thu, 22 Aug 2024 08:54:58 +0200 Subject: [PATCH] T1706 - Support request partner assignation (#1950) * match the email with that of a partner or its linked partners * Formatting fix --- crm_request/models/request.py | 6 +++--- crm_request/models/res_partner_match.py | 5 ++++- interaction_resume/models/crm_request.py | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/crm_request/models/request.py b/crm_request/models/request.py index d808d615f..58bfec670 100644 --- a/crm_request/models/request.py +++ b/crm_request/models/request.py @@ -166,8 +166,8 @@ def message_new(self, msg, custom_values=None): if "partner_id" not in custom_values: match_obj = self.env["res.partner.match"] - partner = match_obj.match_values_to_partner( - {"email": email_normalize(defaults["email_from"])}, match_create=False + partner = match_obj._match_email( + {"email": email_normalize(defaults["email_from"])} ) if partner: defaults["partner_id"] = partner.id @@ -216,7 +216,7 @@ def message_update(self, msg_dict, update_vals=None): in_leave.write({"stage_id": stage_new, "user_id": False}) return result - @api.returns('mail.message', lambda value: value.id) + @api.returns("mail.message", lambda value: value.id) def message_post(self, **kwargs): """Change the stage to "Resolve" when the employee answer to the supporter but not if it's an automatic answer. diff --git a/crm_request/models/res_partner_match.py b/crm_request/models/res_partner_match.py index ec98b436e..f23a2f7a8 100644 --- a/crm_request/models/res_partner_match.py +++ b/crm_request/models/res_partner_match.py @@ -17,10 +17,13 @@ class ResPartnerMatch(models.AbstractModel): def _match_email(self, vals): # Redefine email rule to include aliases in search email = vals["email"].strip() - return self.env["res.partner"].search( + partner = self.env["res.partner"].search( [ + "|", "|", ("email", "=ilike", email), ("email_alias_ids.email", "=ilike", email), + ("other_contact_ids.email", "=ilike", email), ] ) + return partner diff --git a/interaction_resume/models/crm_request.py b/interaction_resume/models/crm_request.py index 0672d9e9e..d138842b2 100644 --- a/interaction_resume/models/crm_request.py +++ b/interaction_resume/models/crm_request.py @@ -1,4 +1,4 @@ -from odoo import models, api +from odoo import api, models from odoo.tools.mail import html2plaintext @@ -51,7 +51,7 @@ def _get_interaction_partner_domain(self, partner): ("email_from", "=", partner.email), ] - @api.returns('mail.message', lambda value: value.id) + @api.returns("mail.message", lambda value: value.id) def message_post(self, **kwargs): res = super().message_post(**kwargs) self.partner_id.with_delay().fetch_interactions()