summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/crm_livechat/models/mail_channel.py34
-rw-r--r--addons/website_crm_livechat/models/__init__.py1
-rw-r--r--addons/website_crm_livechat/models/mail_channel.py18
3 files changed, 38 insertions, 15 deletions
diff --git a/addons/crm_livechat/models/mail_channel.py b/addons/crm_livechat/models/mail_channel.py
index 9b3765942c8..346859b906e 100644
--- a/addons/crm_livechat/models/mail_channel.py
+++ b/addons/crm_livechat/models/mail_channel.py
@@ -21,20 +21,24 @@ class MailChannel(models.Model):
if key.strip() == '/lead':
msg = self._define_command_lead()['help']
else:
- description = ''.join(
- '%s: %s\n' % (message.author_id.name or self.anonymous_name, message.body)
- for message in self.channel_message_ids.sorted('id')
- )
- utm_source = self.env.ref('crm_livechat.utm_source_livechat', raise_if_not_found=False)
- lead = self.env['crm.lead'].create({
- 'name': html2plaintext(key[5:]),
- 'partner_id': channel_partners.partner_id.id,
- 'user_id': None,
- 'team_id': None,
- 'description': html2plaintext(description),
- 'referred': partner.name,
- 'source_id': utm_source and utm_source.id,
- })
- lead._onchange_partner_id()
+ lead = self._convert_visitor_to_lead(partner, channel_partners, key)
msg = _('Created a new lead: <a href="#" data-oe-id="%s" data-oe-model="crm.lead">%s</a>') % (lead.id, lead.name)
self._send_transient_message(partner, msg)
+
+ def _convert_visitor_to_lead(self, partner, channel_partners, key):
+ description = ''.join(
+ '%s: %s\n' % (message.author_id.name or self.anonymous_name, message.body)
+ for message in self.channel_message_ids.sorted('id')
+ )
+ utm_source = self.env.ref('crm_livechat.utm_source_livechat', raise_if_not_found=False)
+ lead = self.env['crm.lead'].create({
+ 'name': html2plaintext(key[5:]),
+ 'partner_id': channel_partners.partner_id.id,
+ 'user_id': None,
+ 'team_id': None,
+ 'description': html2plaintext(description),
+ 'referred': partner.name,
+ 'source_id': utm_source and utm_source.id,
+ })
+ lead._onchange_partner_id()
+ return lead
diff --git a/addons/website_crm_livechat/models/__init__.py b/addons/website_crm_livechat/models/__init__.py
index 00140f99c9f..e81172ec3dd 100644
--- a/addons/website_crm_livechat/models/__init__.py
+++ b/addons/website_crm_livechat/models/__init__.py
@@ -2,3 +2,4 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import crm_lead
+from . import mail_channel
diff --git a/addons/website_crm_livechat/models/mail_channel.py b/addons/website_crm_livechat/models/mail_channel.py
new file mode 100644
index 00000000000..8d0c2442cc6
--- /dev/null
+++ b/addons/website_crm_livechat/models/mail_channel.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import models
+
+
+class MailChannel(models.Model):
+ _inherit = 'mail.channel'
+
+ def _convert_visitor_to_lead(self, partner, channel_partners, key):
+ """ When website is installed, we can link the created lead from /lead command
+ to the current website_visitor. We do not use the lead name as it does not correspond
+ to the lead contact name."""
+ lead = super(MailChannel, self)._convert_visitor_to_lead(partner, channel_partners, key)
+ visitor_sudo = self.livechat_visitor_id.sudo()
+ if visitor_sudo:
+ visitor_sudo.write({'lead_ids': [(4, lead.id)]})
+ return lead