[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:
committed by
Thibault Delavallée
parent
ed4b9064a1
commit
cd6ff51bfa
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user