fix(customer): contact creation for companies (#38055)
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index a4bb9d5..f298bec 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -309,13 +309,14 @@
def create_contact(contact, party_type, party, email):
"""Create contact based on given contact name"""
- contact = contact.split(" ")
+ names = contact.split(" ")
contact = frappe.get_doc(
{
"doctype": "Contact",
- "first_name": contact[0],
- "last_name": len(contact) > 1 and contact[1] or "",
+ "first_name": names[0],
+ "middle_name": len(names) > 2 and " ".join(names[1:-1]) or "",
+ "last_name": len(names) > 1 and names[-1] or "",
"is_primary_contact": 1,
}
)
@@ -640,14 +641,28 @@
def make_contact(args, is_primary_contact=1):
- contact = frappe.get_doc(
- {
- "doctype": "Contact",
- "first_name": args.get("customer_name"),
- "is_primary_contact": is_primary_contact,
- "links": [{"link_doctype": args.get("doctype"), "link_name": args.get("name")}],
- }
- )
+ values = {
+ "doctype": "Contact",
+ "is_primary_contact": is_primary_contact,
+ "links": [{"link_doctype": args.get("doctype"), "link_name": args.get("name")}],
+ }
+ if args.customer_type == "Individual":
+ names = args.get("customer_name").split(" ")
+ values.update(
+ {
+ "first_name": names[0],
+ "middle_name": len(names) > 2 and " ".join(names[1:-1]) or "",
+ "last_name": len(names) > 1 and names[-1] or "",
+ }
+ )
+ else:
+ values.update(
+ {
+ "company_name": args.get("customer_name"),
+ }
+ )
+ contact = frappe.get_doc(values)
+
if args.get("email_id"):
contact.add_email(args.get("email_id"), is_primary=True)
if args.get("mobile_no"):