diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index b0566f1..ccaae49 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -95,8 +95,9 @@
 
 		// Show buttons only when pos view is active
 		if (cint(doc.docstatus==0) && cur_frm.page.current_view_name!=="pos" && !doc.is_return) {
-			cur_frm.cscript.sales_order_btn();
-			cur_frm.cscript.delivery_note_btn();
+			this.frm.cscript.sales_order_btn();
+			this.frm.cscript.delivery_note_btn();
+			this.frm.cscript.quotation_btn();
 		}
 
 		this.set_default_print_format();
@@ -163,7 +164,7 @@
 		this.$quotation_btn = this.frm.add_custom_button(__('Quotation'),
 			function() {
 				erpnext.utils.map_current_doc({
-					method: "erpnext.selling.doctype.quotation.quotation.make_quotation",
+					method: "erpnext.selling.doctype.quotation.quotation.make_sales_invoice",
 					source_doctype: "Quotation",
 					target: me.frm,
 					setters: {
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index c240c65..6d9c170 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -169,51 +169,46 @@
 	return doclist
 
 @frappe.whitelist()
- def make_quotation(source_name, target_doc=None):
- 	return _make_quotation(source_name, target_doc)
- 
- def _make_quotation(source_name, target_doc=None, ignore_permissions=False):
- 	customer = _make_customer(source_name, ignore_permissions)
- 
- 	def set_missing_values(source, target):
- 		if customer:
- 			target.customer = customer.name
- 			target.customer_name = customer.customer_name
- 		target.ignore_pricing_rule = 1
- 		target.flags.ignore_permissions = ignore_permissions
- 		target.run_method("set_missing_values")
- 	target.run_method("calculate_taxes_and_totals")
- 
- 	def update_item(obj, target, source_parent):
- 		target.stock_qty = flt(obj.qty) * flt(obj.conversion_factor)
- 
- 	doclist = get_mapped_doc("Quotation", source_name, {
- 			"Quotation": {
- 				"doctype": "Sales Invoice",
- 				"validation": {
- 					"docstatus": ["=", 1]
- 				}
- 			},
- 			"Quotation Item": {
- 				"doctype": "Sales Invoice Item",
- 				"field_map": {
- 					"parent": "prevdoc_docname"
- 				},
- 				"postprocess": update_item
- 			},
- 			"Sales Taxes and Charges": {
- 				"doctype": "Sales Taxes and Charges",
- 				"add_if_empty": True
- 			},
- 			"Sales Team": {
- 				"doctype": "Sales Team",
- 				"add_if_empty": True
- 			}
- 		}, target_doc, set_missing_values, ignore_permissions=ignore_permissions)
- 
- 	# postprocess: fetch shipping address, set missing values
- 
- 	return doclist	
+def make_sales_invoice(source_name, target_doc=None):
+	return _make_sales_invoice(source_name, target_doc)
+
+def _make_sales_invoice(source_name, target_doc=None, ignore_permissions=False):
+	customer = _make_customer(source_name, ignore_permissions)
+
+	def set_missing_values(source, target):
+		if customer:
+			target.customer = customer.name
+			target.customer_name = customer.customer_name
+		target.ignore_pricing_rule = 1
+		target.flags.ignore_permissions = ignore_permissions
+		target.run_method("set_missing_values")
+		target.run_method("calculate_taxes_and_totals")
+
+	def update_item(obj, target, source_parent):
+		target.stock_qty = flt(obj.qty) * flt(obj.conversion_factor)
+
+	doclist = get_mapped_doc("Quotation", source_name, {
+			"Quotation": {
+				"doctype": "Sales Invoice",
+				"validation": {
+					"docstatus": ["=", 1]
+				}
+			},
+			"Quotation Item": {
+				"doctype": "Sales Invoice Item",
+				"postprocess": update_item
+			},
+			"Sales Taxes and Charges": {
+				"doctype": "Sales Taxes and Charges",
+				"add_if_empty": True
+			},
+			"Sales Team": {
+				"doctype": "Sales Team",
+				"add_if_empty": True
+			}
+		}, target_doc, set_missing_values, ignore_permissions=ignore_permissions)
+
+	return doclist	
 
 def _make_customer(source_name, ignore_permissions=False):
 	quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type", "customer"])
