39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
import frappe
|
|
|
|
@frappe.whitelist(allow_guest=True) # allow_guest=True if you want unauthenticated access
|
|
def lead_magnet(email,subject,content):
|
|
try:
|
|
# Check if a Lead with the given email exists
|
|
lead = frappe.db.get_value("Lead", {"email_id": email}, "name",)
|
|
|
|
if not lead:
|
|
# Create a new Lead if not found
|
|
lead_doc = frappe.get_doc({
|
|
"doctype": "Lead",
|
|
"first_name": "Unknown",
|
|
"email_id": email,
|
|
"status": "Open"
|
|
})
|
|
lead_doc.insert(ignore_permissions=True)
|
|
frappe.db.commit()
|
|
lead = lead_doc.name # Get the newly created lead name
|
|
|
|
# Create a Communication linked to the Lead
|
|
communication = frappe.get_doc({
|
|
"doctype": "Communication",
|
|
"subject": subject,
|
|
"content": content,
|
|
"sender": email,
|
|
"sent_or_received": "Received",
|
|
"reference_doctype": "Lead",
|
|
"reference_name": lead # Link to the existing or new lead
|
|
})
|
|
communication.insert(ignore_permissions=True)
|
|
frappe.db.commit()
|
|
|
|
return {"success": True, "message": "Lead and communication recorded successfully", "lead": lead}
|
|
|
|
except Exception as e:
|
|
frappe.log_error(f"Lead Creation Error: {str(e)}", "Lead API Error")
|
|
return {"success": False, "error": str(e)}
|