diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js index f744faa2909d363812e270620e061f191287f43f..94d38066613b2238cc71562aa6809a17bf628c2b 100644 --- a/erpnext/crm/doctype/lead/lead.js +++ b/erpnext/crm/doctype/lead/lead.js @@ -29,13 +29,7 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller if (!this.frm.is_new() && doc.__onload && !doc.__onload.is_customer) { this.frm.add_custom_button(__("Customer"), this.make_customer, __("Create")); - this.frm.add_custom_button( - __("Opportunity"), - function () { - me.make_opportunity(me.frm); - }, - __("Create") - ); + this.frm.add_custom_button(__("Opportunity"), this.make_opportunity, __("Create")); this.frm.add_custom_button(__("Quotation"), this.make_quotation, __("Create")); if (!doc.__onload.linked_prospects.length) { this.frm.add_custom_button(__("Prospect"), this.make_prospect, __("Create")); @@ -100,57 +94,12 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller }); } - make_prospect() { - const me = this; - frappe.model.with_doctype("Prospect", function () { - let prospect = frappe.model.get_new_doc("Prospect"); - prospect.company_name = me.frm.doc.company_name; - prospect.no_of_employees = me.frm.doc.no_of_employees; - prospect.industry = me.frm.doc.industry; - prospect.market_segment = me.frm.doc.market_segment; - prospect.territory = me.frm.doc.territory; - prospect.fax = me.frm.doc.fax; - prospect.website = me.frm.doc.website; - prospect.prospect_owner = me.frm.doc.lead_owner; - prospect.notes = me.frm.doc.notes; - - let leads_row = frappe.model.add_child(prospect, "leads"); - leads_row.lead = me.frm.doc.name; - - frappe.set_route("Form", "Prospect", prospect.name); - }); - } - - company_name() { - if (!this.frm.doc.lead_name) { - this.frm.set_value("lead_name", this.frm.doc.company_name); - } - } - - show_notes() { - const crm_notes = new erpnext.utils.CRMNotes({ - frm: this.frm, - notes_wrapper: $(this.frm.fields_dict.notes_html.wrapper), - }); - crm_notes.refresh(); - } - - show_activities() { - const crm_activities = new erpnext.utils.CRMActivities({ - frm: this.frm, - open_activities_wrapper: $(this.frm.fields_dict.open_activities_html.wrapper), - all_activities_wrapper: $(this.frm.fields_dict.all_activities_html.wrapper), - form_wrapper: $(this.frm.wrapper), - }); - crm_activities.refresh(); - } - - async make_opportunity(frm) { + async make_opportunity() { let existing_prospect = ( await frappe.db.get_value( "Prospect Lead", { - lead: frm.doc.name, + lead: this.frm.doc.name, }, "name", null, @@ -170,7 +119,7 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller label: __("Prospect Name"), fieldname: "prospect_name", fieldtype: "Data", - default: frm.doc.company_name, + default: this.frm.doc.company_name, depends_on: "create_prospect", }, ]; @@ -179,8 +128,8 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller await frappe.db.get_value( "Contact", { - first_name: frm.doc.first_name || frm.doc.lead_name, - last_name: frm.doc.last_name, + first_name: this.frm.doc.first_name || this.frm.doc.lead_name, + last_name: this.frm.doc.last_name, }, "name" ) @@ -203,7 +152,7 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller var data = d.get_values(); frappe.call({ method: "create_prospect_and_contact", - doc: frm.doc, + doc: this.frm.doc, args: { data: data, }, @@ -212,7 +161,7 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller if (!r.exc) { frappe.model.open_mapped_doc({ method: "erpnext.crm.doctype.lead.lead.make_opportunity", - frm: frm, + frm: this.frm, }); } d.hide(); @@ -225,10 +174,59 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller } else { frappe.model.open_mapped_doc({ method: "erpnext.crm.doctype.lead.lead.make_opportunity", - frm: frm, + frm: this.frm, }); } } + + make_prospect() { + const me = this; + frappe.model.with_doctype("Prospect", function () { + let prospect = frappe.model.get_new_doc("Prospect"); + prospect.company_name = me.frm.doc.company_name; + prospect.no_of_employees = me.frm.doc.no_of_employees; + prospect.industry = me.frm.doc.industry; + prospect.market_segment = me.frm.doc.market_segment; + prospect.territory = me.frm.doc.territory; + prospect.fax = me.frm.doc.fax; + prospect.website = me.frm.doc.website; + prospect.prospect_owner = me.frm.doc.lead_owner; + prospect.notes = me.frm.doc.notes; + + let leads_row = frappe.model.add_child(prospect, "leads"); + leads_row.lead = me.frm.doc.name; + + frappe.set_route("Form", "Prospect", prospect.name); + }); + } + + company_name() { + if (!this.frm.doc.lead_name) { + this.frm.set_value("lead_name", this.frm.doc.company_name); + } + } + + show_notes() { + if (this.frm.doc.docstatus == 1) return; + + const crm_notes = new erpnext.utils.CRMNotes({ + frm: this.frm, + notes_wrapper: $(this.frm.fields_dict.notes_html.wrapper), + }); + crm_notes.refresh(); + } + + show_activities() { + if (this.frm.doc.docstatus == 1) return; + + const crm_activities = new erpnext.utils.CRMActivities({ + frm: this.frm, + open_activities_wrapper: $(this.frm.fields_dict.open_activities_html.wrapper), + all_activities_wrapper: $(this.frm.fields_dict.all_activities_html.wrapper), + form_wrapper: $(this.frm.wrapper), + }); + crm_activities.refresh(); + } }; extend_cscript(cur_frm.cscript, new erpnext.LeadController({ frm: cur_frm }));