You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

60 lines
1.5 KiB

  1. # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
  2. # License: GNU General Public License v3. See license.txt
  3. import frappe
  4. @frappe.whitelist(allow_guest=True)
  5. def send_message(sender, message, subject="Website Query"):
  6. from frappe.www.contact import send_message as website_send_message
  7. website_send_message(sender, message, subject)
  8. lead = customer = None
  9. customer = frappe.db.sql(
  10. """select distinct dl.link_name from `tabDynamic Link` dl
  11. left join `tabContact` c on dl.parent=c.name where dl.link_doctype='Customer'
  12. and c.email_id = %s""",
  13. sender,
  14. )
  15. if not customer:
  16. lead = frappe.db.get_value("Lead", dict(email_id=sender))
  17. if not lead:
  18. new_lead = frappe.get_doc(
  19. dict(doctype="Lead", email_id=sender, lead_name=sender.split("@")[0].title())
  20. ).insert(ignore_permissions=True)
  21. opportunity = frappe.get_doc(
  22. dict(
  23. doctype="Opportunity",
  24. opportunity_from="Customer" if customer else "Lead",
  25. status="Open",
  26. title=subject,
  27. contact_email=sender,
  28. )
  29. )
  30. if customer:
  31. opportunity.party_name = customer[0][0]
  32. elif lead:
  33. opportunity.party_name = lead
  34. else:
  35. opportunity.party_name = new_lead.name
  36. opportunity.insert(ignore_permissions=True)
  37. comm = frappe.get_doc(
  38. {
  39. "doctype": "Communication",
  40. "subject": subject,
  41. "content": message,
  42. "sender": sender,
  43. "sent_or_received": "Received",
  44. "reference_doctype": "Opportunity",
  45. "reference_name": opportunity.name,
  46. }
  47. )
  48. comm.insert(ignore_permissions=True)