Changes to web templates
This commit is contained in:
@ -36,3 +36,113 @@ def lead_magnet(email,subject,content):
|
||||
except Exception as e:
|
||||
frappe.log_error(f"Lead Creation Error: {str(e)}", "Lead API Error")
|
||||
return {"success": False, "error": str(e)}
|
||||
|
||||
|
||||
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def contact_form():
|
||||
try:
|
||||
# Extract data from the form submission
|
||||
data = frappe.form_dict # Get request parameters
|
||||
first_name = data.get("first_name")
|
||||
last_name = data.get("last_name")
|
||||
business_name = data.get("business_name")
|
||||
email = data.get("email")
|
||||
phone = data.get("phone")
|
||||
subject = data.get("subject")
|
||||
content = data.get("content")
|
||||
department = data.get("department")
|
||||
|
||||
if not email or not subject or not content:
|
||||
return {"success": False, "error": "Missing required parameters"}
|
||||
|
||||
reference_doctype = "Contact"
|
||||
reference_name = None
|
||||
|
||||
if department and department.lower() == "sales":
|
||||
# Look for a Lead with the given email
|
||||
lead_name = frappe.db.get_value("Lead", {"email_id": email}, "name")
|
||||
if lead_name:
|
||||
# Update Lead status to 'Open'
|
||||
frappe.db.set_value("Lead", lead_name, "status", "Open")
|
||||
reference_doctype = "Lead"
|
||||
reference_name = lead_name
|
||||
else:
|
||||
# Create a new Lead if not found
|
||||
lead_doc = frappe.get_doc({
|
||||
"doctype": "Lead",
|
||||
"first_name": first_name or "Unknown",
|
||||
"last_name": last_name or "",
|
||||
"company_name": business_name or "",
|
||||
"email_id": email,
|
||||
"phone": phone or "",
|
||||
"status": "Open"
|
||||
})
|
||||
lead_doc.insert(ignore_permissions=True)
|
||||
reference_doctype = "Lead"
|
||||
reference_name = lead_doc.name
|
||||
|
||||
if not reference_name:
|
||||
# Check if a Contact with the given email exists by querying the Contact Email doctype
|
||||
contact_email = frappe.db.get_value("Contact Email", {"email_id": email}, "parent")
|
||||
|
||||
if not contact_email:
|
||||
# Create a new Contact if not found
|
||||
contact_doc = frappe.get_doc({
|
||||
"doctype": "Contact",
|
||||
"first_name": first_name or "Unknown",
|
||||
"status": "Open",
|
||||
"email_ids": [
|
||||
{
|
||||
"email_id": email,
|
||||
}
|
||||
]
|
||||
})
|
||||
contact_doc.insert(ignore_permissions=True)
|
||||
reference_name = contact_doc.name
|
||||
else:
|
||||
# If contact exists, we ensure the email is linked, but only if it isn't already
|
||||
contact_doc = frappe.get_doc("Contact", contact_email)
|
||||
existing_email = frappe.db.exists("Contact Email", {"parent": contact_doc.name, "email_id": email})
|
||||
|
||||
if not existing_email:
|
||||
contact_doc.append("email_ids", {
|
||||
"email_id": email,
|
||||
"is_primary": 1 # Optional: Make it the primary email if needed
|
||||
})
|
||||
contact_doc.save(ignore_permissions=True)
|
||||
|
||||
reference_name = contact_doc.name
|
||||
|
||||
if department and department.lower() == "support":
|
||||
# Create an Issue and link it to the Contact
|
||||
issue_doc = frappe.get_doc({
|
||||
"doctype": "Issue",
|
||||
"subject": subject,
|
||||
"description": content,
|
||||
"raised_by": email,
|
||||
"contact": reference_name
|
||||
})
|
||||
issue_doc.insert(ignore_permissions=True)
|
||||
|
||||
reference_doctype = "Issue"
|
||||
reference_name = issue_doc.name
|
||||
|
||||
# Create a Communication linked to the determined reference doctype
|
||||
communication = frappe.get_doc({
|
||||
"doctype": "Communication",
|
||||
"subject": subject,
|
||||
"content": content,
|
||||
"sender": email,
|
||||
"sent_or_received": "Received",
|
||||
"reference_doctype": reference_doctype,
|
||||
"reference_name": reference_name
|
||||
})
|
||||
communication.insert(ignore_permissions=True)
|
||||
|
||||
return {"success": True, "message": "Lead, Contact, or Issue and communication recorded successfully", "reference_doctype": reference_doctype, "reference_name": reference_name}
|
||||
|
||||
except Exception as e:
|
||||
frappe.log_error(f"Contact Form Error: {str(e)}", "Contact Form API Error")
|
||||
return {"success": False, "error": str(e)}
|
||||
|
||||
Reference in New Issue
Block a user