From cc79a9b3b62dd5fd5a5c40fb399f0fcc96acb83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 31 Jan 2013 16:28:20 +0100 Subject: [PATCH 1/4] [FIX] crm: lead to opportunity conversion: when creating a customer, use the email_from to try to find a name to the partner before using the subject. bzr revid: tde@openerp.com-20130131152820-wyz2026n0hdr87dn --- addons/crm/crm_lead.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index ffd0506a45f..7575389093b 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -716,7 +716,7 @@ class crm_lead(base_stage, format_address, osv.osv): def _lead_create_contact(self, cr, uid, lead, name, is_company, parent_id=False, context=None): partner = self.pool.get('res.partner') - vals = { 'name': name, + vals = {'name': name, 'user_id': lead.user_id.id, 'comment': lead.description, 'section_id': lead.section_id.id or False, @@ -736,11 +736,11 @@ class crm_lead(base_stage, format_address, osv.osv): 'is_company': is_company, 'type': 'contact' } - partner = partner.create(cr, uid,vals, context) + partner = partner.create(cr, uid, vals, context=context) return partner def _create_lead_partner(self, cr, uid, lead, context=None): - partner_id = False + partner_id = False if lead.partner_name and lead.contact_name: partner_id = self._lead_create_contact(cr, uid, lead, lead.partner_name, True, context=context) partner_id = self._lead_create_contact(cr, uid, lead, lead.contact_name, False, partner_id, context=context) @@ -748,6 +748,9 @@ class crm_lead(base_stage, format_address, osv.osv): partner_id = self._lead_create_contact(cr, uid, lead, lead.partner_name, True, context=context) elif not lead.partner_name and lead.contact_name: partner_id = self._lead_create_contact(cr, uid, lead, lead.contact_name, False, context=context) + elif lead.email_from: + contact_name, contact_email = self.pool.get('res.partner')._parse_partner_name(lead.email_from, context=context) + partner_id = self._lead_create_contact(cr, uid, lead, contact_name, False, context=context) else: partner_id = self._lead_create_contact(cr, uid, lead, lead.name, False, context=context) return partner_id From 08ca917d5bd1e6ca87f2db2f3bf26fa48c6ef541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 31 Jan 2013 17:09:24 +0100 Subject: [PATCH 2/4] [FIX] Fixed the fix, because actually we could have a contact_email and not a contact_name according to the regex. Should be working fine now. bzr revid: tde@openerp.com-20130131160924-cp0xcj7nm7zbb07v --- addons/crm/crm_lead.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 7575389093b..6603a1ab096 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -750,6 +750,8 @@ class crm_lead(base_stage, format_address, osv.osv): partner_id = self._lead_create_contact(cr, uid, lead, lead.contact_name, False, context=context) elif lead.email_from: contact_name, contact_email = self.pool.get('res.partner')._parse_partner_name(lead.email_from, context=context) + if not contact_name and contact_email: + contact_name = contact_email partner_id = self._lead_create_contact(cr, uid, lead, contact_name, False, context=context) else: partner_id = self._lead_create_contact(cr, uid, lead, lead.name, False, context=context) From d26dcb7f0f179220c7b9c4184c4af41b2e73061f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 1 Feb 2013 13:04:24 +0100 Subject: [PATCH 3/4] [IMP] crm: lead -> opportunity: when creating a new customer, use strong info about customer name or throw a warning instead of guessing from email or subject. Purpose: avoid having bloated partner database. bzr revid: tde@openerp.com-20130201120424-y16ni0ztp7ciu8e0 --- addons/crm/crm_lead.py | 11 ++++++----- addons/crm/crm_lead_view.xml | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 6603a1ab096..d9124ad00fe 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -748,13 +748,14 @@ class crm_lead(base_stage, format_address, osv.osv): partner_id = self._lead_create_contact(cr, uid, lead, lead.partner_name, True, context=context) elif not lead.partner_name and lead.contact_name: partner_id = self._lead_create_contact(cr, uid, lead, lead.contact_name, False, context=context) - elif lead.email_from: - contact_name, contact_email = self.pool.get('res.partner')._parse_partner_name(lead.email_from, context=context) - if not contact_name and contact_email: - contact_name = contact_email + elif lead.email_from and self.pool.get('res.partner')._parse_partner_name(lead.email_from, context=context)[0]: + contact_name = self.pool.get('res.partner')._parse_partner_name(lead.email_from, context=context)[0] partner_id = self._lead_create_contact(cr, uid, lead, contact_name, False, context=context) else: - partner_id = self._lead_create_contact(cr, uid, lead, lead.name, False, context=context) + raise osv.except_osv( + _('Warning!'), + _('No customer name defined. Please fill one of the following fields: Company Name, Contact Name or Email ("Name ")') + ) return partner_id def _lead_set_partner(self, cr, uid, lead, partner_id, context=None): diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 3d7bd45a209..dd391b8fec0 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -168,7 +168,7 @@ - + From 23a53651db48cb486700516b3a5c3c38a88efafa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 1 Feb 2013 15:11:50 +0100 Subject: [PATCH 4/4] [FIX] crm: fixed tests about lead to opportunity conversion. bzr revid: tde@openerp.com-20130201141150-drwhe2n71e5hul30 --- .../crm/test/process/lead2opportunity_assign_salesmen.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/crm/test/process/lead2opportunity_assign_salesmen.yml b/addons/crm/test/process/lead2opportunity_assign_salesmen.yml index b538a3a0185..0edd3b8edce 100644 --- a/addons/crm/test/process/lead2opportunity_assign_salesmen.yml +++ b/addons/crm/test/process/lead2opportunity_assign_salesmen.yml @@ -4,31 +4,37 @@ !record {model: crm.lead, id: test_crm_lead_01}: type: 'lead' name: 'Test lead 1' + email_from: 'Raoul Grosbedon ' stage_id: stage_lead1 - !record {model: crm.lead, id: test_crm_lead_02}: type: 'lead' name: 'Test lead 2' + email_from: 'Raoul Grosbedon ' stage_id: stage_lead1 - !record {model: crm.lead, id: test_crm_lead_03}: type: 'lead' name: 'Test lead 3' + email_from: 'Raoul Grosbedon ' stage_id: stage_lead1 - !record {model: crm.lead, id: test_crm_lead_04}: type: 'lead' name: 'Test lead 4' + contact_name: 'Fabrice Lepoilu' stage_id: stage_lead1 - !record {model: crm.lead, id: test_crm_lead_05}: type: 'lead' name: 'Test lead 5' + contact_name: 'Fabrice Lepoilu' stage_id: stage_lead1 - !record {model: crm.lead, id: test_crm_lead_06}: type: 'lead' name: 'Test lead 6' + partner_name: 'Agrolait SuperSeed SA' stage_id: stage_lead1 - !record {model: res.users, id: test_res_user_01}: