mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-19 01:18:43 +00:00
* fix: opportunity creation from contact us page (#55841)
(cherry picked from commit c933e34914)
# Conflicts:
# erpnext/templates/utils.py
* chore: resolve conflicts
---------
Co-authored-by: Diptanil Saha <diptanil@frappe.io>
71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
|
# License: GNU General Public License v3. See license.txt
|
|
|
|
|
|
import frappe
|
|
from frappe.rate_limiter import rate_limit
|
|
from frappe.utils import escape_html
|
|
|
|
|
|
@frappe.whitelist(allow_guest=True, methods=["POST"])
|
|
@rate_limit(limit=10, seconds=3 * 60)
|
|
def send_message(sender, message, subject="Website Query"):
|
|
from frappe.www.contact import send_message as website_send_message
|
|
|
|
website_send_message(sender, message, subject)
|
|
|
|
message = escape_html(message)
|
|
|
|
oppotunity_creation = frappe.get_single_value(
|
|
"CRM Settings", "enable_opportunity_creation_from_contact_us"
|
|
)
|
|
|
|
if not oppotunity_creation:
|
|
# Meant to silently fail instead of throwing error.
|
|
return
|
|
|
|
lead = customer = None
|
|
customer = frappe.db.sql(
|
|
"""select distinct dl.link_name from `tabDynamic Link` dl
|
|
left join `tabContact` c on dl.parent=c.name where dl.link_doctype='Customer'
|
|
and c.email_id = %s""",
|
|
sender,
|
|
)
|
|
|
|
if not customer:
|
|
lead = frappe.db.get_value("Lead", dict(email_id=sender))
|
|
if not lead:
|
|
new_lead = frappe.get_doc(
|
|
doctype="Lead", email_id=sender, lead_name=sender.split("@")[0].title()
|
|
).insert(ignore_permissions=True)
|
|
|
|
opportunity = frappe.get_doc(
|
|
doctype="Opportunity",
|
|
opportunity_from="Customer" if customer else "Lead",
|
|
status="Open",
|
|
title=subject,
|
|
contact_email=sender,
|
|
)
|
|
|
|
if customer:
|
|
opportunity.party_name = customer[0][0]
|
|
elif lead:
|
|
opportunity.party_name = lead
|
|
else:
|
|
opportunity.party_name = new_lead.name
|
|
|
|
opportunity.insert(ignore_permissions=True)
|
|
|
|
comm = frappe.get_doc(
|
|
{
|
|
"doctype": "Communication",
|
|
"subject": subject,
|
|
"content": message,
|
|
"sender": sender,
|
|
"sent_or_received": "Received",
|
|
"reference_doctype": "Opportunity",
|
|
"reference_name": opportunity.name,
|
|
}
|
|
)
|
|
comm.insert(ignore_permissions=True)
|