Getting Quotation Document in Sales Invoice
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index f0cce5f..c240c65 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -168,6 +168,53 @@
 
 	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_customer(source_name, ignore_permissions=False):
 	quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type", "customer"])
 	if quotation and quotation[0] and not quotation[2]: