From 00295f2b8db82180731de33124220d11b9054efb Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 14 Sep 2016 15:36:40 +0530 Subject: [PATCH] make supplier quotation from opportunity --- .../supplier_quotation.json | 123 +++++++++++++++++- .../crm/doctype/opportunity/opportunity.js | 44 +++++-- .../crm/doctype/opportunity/opportunity.py | 19 +++ 3 files changed, 173 insertions(+), 13 deletions(-) diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json index 56ddd6bdc88..4184d79d0fd 100644 --- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json +++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json @@ -15,6 +15,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "supplier_section", "fieldtype": "Section Break", "hidden": 0, @@ -40,6 +41,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "{supplier_name}", "fieldname": "title", "fieldtype": "Data", @@ -66,6 +68,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "naming_series", "fieldtype": "Select", "hidden": 0, @@ -93,6 +96,7 @@ "allow_on_submit": 0, "bold": 1, "collapsible": 0, + "columns": 0, "description": "", "fieldname": "supplier", "fieldtype": "Link", @@ -121,6 +125,7 @@ "allow_on_submit": 0, "bold": 1, "collapsible": 0, + "columns": 0, "fieldname": "supplier_name", "fieldtype": "Data", "hidden": 0, @@ -145,6 +150,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break1", "fieldtype": "Column Break", "hidden": 0, @@ -171,6 +177,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "Today", "fieldname": "transaction_date", "fieldtype": "Date", @@ -198,6 +205,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "amended_from", "fieldtype": "Link", "hidden": 1, @@ -225,6 +233,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "", "fieldname": "company", "fieldtype": "Link", @@ -253,6 +262,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 1, + "columns": 0, "fieldname": "address_section", "fieldtype": "Section Break", "hidden": 0, @@ -278,6 +288,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "supplier_address", "fieldtype": "Link", "hidden": 0, @@ -303,6 +314,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "contact_person", "fieldtype": "Link", "hidden": 0, @@ -328,6 +340,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "address_display", "fieldtype": "Small Text", "hidden": 0, @@ -352,6 +365,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "contact_display", "fieldtype": "Small Text", "hidden": 0, @@ -376,6 +390,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "contact_mobile", "fieldtype": "Small Text", "hidden": 0, @@ -400,6 +415,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "contact_email", "fieldtype": "Data", "hidden": 0, @@ -425,6 +441,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 1, + "columns": 0, "fieldname": "currency_and_price_list", "fieldtype": "Section Break", "hidden": 0, @@ -450,6 +467,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "currency", "fieldtype": "Link", "hidden": 0, @@ -477,6 +495,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "", "fieldname": "conversion_rate", "fieldtype": "Float", @@ -505,6 +524,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "cb_price_list", "fieldtype": "Column Break", "hidden": 0, @@ -530,6 +550,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "buying_price_list", "fieldtype": "Link", "hidden": 0, @@ -555,6 +576,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "depends_on": "buying_price_list", "fieldname": "price_list_currency", "fieldtype": "Link", @@ -581,6 +603,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "depends_on": "buying_price_list", "fieldname": "plc_conversion_rate", "fieldtype": "Float", @@ -607,6 +630,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "ignore_pricing_rule", "fieldtype": "Check", "hidden": 0, @@ -631,6 +655,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "items_section", "fieldtype": "Section Break", "hidden": 0, @@ -657,6 +682,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "items", "fieldtype": "Table", "hidden": 0, @@ -684,6 +710,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "section_break_22", "fieldtype": "Section Break", "hidden": 0, @@ -707,6 +734,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "base_total", "fieldtype": "Currency", "hidden": 0, @@ -733,6 +761,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "base_net_total", "fieldtype": "Currency", "hidden": 0, @@ -760,6 +789,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_24", "fieldtype": "Column Break", "hidden": 0, @@ -783,6 +813,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "total", "fieldtype": "Currency", "hidden": 0, @@ -809,6 +840,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "net_total", "fieldtype": "Currency", "hidden": 0, @@ -836,6 +868,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "taxes_section", "fieldtype": "Section Break", "hidden": 0, @@ -862,6 +895,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "", "fieldname": "taxes_and_charges", "fieldtype": "Link", @@ -890,6 +924,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "taxes", "fieldtype": "Table", "hidden": 0, @@ -917,6 +952,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "other_charges_calculation", "fieldtype": "HTML", "hidden": 0, @@ -942,6 +978,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "totals", "fieldtype": "Section Break", "hidden": 0, @@ -968,6 +1005,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "base_taxes_and_charges_added", "fieldtype": "Currency", "hidden": 0, @@ -995,6 +1033,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "base_taxes_and_charges_deducted", "fieldtype": "Currency", "hidden": 0, @@ -1022,6 +1061,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "base_total_taxes_and_charges", "fieldtype": "Currency", "hidden": 0, @@ -1049,6 +1089,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_37", "fieldtype": "Column Break", "hidden": 0, @@ -1073,6 +1114,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "taxes_and_charges_added", "fieldtype": "Currency", "hidden": 0, @@ -1100,6 +1142,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "taxes_and_charges_deducted", "fieldtype": "Currency", "hidden": 0, @@ -1127,6 +1170,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "total_taxes_and_charges", "fieldtype": "Currency", "hidden": 0, @@ -1154,6 +1198,7 @@ "bold": 0, "collapsible": 1, "collapsible_depends_on": "discount_amount", + "columns": 0, "fieldname": "section_break_41", "fieldtype": "Section Break", "hidden": 0, @@ -1179,6 +1224,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "Grand Total", "fieldname": "apply_discount_on", "fieldtype": "Select", @@ -1206,6 +1252,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "base_discount_amount", "fieldtype": "Currency", "hidden": 0, @@ -1232,6 +1279,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_43", "fieldtype": "Column Break", "hidden": 0, @@ -1256,6 +1304,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "additional_discount_percentage", "fieldtype": "Float", "hidden": 0, @@ -1281,6 +1330,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "discount_amount", "fieldtype": "Currency", "hidden": 0, @@ -1307,6 +1357,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "section_break_46", "fieldtype": "Section Break", "hidden": 0, @@ -1331,6 +1382,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "base_grand_total", "fieldtype": "Currency", "hidden": 0, @@ -1358,6 +1410,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "", "fieldname": "base_in_words", "fieldtype": "Data", @@ -1385,6 +1438,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "base_rounded_total", "fieldtype": "Currency", "hidden": 0, @@ -1412,6 +1466,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break4", "fieldtype": "Column Break", "hidden": 0, @@ -1436,6 +1491,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "grand_total", "fieldtype": "Currency", "hidden": 0, @@ -1463,6 +1519,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "in_words", "fieldtype": "Data", "hidden": 0, @@ -1490,6 +1547,7 @@ "bold": 0, "collapsible": 1, "collapsible_depends_on": "terms", + "columns": 0, "fieldname": "terms_section_break", "fieldtype": "Section Break", "hidden": 0, @@ -1516,6 +1574,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "tc_name", "fieldtype": "Link", "hidden": 0, @@ -1543,6 +1602,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "terms", "fieldtype": "Text Editor", "hidden": 0, @@ -1569,6 +1629,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 1, + "columns": 0, "fieldname": "printing_settings", "fieldtype": "Section Break", "hidden": 0, @@ -1594,6 +1655,7 @@ "allow_on_submit": 1, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "select_print_heading", "fieldtype": "Link", "hidden": 0, @@ -1621,6 +1683,7 @@ "allow_on_submit": 1, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "letter_head", "fieldtype": "Link", "hidden": 0, @@ -1648,6 +1711,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "language", "fieldtype": "Data", "hidden": 0, @@ -1673,6 +1737,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 1, + "columns": 0, "fieldname": "more_info", "fieldtype": "Section Break", "hidden": 0, @@ -1699,6 +1764,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "status", "fieldtype": "Select", "hidden": 0, @@ -1726,6 +1792,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_57", "fieldtype": "Column Break", "hidden": 0, @@ -1749,6 +1816,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "No", "fieldname": "is_subcontracted", "fieldtype": "Select", @@ -1770,6 +1838,59 @@ "search_index": 0, "set_only_once": 0, "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "reference", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Reference", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "opportunity", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Opportunity", + "length": 0, + "no_copy": 1, + "options": "Opportunity", + "permlevel": 0, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 } ], "hide_heading": 0, @@ -1784,7 +1905,7 @@ "istable": 0, "max_attachments": 0, "menu_index": 0, - "modified": "2016-07-08 06:48:04.162164", + "modified": "2016-09-14 05:48:17.443848", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Quotation", diff --git a/erpnext/crm/doctype/opportunity/opportunity.js b/erpnext/crm/doctype/opportunity/opportunity.js index c9f1ffb1a5d..2f1169d7902 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.js +++ b/erpnext/crm/doctype/opportunity/opportunity.js @@ -8,16 +8,47 @@ frappe.ui.form.on("Opportunity", { customer: function(frm) { erpnext.utils.get_party_details(frm); }, - customer_address: function(frm, cdt, cdn){ + + customer_address: function(frm, cdt, cdn) { erpnext.utils.get_address_display(frm, 'customer_address', 'address_display', false); }, + contact_person: erpnext.utils.get_contact_details, + enquiry_from: function(frm) { frm.toggle_reqd("lead", frm.doc.enquiry_from==="Lead"); frm.toggle_reqd("customer", frm.doc.enquiry_from==="Customer"); }, + refresh: function(frm) { + var doc = frm.doc; frm.events.enquiry_from(frm); + + if(doc.status!=="Lost") { + if(doc.with_items){ + frm.add_custom_button(__('Supplier Quotation'), + function() { + frm.trigger("make_supplier_quotation") + }, __("Make")); + + frm.add_custom_button(__('Quotation'), + cur_frm.cscript.create_quotation, __("Make")); + + frm.page.set_inner_btn_group_as_primary(__("Make")); + } + + if(doc.status!=="Quotation") { + frm.add_custom_button(__('Lost'), + cur_frm.cscript['Declare Opportunity Lost']); + } + } + }, + + make_supplier_quotation: function(frm) { + frappe.model.open_mapped_doc({ + method: "erpnext.crm.doctype.opportunity.opportunity.make_supplier_quotation", + frm: cur_frm + }) } }) @@ -91,17 +122,6 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) { }); } } - - if(doc.status!=="Lost") { - if(doc.status!=="Quotation") { - cur_frm.add_custom_button(__('Lost'), - cur_frm.cscript['Declare Opportunity Lost']); - } - - cur_frm.add_custom_button(__('Quotation'), - cur_frm.cscript.create_quotation); - } - } cur_frm.cscript.onload_post_render = function(doc, cdt, cdn) { diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py index a2a1be23025..8bd3a2346e6 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.py +++ b/erpnext/crm/doctype/opportunity/opportunity.py @@ -231,6 +231,25 @@ def make_quotation(source_name, target_doc=None): return doclist +@frappe.whitelist() +def make_supplier_quotation(source_name, target_doc=None): + doclist = get_mapped_doc("Opportunity", source_name, { + "Opportunity": { + "doctype": "Supplier Quotation", + "field_map": { + "name": "opportunity" + } + }, + "Opportunity Item": { + "doctype": "Supplier Quotation Item", + "field_map": { + "uom": "stock_uom" + } + } + }, target_doc) + + return doclist + @frappe.whitelist() def set_multiple_status(names, status): names = json.loads(names)