oca-technical/odoo-bringout-oca-crm-crm_lead_firstname/crm_lead_firstname/models/crm_lead.py
2025-08-29 15:43:03 +02:00

54 lines
2.1 KiB
Python

# Copyright 2016 Antiun Ingeniería S.L. - Jairo Llopis
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class CrmLead(models.Model):
_inherit = "crm.lead"
contact_name = fields.Char("First name")
contact_lastname = fields.Char("Last name")
def _prepare_customer_values(self, partner_name, is_company, parent_id=False):
"""Ensure first and last names of contact match those in lead."""
lead_partner_data = super(CrmLead, self)._prepare_customer_values(
partner_name, is_company, parent_id
)
if not is_company:
if self.contact_name:
lead_partner_data.update({"firstname": self.contact_name})
if "name" in lead_partner_data:
del lead_partner_data["name"]
if self.contact_lastname:
lead_partner_data.update({"lastname": self.contact_lastname})
if "name" in lead_partner_data:
del lead_partner_data["name"]
return lead_partner_data
def _prepare_values_from_partner(self, partner):
"""Recover first and last names from partner if available."""
result = super(CrmLead, self)._prepare_values_from_partner(partner)
if partner:
if not partner.is_company:
result.update(
{
"contact_name": partner.firstname,
"contact_lastname": partner.lastname,
}
)
return self._convert_to_write(result)
def _prepare_contact_name_from_partner(self, partner):
result = super()._prepare_contact_name_from_partner(partner)
contact_name = False if partner.is_company else partner.firstname
contact_lastname = False if partner.is_company else partner.lastname
result.update(
{
"contact_name": contact_name or self.contact_name,
"contact_lastname": contact_lastname or self.contact_lastname,
}
)
return result