refactor: parse full name
This commit is contained in:
		
							parent
							
								
									0142a9308b
								
							
						
					
					
						commit
						f61b476be1
					
				| @ -305,20 +305,19 @@ class Customer(TransactionBase): | |||||||
| 
 | 
 | ||||||
| def create_contact(contact, party_type, party, email): | def create_contact(contact, party_type, party, email): | ||||||
| 	"""Create contact based on given contact name""" | 	"""Create contact based on given contact name""" | ||||||
| 	names = contact.split(" ") | 	first, middle, last = parse_full_name(contact) | ||||||
| 
 | 	doc = frappe.get_doc( | ||||||
| 	contact = frappe.get_doc( |  | ||||||
| 		{ | 		{ | ||||||
| 			"doctype": "Contact", | 			"doctype": "Contact", | ||||||
| 			"first_name": names[0], | 			"first_name": first, | ||||||
| 			"middle_name": len(names) > 2 and " ".join(names[1:-1]) or "", | 			"middle_name": middle, | ||||||
| 			"last_name": len(names) > 1 and names[-1] or "", | 			"last_name": last, | ||||||
| 			"is_primary_contact": 1, | 			"is_primary_contact": 1, | ||||||
| 		} | 		} | ||||||
| 	) | 	) | ||||||
| 	contact.append("email_ids", dict(email_id=email, is_primary=1)) | 	doc.append("email_ids", dict(email_id=email, is_primary=1)) | ||||||
| 	contact.append("links", dict(link_doctype=party_type, link_name=party)) | 	doc.append("links", dict(link_doctype=party_type, link_name=party)) | ||||||
| 	contact.insert() | 	return doc.insert() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @frappe.whitelist() | @frappe.whitelist() | ||||||
| @ -644,12 +643,12 @@ def make_contact(args, is_primary_contact=1): | |||||||
| 		"links": [{"link_doctype": args.get("doctype"), "link_name": args.get("name")}], | 		"links": [{"link_doctype": args.get("doctype"), "link_name": args.get("name")}], | ||||||
| 	} | 	} | ||||||
| 	if args.customer_type == "Individual": | 	if args.customer_type == "Individual": | ||||||
| 		names = args.get("customer_name").split(" ") | 		first, middle, last = parse_full_name(args.get("customer_name")) | ||||||
| 		values.update( | 		values.update( | ||||||
| 			{ | 			{ | ||||||
| 				"first_name": names[0], | 				"first_name": first, | ||||||
| 				"middle_name": len(names) > 2 and " ".join(names[1:-1]) or "", | 				"middle_name": middle, | ||||||
| 				"last_name": len(names) > 1 and names[-1] or "", | 				"last_name": last, | ||||||
| 			} | 			} | ||||||
| 		) | 		) | ||||||
| 	else: | 	else: | ||||||
| @ -726,3 +725,13 @@ def get_customer_primary_contact(doctype, txt, searchfield, start, page_len, fil | |||||||
| 		.where((dlink.link_name == customer) & (con.name.like(f"%{txt}%"))) | 		.where((dlink.link_name == customer) & (con.name.like(f"%{txt}%"))) | ||||||
| 		.run() | 		.run() | ||||||
| 	) | 	) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def parse_full_name(full_name: str) -> tuple[str, str | None, str | None]: | ||||||
|  | 	"""Parse full name into first name, middle name and last name""" | ||||||
|  | 	names = full_name.split() | ||||||
|  | 	first_name = names[0] | ||||||
|  | 	middle_name = " ".join(names[1:-1]) if len(names) > 2 else None | ||||||
|  | 	last_name = names[-1] if len(names) > 1 else None | ||||||
|  | 
 | ||||||
|  | 	return first_name, middle_name, last_name | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user