update
This commit is contained in:
parent
e2746b83bb
commit
1610905a43
16 changed files with 3303 additions and 2521 deletions
|
|
@ -9,6 +9,101 @@ from custom_ui.services import AddressService, ContactService, ClientService
|
|||
# CLIENT MANAGEMENT API METHODS
|
||||
# ===============================================================================
|
||||
|
||||
@frappe.whitelist()
|
||||
def add_addresses_contacts(client_name, company_name, addresses=[], contacts=[]):
|
||||
if isinstance(addresses, str):
|
||||
addresses = json.loads(addresses)
|
||||
if isinstance(contacts, str):
|
||||
contacts = json.loads(contacts)
|
||||
print(f"DEBUG: add_addresses_contacts called with client_name: {client_name}, addresses: {addresses}, contacts: {contacts}")
|
||||
try:
|
||||
client_doc = ClientService.get_client_or_throw(client_name)
|
||||
if contacts:
|
||||
contact_docs = [frappe.get_doc("Contact", contact.contact) for contact in client_doc.contacts]
|
||||
for contact in contacts:
|
||||
contact_doc = None
|
||||
if frappe.db.exists("Contact", {"email_id": contact.get("email")}):
|
||||
contact_doc = frappe.get_doc("Contact", {"email_id": contact.get("email")})
|
||||
else:
|
||||
contact_doc = ContactService.create({
|
||||
"first_name": contact.get("first_name"),
|
||||
"last_name": contact.get("last_name"),
|
||||
"email_id": contact.get("email"),
|
||||
"role": contact.get("role"),
|
||||
"phone": contact.get("phone"),
|
||||
"custom_email": contact.get("email"),
|
||||
"is_primary_contact": 0,
|
||||
"customer_type": client_doc.doctype,
|
||||
"customer_name": client_doc.name,
|
||||
"email_ids": [{
|
||||
"email": contact.get("email"),
|
||||
"is_primary": 1
|
||||
}],
|
||||
"phone_nos": [{
|
||||
"phone": contact.get("phone"),
|
||||
"is_primary_phone": 1,
|
||||
"is_primary_mobile_no": 1
|
||||
}]
|
||||
})
|
||||
contact_doc.insert()
|
||||
ClientService.append_link_v2(client_doc.name, "contacts", {"contact": contact_doc.name})
|
||||
ContactService.link_contact_to_customer(contact_doc, client_doc.doctype, client_doc.name)
|
||||
contact_docs.append(contact_doc)
|
||||
address_docs = [frappe.get_doc("Address", link.address) for link in client_doc.properties]
|
||||
for address in addresses:
|
||||
address_doc = None
|
||||
if frappe.db.exists("Address", {
|
||||
"address_line1": address.get("address_line1"),
|
||||
"address_line2": address.get("address_line2"),
|
||||
"city": address.get("city"),
|
||||
# "state": address.get("state"),
|
||||
"pincode": address.get("pincode")
|
||||
}):
|
||||
address_doc = frappe.get_doc("Address", {
|
||||
"address_line1": address.get("address_line1"),
|
||||
"address_line2": address.get("address_line2"),
|
||||
"city": address.get("city"),
|
||||
# "state": address.get("state"),
|
||||
"pincode": address.get("pincode")
|
||||
})
|
||||
else:
|
||||
address_doc = AddressService.create({
|
||||
"address_title": AddressService.build_address_title(customer_name=client_name, address_data=address),
|
||||
"address_line1": address.get("address_line1"),
|
||||
"address_line2": address.get("address_line2"),
|
||||
"city": address.get("city"),
|
||||
"state": address.get("state"),
|
||||
"pincode": address.get("pincode"),
|
||||
"country": "United States",
|
||||
"address_type": "Service",
|
||||
"custom_billing_address": 0,
|
||||
"is_primary_address": 0,
|
||||
"is_service_address": 1,
|
||||
"customer_type": client_doc.doctype,
|
||||
"customer_name": client_doc.name
|
||||
})
|
||||
address_doc.insert()
|
||||
if company_name not in [company.company for company in address_doc.companies]:
|
||||
address_doc.append("companies", {"company": company_name})
|
||||
address_doc.save(ignore_permissions=True)
|
||||
AddressService.link_address_to_customer(address_doc, client_doc.doctype, client_doc.name)
|
||||
for contact_to_link_idx in address.get("contacts", []):
|
||||
contact_doc = contact_docs[contact_to_link_idx]
|
||||
AddressService.link_address_to_contact(address_doc, contact_doc.name)
|
||||
ContactService.link_contact_to_address(contact_doc, address_doc.name)
|
||||
primary_contact = contact_docs[address.get("primary_contact", 0)]
|
||||
AddressService.set_primary_contact(address_doc.name, primary_contact.name)
|
||||
ClientService.append_link_v2(client_doc.name, "properties", {"address": address_doc.name})
|
||||
address_docs.append(address_doc)
|
||||
|
||||
return build_success_response({
|
||||
"contacts": [contact.as_dict() for contact in contact_docs],
|
||||
"addresses": [address.as_dict() for address in address_docs],
|
||||
"message": "Addresses and contacts added successfully."
|
||||
})
|
||||
except Exception as e:
|
||||
return build_error_response(str(e), 500)
|
||||
|
||||
@frappe.whitelist()
|
||||
def check_client_exists(client_name):
|
||||
"""Check if a client exists as either a Customer or a Lead.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue