fixed merge conflict
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 0c8d999..2101a25 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -299,8 +299,12 @@
 	else:
 		args.update(get_party_details(party, party_type))
 
-	if party_type=="Customer":
+	if party_type in ("Customer", "Lead"):
 		args.update({"tax_type": "Sales"})
+
+		if party_type=='Lead':
+			args['customer'] = None
+			del args['lead']
 	else:
 		args.update({"tax_type": "Purchase"})
 
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index b8b2c31..d12486d 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -51,7 +51,10 @@
 
 		elif getattr(self, "lead", None):
 			from erpnext.crm.doctype.lead.lead import get_lead_details
-			self.update_if_missing(get_lead_details(self.lead))
+			self.update_if_missing(get_lead_details(
+				self.lead,
+				posting_date=self.get('transaction_date') or self.get('posting_date'),
+				company=self.company))
 
 	def set_price_list_and_item_details(self):
 		self.set_price_list_currency("Selling")
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index ea06f53..a743e56 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -10,6 +10,7 @@
 
 from erpnext.controllers.selling_controller import SellingController
 from erpnext.utilities.address_and_contact import load_address_and_contact
+from erpnext.accounts.party import set_taxes
 
 sender_field = "email_id"
 
@@ -58,7 +59,7 @@
 	def check_email_id_is_unique(self):
 		if self.email_id:
 			# validate email is unique
-			duplicate_leads = frappe.db.sql_list("""select name from tabLead 
+			duplicate_leads = frappe.db.sql_list("""select name from tabLead
 				where email_id=%s and name!=%s""", (self.email_id, self.name))
 
 			if duplicate_leads:
@@ -138,7 +139,7 @@
 	return target_doc
 
 @frappe.whitelist()
-def get_lead_details(lead):
+def get_lead_details(lead, posting_date=None, company=None):
 	if not lead: return {}
 
 	from erpnext.accounts.party import set_address_details
@@ -158,4 +159,9 @@
 
 	set_address_details(out, lead, "Lead")
 
+	taxes_and_charges = set_taxes(None, 'Lead', posting_date, company,
+		billing_address=out.get('customer_address'), shipping_address=out.get('shipping_address_name'))
+	if taxes_and_charges:
+		out['taxes_and_charges'] = taxes_and_charges
+
 	return out
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index a31d841..d630779 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -69,37 +69,57 @@
 				if(r.message) {
 					frm.set_value(display_field, r.message)
 				}
-
-				if(frappe.meta.get_docfield(frm.doc.doctype, "taxes") && !is_your_company_address) {
-					if(!erpnext.utils.validate_mandatory(frm, "Customer/Supplier",
-						frm.doc.customer || frm.doc.supplier, address_field)) return;
-
-					if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
-						frm.doc.posting_date || frm.doc.transaction_date, address_field)) return;
-				} else return;
-
-				frappe.call({
-					method: "erpnext.accounts.party.set_taxes",
-					args: {
-						"party": frm.doc.customer || frm.doc.supplier,
-						"party_type": (frm.doc.customer ? "Customer" : "Supplier"),
-						"posting_date": frm.doc.posting_date || frm.doc.transaction_date,
-						"company": frm.doc.company,
-						"billing_address": ((frm.doc.customer) ? (frm.doc.customer_address) : (frm.doc.supplier_address)),
-						"shipping_address": frm.doc.shipping_address_name
-					},
-					callback: function(r) {
-						if(r.message){
-							frm.set_value("taxes_and_charges", r.message)
-						}
-					}
-				});
+				erpnext.utils.set_taxes(frm, address_field, display_field, is_your_company_address);
 			}
 		})
 	} else {
 		frm.set_value(display_field, null);
 	}
+};
 
+erpnext.utils.set_taxes = function(frm, address_field, display_field, is_your_company_address) {
+	if(frappe.meta.get_docfield(frm.doc.doctype, "taxes") && !is_your_company_address) {
+		if(!erpnext.utils.validate_mandatory(frm, "Lead/Customer/Supplier",
+			frm.doc.customer || frm.doc.supplier || frm.doc.lead, address_field)) {
+				return;
+			}
+
+		if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
+			frm.doc.posting_date || frm.doc.transaction_date, address_field)) {
+			return;
+		}
+	} else {
+		return;
+	}
+
+	var party_type, party;
+	if (frm.doc.lead) {
+		party_type = 'Lead';
+		party = frm.doc.lead;
+	} else if (frm.doc.customer) {
+		party_type = 'Customer';
+		party = frm.doc.customer;
+	} else if (frm.doc.supplier) {
+		party_type = 'Supplier';
+		party = frm.doc.supplier;
+	}
+
+	frappe.call({
+		method: "erpnext.accounts.party.set_taxes",
+		args: {
+			"party": party,
+			"party_type": party_type,
+			"posting_date": frm.doc.posting_date || frm.doc.transaction_date,
+			"company": frm.doc.company,
+			"billing_address": ((frm.doc.customer || frm.doc.lead) ? (frm.doc.customer_address) : (frm.doc.supplier_address)),
+			"shipping_address": frm.doc.shipping_address_name
+		},
+		callback: function(r) {
+			if(r.message){
+				frm.set_value("taxes_and_charges", r.message)
+			}
+		}
+	});
 }
 
 erpnext.utils.get_contact_details = function(frm) {
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 3e90b97..649faaf 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -25,7 +25,7 @@
 				cur_frm.add_custom_button(__('Lost'),
 					cur_frm.cscript['Declare Order Lost'], __("Status"));
 			}
-			
+
 			cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
 		}
 
@@ -47,7 +47,7 @@
 		}
 
 		this.toggle_reqd_lead_customer();
-		
+
 	},
 
 	quotation_to: function() {
@@ -96,7 +96,11 @@
 		var me = this;
 		frappe.call({
 			method: "erpnext.crm.doctype.lead.lead.get_lead_details",
-			args: { "lead": this.frm.doc.lead },
+			args: {
+				'lead': this.frm.doc.lead,
+				'posting_date': this.frm.doc.transaction_date,
+				'company': this.frm.doc.company,
+			},
 			callback: function(r) {
 				if(r.message) {
 					me.frm.updating_party_details = true;
@@ -166,6 +170,6 @@
 
 frappe.ui.form.on("Quotation Item", "stock_balance", function(frm, cdt, cdn) {
 	var d = frappe.model.get_doc(cdt, cdn);
-	frappe.route_options = {"item_code": d.item_code}; 
+	frappe.route_options = {"item_code": d.item_code};
 	frappe.set_route("query-report", "Stock Balance");
-})
\ No newline at end of file
+})