diff options
| -rw-r--r-- | addons/crm_livechat/models/mail_channel.py | 34 | ||||
| -rw-r--r-- | addons/website_crm_livechat/models/__init__.py | 1 | ||||
| -rw-r--r-- | addons/website_crm_livechat/models/mail_channel.py | 18 |
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 |
