summaryrefslogtreecommitdiff
path: root/addons/website_crm/models/website_visitor.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-09-20 17:33:22 +0200
committerChristophe Simonis <chs@odoo.com>2019-09-20 17:34:45 +0200
commit64e43808b79badb5869a8d73cc1cc3f3b3aa8e12 (patch)
tree9a22d5f6c03073a4d10faedea8df23a5211e8b8f /addons/website_crm/models/website_visitor.py
parent944891ced081cda3b8b3db5faf3b7ac23b6b4ce8 (diff)
parent58a83d12228fbbd4e9dde542e133d264204ee0f3 (diff)
[MERGE] forward port branch saas-12.5 up to 58a83d12228
Diffstat (limited to 'addons/website_crm/models/website_visitor.py')
-rw-r--r--addons/website_crm/models/website_visitor.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/addons/website_crm/models/website_visitor.py b/addons/website_crm/models/website_visitor.py
index 7bd3570a17a..82fa1367967 100644
--- a/addons/website_crm/models/website_visitor.py
+++ b/addons/website_crm/models/website_visitor.py
@@ -14,3 +14,47 @@ class WebsiteVisitor(models.Model):
def _compute_lead_count(self):
for visitor in self:
visitor.lead_count = len(visitor.lead_ids)
+
+ @api.depends('user_partner_id.email_normalized', 'user_partner_id.mobile', 'lead_ids.email_normalized', 'lead_ids.mobile')
+ def _compute_email_phone(self):
+ super(WebsiteVisitor, self)._compute_email_phone()
+ self.flush()
+ sql = """ SELECT v.id as visitor_id, l.id as lead_id,
+ CASE WHEN p.email_normalized is not null THEN p.email_normalized ELSE l.email_normalized END as email,
+ CASE WHEN p.mobile is not null THEN p.mobile WHEN l.mobile is not null THEN l.mobile ELSE l.phone END as mobile
+ FROM website_visitor v
+ JOIN crm_lead_website_visitor_rel lv on lv.website_visitor_id = v.id
+ JOIN crm_lead l ON lv.crm_lead_id = l.id
+ LEFT JOIN res_partner p on p.id = v.user_partner_id
+ WHERE v.id in %s
+ ORDER BY l.create_date ASC"""
+ self.env.cr.execute(sql, (tuple(self.ids),))
+ results = self.env.cr.dictfetchall()
+ mapped_data = {}
+ for result in results:
+ visitor_info = mapped_data.get(result['visitor_id'], {'email': '', 'mobile': ''})
+ visitor_info['email'] += result['email'] + ','
+ visitor_info['mobile'] = result['mobile']
+ mapped_data[result['visitor_id']] = visitor_info
+
+ for visitor in self:
+ email = mapped_data.get(visitor.id, {}).get('email')
+ visitor.email = email[:-1] if email else False
+ visitor.mobile = mapped_data.get(visitor.id, {}).get('mobile')
+
+ def _prepare_visitor_send_mail_values(self):
+ visitor_mail_values = super(WebsiteVisitor, self)._prepare_visitor_send_mail_values()
+ if self.lead_ids:
+ lead = self.lead_ids._sort_by_confidence_level(reverse=True)[0]
+ partner_id = self.user_partner_id.id
+ if not self.user_partner_id:
+ partner_id = lead.handle_partner_assignation()[lead.id]
+ if not lead.partner_id:
+ lead.partner_id = partner_id
+ self.user_partner_id = partner_id
+ return {
+ 'res_model': 'crm.lead',
+ 'res_id': lead.id,
+ 'partner_ids': [partner_id],
+ }
+ return visitor_mail_values