95 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import frappe
 | |
| from frappe.model.utils.rename_field import rename_field
 | |
| from frappe.utils import add_months, cstr, today
 | |
| 
 | |
| 
 | |
| def execute():
 | |
| 	for doctype in ("CRM Note", "Lead", "Opportunity", "Prospect", "Prospect Lead"):
 | |
| 		frappe.reload_doc("crm", "doctype", doctype)
 | |
| 
 | |
| 	try:
 | |
| 		rename_field("Lead", "designation", "job_title")
 | |
| 		rename_field("Opportunity", "converted_by", "opportunity_owner")
 | |
| 
 | |
| 		frappe.db.sql(
 | |
| 			"""
 | |
| 			update `tabProspect Lead`
 | |
| 			set parentfield='leads'
 | |
| 			where parentfield='partner_lead'
 | |
| 		"""
 | |
| 		)
 | |
| 	except Exception as e:
 | |
| 		if e.args[0] != 1054:
 | |
| 			raise
 | |
| 
 | |
| 	add_calendar_event_for_leads()
 | |
| 	add_calendar_event_for_opportunities()
 | |
| 
 | |
| 
 | |
| def add_calendar_event_for_leads():
 | |
| 	# create events based on next contact date
 | |
| 	leads = frappe.db.sql(
 | |
| 		"""
 | |
| 		select name, contact_date, contact_by, ends_on, lead_name, lead_owner
 | |
| 		from tabLead
 | |
| 		where contact_date >= %s
 | |
| 	""",
 | |
| 		add_months(today(), -1),
 | |
| 		as_dict=1,
 | |
| 	)
 | |
| 
 | |
| 	for d in leads:
 | |
| 		event = frappe.get_doc(
 | |
| 			{
 | |
| 				"doctype": "Event",
 | |
| 				"owner": d.lead_owner,
 | |
| 				"subject": ("Contact " + cstr(d.lead_name)),
 | |
| 				"description": (
 | |
| 					("Contact " + cstr(d.lead_name)) + (("<br>By: " + cstr(d.contact_by)) if d.contact_by else "")
 | |
| 				),
 | |
| 				"starts_on": d.contact_date,
 | |
| 				"ends_on": d.ends_on,
 | |
| 				"event_type": "Private",
 | |
| 			}
 | |
| 		)
 | |
| 
 | |
| 		event.append("event_participants", {"reference_doctype": "Lead", "reference_docname": d.name})
 | |
| 
 | |
| 		event.insert(ignore_permissions=True)
 | |
| 
 | |
| 
 | |
| def add_calendar_event_for_opportunities():
 | |
| 	# create events based on next contact date
 | |
| 	opportunities = frappe.db.sql(
 | |
| 		"""
 | |
| 		select name, contact_date, contact_by, to_discuss,
 | |
| 			party_name, opportunity_owner, contact_person
 | |
| 		from tabOpportunity
 | |
| 		where contact_date >= %s
 | |
| 	""",
 | |
| 		add_months(today(), -1),
 | |
| 		as_dict=1,
 | |
| 	)
 | |
| 
 | |
| 	for d in opportunities:
 | |
| 		event = frappe.get_doc(
 | |
| 			{
 | |
| 				"doctype": "Event",
 | |
| 				"owner": d.opportunity_owner,
 | |
| 				"subject": ("Contact " + cstr(d.contact_person or d.party_name)),
 | |
| 				"description": (
 | |
| 					("Contact " + cstr(d.contact_person or d.party_name))
 | |
| 					+ (("<br>By: " + cstr(d.contact_by)) if d.contact_by else "")
 | |
| 					+ (("<br>Agenda: " + cstr(d.to_discuss)) if d.to_discuss else "")
 | |
| 				),
 | |
| 				"starts_on": d.contact_date,
 | |
| 				"event_type": "Private",
 | |
| 			}
 | |
| 		)
 | |
| 
 | |
| 		event.append(
 | |
| 			"event_participants", {"reference_doctype": "Opportunity", "reference_docname": d.name}
 | |
| 		)
 | |
| 
 | |
| 		event.insert(ignore_permissions=True)
 |