fix client creation
This commit is contained in:
parent
0c1bb52f1b
commit
d4545d753a
2 changed files with 39 additions and 11 deletions
|
|
@ -4,9 +4,21 @@ from custom_ui.db_utils import build_error_response, build_success_response
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_address_by_full_address(full_address):
|
def get_address_by_full_address(full_address):
|
||||||
"""Get address by full_address, including associated contacts."""
|
"""Get address by full_address, including associated contacts."""
|
||||||
|
print(f"DEBUG: get_address_by_full_address called with full_address: {full_address}")
|
||||||
try:
|
try:
|
||||||
address = frappe.get_doc("Address", {"full_address": full_address}).as_dict()
|
address = frappe.get_doc("Address", {"full_address": full_address}).as_dict()
|
||||||
address["customer"] = frappe.get_doc("Customer", address.get("custom_customer_to_bill")).as_dict()
|
customer_exists = frappe.db.exists("Customer", address.get("custom_customer_to_bill"))
|
||||||
|
doctype = "Customer" if customer_exists else "Lead"
|
||||||
|
name = ""
|
||||||
|
if doctype == "Customer":
|
||||||
|
name = address.get("custom_customer_to_bill")
|
||||||
|
else:
|
||||||
|
## filter through links for one with doctype Lead
|
||||||
|
lead_links = address.get("links", [])
|
||||||
|
print(f"DEBUG: lead_links: {lead_links}")
|
||||||
|
lead_name = [link.link_name for link in lead_links if link.link_doctype == "Lead"]
|
||||||
|
name = lead_name[0] if lead_name else ""
|
||||||
|
address["customer"] = frappe.get_doc(doctype, name).as_dict()
|
||||||
contacts = []
|
contacts = []
|
||||||
for contact_link in address.custom_linked_contacts:
|
for contact_link in address.custom_linked_contacts:
|
||||||
contact_doc = frappe.get_doc("Contact", contact_link.contact)
|
contact_doc = frappe.get_doc("Contact", contact_link.contact)
|
||||||
|
|
|
||||||
|
|
@ -91,17 +91,30 @@ def get_client_status_counts(weekly=False, week_start_date=None, week_end_date=N
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_client(client_name):
|
def get_client(client_name):
|
||||||
"""Get detailed information for a specific client including address, customer, and projects."""
|
"""Get detailed information for a specific client including address, customer, and projects."""
|
||||||
|
print("DEBUG: get_client called with client_name:", client_name)
|
||||||
try:
|
try:
|
||||||
clientData = {"addresses": [], "contacts": [], "jobs": [], "sales_invoices": [], "payment_entries": [], "sales_orders": [], "tasks": []}
|
clientData = {"addresses": [], "contacts": [], "jobs": [], "sales_invoices": [], "payment_entries": [], "sales_orders": [], "tasks": []}
|
||||||
customer = frappe.get_doc("Customer", client_name)
|
client_exists = frappe.db.exists("Customer", client_name)
|
||||||
|
if client_exists:
|
||||||
|
customer = frappe.get_doc("Customer", client_name)
|
||||||
|
else:
|
||||||
|
print("DEBUG: Client not found as Customer. Checking Lead.")
|
||||||
|
lead_name = frappe.db.get_all("Lead", pluck="name", filters={"lead_name": client_name})[0]
|
||||||
|
customer = frappe.get_doc("Lead", lead_name)
|
||||||
clientData = {**clientData, **customer.as_dict()}
|
clientData = {**clientData, **customer.as_dict()}
|
||||||
|
if customer.doctype == "Customer":
|
||||||
|
for contact_link in customer.custom_add_contacts:
|
||||||
|
contact_doc = frappe.get_doc("Contact", contact_link.contact)
|
||||||
|
clientData["contacts"].append(contact_doc.as_dict())
|
||||||
|
else:
|
||||||
|
contact_names = frappe.db.get_all("Contact", pluck="name", filters={"links": ["like", f'%{{"link_doctype": "Lead", "link_name": client_name}}%']})
|
||||||
|
for contact_name in contact_names:
|
||||||
|
contact_doc = frappe.get_doc("Contact", contact_name)
|
||||||
|
clientData["contacts"].append(contact_doc.as_dict())
|
||||||
|
|
||||||
for contact_link in customer.custom_add_contacts:
|
if customer.doctype == "Customer":
|
||||||
contact_doc = frappe.get_doc("Contact", contact_link.contact)
|
for address_link in customer.custom_select_address:
|
||||||
clientData["contacts"].append(contact_doc.as_dict())
|
address_doc = frappe.get_doc("Address", address_link.address_name)
|
||||||
|
|
||||||
for address_link in customer.custom_select_address:
|
|
||||||
address_doc = frappe.get_doc("Address", address_link.address_name)
|
|
||||||
# # addressData = {"jobs": [], "contacts": []}
|
# # addressData = {"jobs": [], "contacts": []}
|
||||||
# addressData = {**addressData, **address_doc.as_dict()}
|
# addressData = {**addressData, **address_doc.as_dict()}
|
||||||
# addressData["estimates"] = frappe.db.get_all("Quotation", fields=["*"], filters={"custom_installation_address": address_doc.address_title})
|
# addressData["estimates"] = frappe.db.get_all("Quotation", fields=["*"], filters={"custom_installation_address": address_doc.address_title})
|
||||||
|
|
@ -125,7 +138,12 @@ def get_client(client_name):
|
||||||
# jobData["sales_orders"] = frappe.db.get_all("Sales Order", fields=["*"], filters={"project": job.name})
|
# jobData["sales_orders"] = frappe.db.get_all("Sales Order", fields=["*"], filters={"project": job.name})
|
||||||
# jobData["tasks"] = frappe.db.get_all("Task", fields=["*"], filters={"project": job.name})
|
# jobData["tasks"] = frappe.db.get_all("Task", fields=["*"], filters={"project": job.name})
|
||||||
# addressData["jobs"].append(jobData)
|
# addressData["jobs"].append(jobData)
|
||||||
clientData["addresses"].append(address_doc.as_dict())
|
clientData["addresses"].append(address_doc.as_dict())
|
||||||
|
else:
|
||||||
|
address_names = frappe.db.get_all("Address", pluck="name", filters={"links": ["like", f'%{{"link_doctype": "Lead", "link_name": client_name}}%']})
|
||||||
|
for address_name in address_names:
|
||||||
|
address_doc = frappe.get_doc("Address", address_name)
|
||||||
|
clientData["addresses"].append(address_doc.as_dict())
|
||||||
return build_success_response(clientData)
|
return build_success_response(clientData)
|
||||||
except frappe.ValidationError as ve:
|
except frappe.ValidationError as ve:
|
||||||
return build_error_response(str(ve), 400)
|
return build_error_response(str(ve), 400)
|
||||||
|
|
@ -254,7 +272,6 @@ def upsert_client(data):
|
||||||
print("Existing address check:", existing_address)
|
print("Existing address check:", existing_address)
|
||||||
if existing_address:
|
if existing_address:
|
||||||
return build_error_response("Address already exists for this customer.", 400)
|
return build_error_response("Address already exists for this customer.", 400)
|
||||||
|
|
||||||
address_doc = frappe.get_doc({
|
address_doc = frappe.get_doc({
|
||||||
"doctype": "Address",
|
"doctype": "Address",
|
||||||
"address_title": data.get("address_title"),
|
"address_title": data.get("address_title"),
|
||||||
|
|
@ -263,7 +280,6 @@ def upsert_client(data):
|
||||||
"city": data.get("city"),
|
"city": data.get("city"),
|
||||||
"state": data.get("state"),
|
"state": data.get("state"),
|
||||||
"country": "United States",
|
"country": "United States",
|
||||||
# "custom_customer_to_bill": new_client_doc.name,
|
|
||||||
"pincode": data.get("pincode")
|
"pincode": data.get("pincode")
|
||||||
}).insert(ignore_permissions=True)
|
}).insert(ignore_permissions=True)
|
||||||
print("Address:", address_doc.as_dict())
|
print("Address:", address_doc.as_dict())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue