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.
58 lines
1.6 KiB
58 lines
1.6 KiB
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
|
# License: GNU General Public License v3. See license.txt
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
import frappe
|
|
|
|
|
|
@frappe.whitelist(allow_guest=True)
|
|
def send_message(subject="Website Query", message="", sender="", status="Open"):
|
|
from frappe.www.contact import send_message as website_send_message
|
|
lead = customer = None
|
|
|
|
website_send_message(subject, message, sender)
|
|
|
|
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(dict(
|
|
doctype='Lead',
|
|
email_id = sender,
|
|
lead_name = sender.split('@')[0].title()
|
|
)).insert(ignore_permissions=True)
|
|
|
|
opportunity = frappe.get_doc(dict(
|
|
doctype ='Opportunity',
|
|
opportunity_from = 'Customer' if customer else 'Lead',
|
|
status = 'Open',
|
|
title = subject,
|
|
contact_email = sender,
|
|
to_discuss = message
|
|
))
|
|
|
|
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)
|
|
|
|
return "okay"
|
|
|