From a74e1f1600c1c6e3a7ea18b9bf6a0e70db86311a Mon Sep 17 00:00:00 2001 From: David Arnold Date: Sat, 11 Nov 2023 15:50:21 +0100 Subject: [PATCH] fix(crm): ensure primary address and contact follows customer setting (#37710) Co-authored-by: Deepesh Garg --- erpnext/crm/doctype/lead/lead.py | 9 +++++++++ erpnext/selling/doctype/customer/customer.py | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py index e897ba41eb04..fdec88d70d34 100644 --- a/erpnext/crm/doctype/lead/lead.py +++ b/erpnext/crm/doctype/lead/lead.py @@ -7,6 +7,8 @@ delete_contact_and_address, load_address_and_contact, ) +from frappe.contacts.doctype.address.address import get_default_address +from frappe.contacts.doctype.contact.contact import get_default_contact from frappe.email.inbox import link_communication_to_document from frappe.model.mapper import get_mapped_doc from frappe.utils import comma_and, get_link_to_form, has_gravatar, validate_email_address @@ -251,6 +253,13 @@ def set_missing_values(source, target): target.customer_group = frappe.db.get_default("Customer Group") + address = get_default_address("Lead", source.name) + contact = get_default_contact("Lead", source.name) + if address: + target.customer_primary_address = address + if contact: + target.customer_primary_contact = contact + doclist = get_mapped_doc( "Lead", source_name, diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index 9e6095fac35d..a4bb9d53811f 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -186,6 +186,8 @@ def create_primary_contact(self): self.db_set("customer_primary_contact", contact.name) self.db_set("mobile_no", self.mobile_no) self.db_set("email_id", self.email_id) + elif self.customer_primary_contact: + frappe.set_value("Contact", self.customer_primary_contact, "is_primary_contact", 1) # ensure def create_primary_address(self): from frappe.contacts.doctype.address.address import get_address_display @@ -196,6 +198,8 @@ def create_primary_address(self): self.db_set("customer_primary_address", address.name) self.db_set("primary_address", address_display) + elif self.customer_primary_address: + frappe.set_value("Address", self.customer_primary_address, "is_primary_address", 1) # ensure def update_lead_status(self): """If Customer created from Lead, update lead status to "Converted" @@ -312,6 +316,7 @@ def create_contact(contact, party_type, party, email): "doctype": "Contact", "first_name": contact[0], "last_name": len(contact) > 1 and contact[1] or "", + "is_primary_contact": 1, } ) contact.append("email_ids", dict(email_id=email, is_primary=1))