diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js index 0067145ada8b64f33b721308f5dd081ffff7415b..9eaa60b28e3a85efb935ac8b12c3280443d2b1c9 100644 --- a/erpnext/crm/doctype/lead/lead.js +++ b/erpnext/crm/doctype/lead/lead.js @@ -32,12 +32,12 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller erpnext.toggle_naming_series(); 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"), this.make_opportunity, __("Create")); - this.frm.add_custom_button(__("Quotation"), this.make_quotation, __("Create")); + this.frm.add_custom_button(__("Customer"), this.make_customer.bind(this), __("Create")); + this.frm.add_custom_button(__("Opportunity"), this.make_opportunity.bind(this), __("Create")); + this.frm.add_custom_button(__("Quotation"), this.make_quotation.bind(this), __("Create")); if (!doc.__onload.linked_prospects.length) { - this.frm.add_custom_button(__("Prospect"), this.make_prospect, __("Create")); - this.frm.add_custom_button(__('Add to Prospect'), this.add_lead_to_prospect, __('Action')); + this.frm.add_custom_button(__("Prospect"), this.make_prospect.bind(this), __("Create")); + this.frm.add_custom_button(__("Add to Prospect"), this.add_lead_to_prospect, __("Action")); } } @@ -95,20 +95,22 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller } async make_opportunity() { + const frm = this.frm; let existing_prospect = ( await frappe.db.get_value( "Prospect Lead", { - lead: this.frm.doc.name, + lead: frm.doc.name, }, "name", null, "Prospect" ) - ).message.name; + ).message?.name; + let fields = []; if (!existing_prospect) { - var fields = [ + fields.push( { "label": __("Create Prospect"), "fieldname": "create_prospect", @@ -119,21 +121,25 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller label: __("Prospect Name"), fieldname: "prospect_name", fieldtype: "Data", - default: this.frm.doc.company_name, + default: frm.doc.company_name, + reqd: 1, depends_on: "create_prospect", - }, - ]; + } + ); } + + await frm.reload_doc(); + let existing_contact = ( await frappe.db.get_value( "Contact", { - first_name: this.frm.doc.first_name || this.frm.doc.lead_name, - last_name: this.frm.doc.last_name, + first_name: frm.doc.first_name || frm.doc.lead_name, + last_name: frm.doc.last_name, }, "name" ) - ).message.name; + ).message?.name; if (!existing_contact) { fields.push( @@ -146,15 +152,14 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller ); } - if (fields) { - var d = new frappe.ui.Dialog({ - title: __('Create Opportunity'), + if (fields.length) { + const d = new frappe.ui.Dialog({ + title: __("Create Opportunity"), fields: fields, - primary_action: function() { - var data = d.get_values(); + primary_action: function (data) { frappe.call({ method: "create_prospect_and_contact", - doc: this.frm.doc, + doc: frm.doc, args: { data: data, }, @@ -163,7 +168,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: this.frm, + frm: frm, }); } d.hide(); @@ -176,7 +181,7 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller } else { frappe.model.open_mapped_doc({ method: "erpnext.crm.doctype.lead.lead.make_opportunity", - frm: this.frm, + frm: frm, }); } }