63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| 
 | |
| 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,
 | |
| 		)
 | |
| 	)
 | |
| 
 | |
| 	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"
 |