[mapper]
diff --git a/selling/doctype/lead/lead.js b/selling/doctype/lead/lead.js
index b3c200d..40cf454 100644
--- a/selling/doctype/lead/lead.js
+++ b/selling/doctype/lead/lead.js
@@ -55,8 +55,8 @@
this.frm.__is_customer = this.frm.__is_customer || this.frm.doc.__is_customer;
if(!this.frm.doc.__islocal && !this.frm.__is_customer) {
- this.frm.add_custom_button("Create Customer", this.frm.cscript['Create Customer']);
- this.frm.add_custom_button("Create Opportunity", this.frm.cscript['Create Opportunity']);
+ this.frm.add_custom_button("Create Customer", this.create_customer);
+ this.frm.add_custom_button("Create Opportunity", this.create_opportunity);
this.frm.add_custom_button("Send SMS", this.frm.cscript.send_sms);
}
@@ -93,21 +93,21 @@
// note: render_address_row is defined in contact_control.js
}
this.frm.address_list.run();
+ },
+
+ create_customer: function() {
+ wn.model.open_mapped_doc({
+ method: "selling.doctype.lead.lead.make_customer",
+ source_name: cur_frm.doc.name
+ })
+ },
+
+ create_opportunity: function() {
+ wn.model.open_mapped_doc({
+ method: "selling.doctype.lead.lead.make_opportunity",
+ source_name: cur_frm.doc.name
+ })
}
});
-$.extend(cur_frm.cscript, new erpnext.LeadController({frm: cur_frm}));
-
-cur_frm.cscript['Create Customer'] = function(){
- wn.model.open_mapped_doc({
- method: "selling.doctype.lead.lead.make_customer",
- source_name: cur_frm.doc.name
- })
-}
-
-cur_frm.cscript['Create Opportunity'] = function(){
- wn.model.open_mapped_doc({
- method: "selling.doctype.lead.lead.make_opportunity",
- source_name: cur_frm.doc.name
- })
-}
\ No newline at end of file
+$.extend(cur_frm.cscript, new erpnext.LeadController({frm: cur_frm}));
\ No newline at end of file
diff --git a/selling/doctype/opportunity/opportunity.js b/selling/doctype/opportunity/opportunity.js
index c3843cf..bc10c9b 100644
--- a/selling/doctype/opportunity/opportunity.js
+++ b/selling/doctype/opportunity/opportunity.js
@@ -35,6 +35,13 @@
'address_display', 'contact_display', 'contact_mobile', 'contact_email',
'territory', 'customer_group']);
}
+ },
+
+ create_quotation: function() {
+ wn.model.open_mapped_doc({
+ method: "selling.doctype.opportunity.opportunity.make_quotation",
+ source_name: cur_frm.doc.name
+ })
}
});
@@ -54,7 +61,7 @@
cur_frm.clear_custom_buttons();
if(doc.docstatus === 1 && doc.status!=="Opportunity Lost") {
- cur_frm.add_custom_button('Create Quotation', cur_frm.cscript['Create Quotation']);
+ cur_frm.add_custom_button('Create Quotation', cur_frm.cscript.create_quotation);
cur_frm.add_custom_button('Opportunity Lost', cur_frm.cscript['Declare Opportunity Lost']);
cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
}
@@ -168,24 +175,15 @@
cur_frm.cscript.lead = function(doc, cdt, cdn) {
cur_frm.toggle_display("contact_info", doc.customer || doc.lead);
- if(doc.lead) {
- cur_frm.call({
- doc: cur_frm.doc,
- method: "set_lead_defaults",
- callback: function(r) {
- if(!r.exc) {
- cur_frm.refresh_fields();
- }
- }
- });
- unhide_field(['customer_name', 'address_display','contact_mobile', 'contact_email',
- 'territory']);
- }
+ wn.model.map_current_doc({
+ method: "selling.doctype.lead.lead.make_opportunity",
+ source_name: cur_frm.doc.lead
+ })
+
+ unhide_field(['customer_name', 'address_display','contact_mobile',
+ 'contact_email', 'territory']);
}
-
-//item getquery
-//=======================================
cur_frm.fields_dict['enquiry_details'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
if (doc.enquiry_type == 'Maintenance')
return erpnext.queries.item({
@@ -197,25 +195,6 @@
});
}
-// Create New Quotation
-cur_frm.cscript['Create Quotation'] = function(){
- n = wn.model.make_new_doc_and_get_name("Quotation");
- $c('dt_map', args={
- 'docs':wn.model.compress([locals["Quotation"][n]]),
- 'from_doctype':'Opportunity',
- 'to_doctype':'Quotation',
- 'from_docname':cur_frm.docname,
- 'from_to_list':"[['Opportunity', 'Quotation'],['Opportunity Item','Quotation Item']]"
- }
- , function(r,rt) {
- loaddoc("Quotation", n);
- }
- );
-}
-
-
-// declare enquiry lost
-//-------------------------
cur_frm.cscript['Declare Opportunity Lost'] = function(){
var dialog = new wn.ui.Dialog({
title: "Set as Lost",
diff --git a/selling/doctype/opportunity/opportunity.py b/selling/doctype/opportunity/opportunity.py
index c569157..cced9ab 100644
--- a/selling/doctype/opportunity/opportunity.py
+++ b/selling/doctype/opportunity/opportunity.py
@@ -66,7 +66,6 @@
contact_det = sql("select contact_name, contact_no, email_id from `tabContact` where customer = '%s' and is_customer = 1 and is_primary_contact = 'Yes' and docstatus != 2" %(name), as_dict = 1)
-
ret['contact_person'] = contact_det and contact_det[0]['contact_name'] or ''
ret['contact_no'] = contact_det and contact_det[0]['contact_no'] or ''
ret['email_id'] = contact_det and contact_det[0]['email_id'] or ''
@@ -175,4 +174,32 @@
return 'true'
def on_trash(self):
- self.delete_events()
\ No newline at end of file
+ self.delete_events()
+
+@webnotes.whitelist()
+def make_quotation(source_name, target_doclist=None):
+ from webnotes.model.mapper import get_mapped_doclist
+
+ doclist = get_mapped_doclist("Opportunity", source_name, {
+ "Opportunity": {
+ "doctype": "Quotation",
+ "field_map": {
+ "enquiry_from": "quotation_to",
+ "enquiry_type": "order_type",
+ "name": "enq_no",
+ },
+ "validation": {
+ "docstatus": ["=", 1]
+ }
+ },
+ "Opportunity Item": {
+ "doctype": "Quotation Item",
+ "field_map": {
+ "parent": "prevdoc_docname",
+ "parenttype": "prevdoc_doctype",
+ "uom": "stock_uom"
+ }
+ }
+ }, target_doclist)
+
+ return [d.fields for d in doclist]
\ No newline at end of file