From cd6ff51bfaed4dc88ddf33d879bd31ff2e6836f1 Mon Sep 17 00:00:00 2001 From: David Arnold Date: Tue, 18 Apr 2017 07:33:34 -0500 Subject: [PATCH] [IMP] lead: improve extensibility of partner create method Before this commit _lead_create_contact actually constructed values AND created the partner in one single step, making it difficult to override in localizations that affect the partner model. As containing method already existed, the partner creation was moved up to this method, and the method was renamed to match with the file's conventions. Now this method cleanly constructs the values. Closes #16493 . --- addons/crm/models/crm_lead.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index c50b2ed9b1f..8ca20f7a84b 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -675,7 +675,7 @@ class Lead(models.Model): return True @api.multi - def _lead_create_contact(self, name, is_company, parent_id=False): + def _create_lead_partner_data(self, name, is_company, parent_id=False): """ extract data from lead to create a partner :param name : furtur name of the partner :param is_company : True if the partner is a company @@ -683,7 +683,7 @@ class Lead(models.Model): :returns res.partner record """ email_split = tools.email_split(self.email_from) - values = { + return { 'name': name, 'user_id': self.user_id.id, 'comment': self.description, @@ -705,30 +705,30 @@ class Lead(models.Model): 'is_company': is_company, 'type': 'contact' } - return self.env['res.partner'].create(values) @api.multi def _create_lead_partner(self): """ Create a partner from lead data :returns res.partner record """ + Partner = self.env['res.partner'] contact_name = self.contact_name if not contact_name: - contact_name = self.env['res.partner']._parse_partner_name(self.email_from)[0] if self.email_from else False + contact_name = Partner._parse_partner_name(self.email_from)[0] if self.email_from else False if self.partner_name: - partner_company = self._lead_create_contact(self.partner_name, True) + partner_company = Partner.create(self._create_lead_partner_data(self.partner_name, True)) elif self.partner_id: partner_company = self.partner_id else: partner_company = None if contact_name: - return self._lead_create_contact(contact_name, False, partner_company.id if partner_company else False) + return Partner.create(self._create_lead_partner_data(contact_name, False, partner_company.id if partner_company else False)) if partner_company: return partner_company - return self._lead_create_contact(self.name, False) + return Partner.create(self._create_lead_partner_data(self.name, False)) @api.multi def handle_partner_assignation(self, action='create', partner_id=False):