[FIX] crm: select a partner on lead keep old value

FIXUP of 9c9f477f04e8f4ee9b18092fe894890c2ab31b58
         [FIX] crm_lead: do not erase computed field based on partner

Don't erase the field on the lead if you emptied the field partner_id
but erase them if you select a partner_id that have empty value
for the corresponding field
otherwise you end up with mixed address field.

Make an exception for the phone and the email_from
Keep the value from the lead if the partner_id has no value
for those field

X-original-commit: ed3979f84e65ebfa9534f12196a8fa41cade8370
This commit is contained in:
Thibault Francois
2020-08-04 15:08:56 +00:00
committed by Thibault Delavallée
parent e6cb48b7e4
commit 1aaed1ce64
2 changed files with 23 additions and 1 deletions
+3 -1
View File
@@ -435,7 +435,9 @@ class Lead(models.Model):
partner_name = partner.parent_id.name
if not partner_name and partner.is_company:
partner_name = partner.name
values = {f: partner[f] or self[f] for f in PARTNER_FIELDS_TO_SYNC}
contact_name = False if partner.is_company else partner.name
values = {f: partner[f] if partner else self[f] for f in PARTNER_FIELDS_TO_SYNC}
values.update({
'partner_name': partner_name or self.partner_name,
'contact_name': False if partner.is_company else partner.name or self.contact_name,
+20
View File
@@ -49,6 +49,26 @@ class TestCRMLead(TestCrmCommon):
lead.partner_id = False
self.assertEqual(lead.country_id, belgium, "Country should still be set on the lead")
def test_crm_lead_creation_partner_no_info(self):
belgium = self.env.ref('base.be')
empty_partner = self.env['res.partner'].create({
'name': 'Empty partner',
'is_company': True
})
lead_data = {
'name': 'Test',
'country_id': belgium.id,
'email_from': 'test@odoo.com',
'phone': '04584579646',
}
lead = self.env['crm.lead'].create(lead_data)
lead.partner_id = empty_partner
self.assertEqual(bool(lead.country_id), False, "Country should be empty")
self.assertEqual(lead.contact_name, False, "Contact name should be empty")
self.assertEqual(lead.email_from, lead_data['email_from'], "Email From should keep its initial value")
self.assertEqual(lead.phone, lead_data['phone'], "Phone should keep its initial value")
self.assertEqual(lead.partner_name, empty_partner.name, "Partner name should be set as contact is a company")
@users('user_sales_manager')
def test_crm_lead_partner_sync(self):
lead, partner = self.lead_1.with_user(self.env.user), self.contact_2