diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js index f6d9ca9fdf..3801141fb9 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js @@ -254,6 +254,21 @@ erpnext.buying.RequestforQuotationController = erpnext.buying.BuyingController.e } }) }, __("Get items from")); + // Get items from Opportunity + this.frm.add_custom_button(__('Opportunity'), + function() { + erpnext.utils.map_current_doc({ + method: "erpnext.crm.doctype.opportunity.opportunity.make_request_for_quotation", + source_doctype: "Opportunity", + target: me.frm, + setters: { + company: me.frm.doc.company + }, + get_query_filters: { + enquiry_type: "Sales" + } + }) + }, __("Get items from")); // Get items from open Material Requests based on supplier this.frm.add_custom_button(__('Possible Supplier'), function() { // Create a dialog window for the user to pick their supplier diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py index 8bc7ad8461..4251cae954 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.py +++ b/erpnext/crm/doctype/opportunity/opportunity.py @@ -245,6 +245,27 @@ def make_quotation(source_name, target_doc=None): return doclist +@frappe.whitelist() +def make_request_for_quotation(source_name, target_doc=None): + doclist = get_mapped_doc("Opportunity", source_name, { + "Opportunity": { + "doctype": "Request for Quotation", + "validation": { + "enquiry_type": ["=", "Sales"] + } + }, + "Opportunity Item": { + "doctype": "Request for Quotation Item", + "field_map": [ + ["name", "opportunity_item"], + ["parent", "opportunity"], + ["uom", "uom"] + ] + } + }, target_doc) + + return doclist + @frappe.whitelist() def make_supplier_quotation(source_name, target_doc=None): doclist = get_mapped_doc("Opportunity", source_name, { @@ -284,4 +305,4 @@ def auto_close_opportunity(): doc.status = "Closed" doc.flags.ignore_permissions = True doc.flags.ignore_mandatory = True - doc.save() \ No newline at end of file + doc.save() diff --git a/erpnext/patches/v8_9/set_print_zero_amount_taxes.py b/erpnext/patches/v8_9/set_print_zero_amount_taxes.py index 33d3cedc48..621b573744 100644 --- a/erpnext/patches/v8_9/set_print_zero_amount_taxes.py +++ b/erpnext/patches/v8_9/set_print_zero_amount_taxes.py @@ -4,4 +4,5 @@ import frappe from erpnext.setup.install import create_print_zero_amount_taxes_custom_field def execute(): + frappe.reload_doc("printing", "doctype", "print_style") create_print_zero_amount_taxes_custom_field() \ No newline at end of file