[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 .
This commit is contained in:
David Arnold
2017-05-29 18:19:43 +02:00
committed by Thibault Delavallée
parent ed4b9064a1
commit cd6ff51bfa
+7 -7
View File
@@ -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):