Merge branch 'develop' of github.com:frappe/erpnext into develop
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js b/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
index ff42169..25a6557 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
@@ -227,8 +227,7 @@
 				"company": doc.company
 			},
 			callback: function(r) {
-				frappe.model.clear_table("Journal Voucher Detail", "Journal Voucher",
-					doc.name, "entries");
+				frappe.model.clear_table(doc, "entries");
 				if(r.message) {
 					update_jv_details(doc, r);
 				}
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 5713a90..eb6dc02 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -39,7 +39,8 @@
 	if party_type=="Customer":
 		out["sales_team"] = [{
 			"sales_person": d.sales_person,
-			"sales_designation": d.sales_designation
+			"sales_designation": d.sales_designation,
+			"allocated_percentage": d.allocated_percentage
 		} for d in party.get("sales_team")]
 
 	return out
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 3abbd03..404dfa7 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -122,17 +122,8 @@
 
 			tax_doctype = self.meta.get_field(tax_parentfield).options
 
-			from frappe.model import default_fields
-			tax_master = frappe.get_doc(tax_master_doctype, self.get(tax_master_field))
-
-			for i, tax in enumerate(tax_master.get(tax_parentfield)):
-				tax = tax.as_dict()
-
-				for fieldname in default_fields:
-					if fieldname in tax:
-						del tax[fieldname]
-
-				self.append(tax_parentfield, tax)
+			self.extend(tax_parentfield,
+				get_taxes_and_charges(tax_doctype, self.get(tax_master_field)), tax_parentfield)
 
 	def set_other_charges(self):
 		self.set("other_charges", [])
@@ -457,3 +448,20 @@
 @frappe.whitelist()
 def get_tax_rate(account_head):
 	return frappe.db.get_value("Account", account_head, "tax_rate")
+
+@frappe.whitelist()
+def get_taxes_and_charges(master_doctype, master_name, tax_parentfield):
+	from frappe.model import default_fields
+	tax_master = frappe.get_doc(master_doctype, master_name)
+
+	taxes_and_charges = []
+	for i, tax in enumerate(tax_master.get(tax_parentfield)):
+		tax = tax.as_dict()
+
+		for fieldname in default_fields:
+			if fieldname in tax:
+				del tax[fieldname]
+
+		taxes_and_charges.append(tax)
+
+	return taxes_and_charges
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index e34f159..9f5306b 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -33,8 +33,12 @@
 	def set_missing_lead_customer_details(self):
 		if getattr(self, "customer", None):
 			from erpnext.accounts.party import _get_party_details
-			self.update_if_missing(_get_party_details(self.customer,
-				ignore_permissions=getattr(self, "ignore_permissions", None)))
+			party_details = _get_party_details(self.customer,
+				ignore_permissions=getattr(self, "ignore_permissions", None))
+			if not self.meta.get_field("sales_team"):
+				party_details.pop("sales_team")
+
+			self.update_if_missing(party_details)
 
 		elif getattr(self, "lead", None):
 			from erpnext.selling.doctype.lead.lead import get_lead_details
diff --git a/erpnext/public/js/feature_setup.js b/erpnext/public/js/feature_setup.js
index 157de29..a45b602 100644
--- a/erpnext/public/js/feature_setup.js
+++ b/erpnext/public/js/feature_setup.js
@@ -121,12 +121,12 @@
 		'Sales BOM': {'fields':['currency']},
 		'Sales Order': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'sales_order_details':['base_price_list_rate','base_amount','base_rate']}
 	},
-	
+
 	'fs_imports': {
 		'Purchase Invoice': {
 			'fields': ['conversion_rate', 'currency', 'grand_total',
 		 		'in_words', 'net_total', 'other_charges_added',
-		 		'other_charges_deducted'], 
+		 		'other_charges_deducted'],
 			'entries': ['base_price_list_rate', 'base_amount','base_rate']
 		},
 		'Purchase Order': {
@@ -144,7 +144,7 @@
 			'fields':['conversion_rate','currency']
 		}
 	},
-	
+
 	'fs_item_advanced': {
 		'Item': {'fields':['item_customer_details']}
 	},
@@ -188,7 +188,7 @@
 
 $(document).bind('form_refresh', function() {
 	for(var sys_feat in sys_defaults) {
-		if(sys_defaults[sys_feat]=='0' 
+		if(sys_defaults[sys_feat]=='0'
 			&& (sys_feat in pscript.feature_dict)) { //"Features to hide" exists
 
 			if(cur_frm.doc.doctype in pscript.feature_dict[sys_feat]) {
@@ -196,7 +196,7 @@
 					if(fort=='fields') {
 						hide_field(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort]);
 					} else if(cur_frm.fields_dict[fort]) {
-						cur_frm.fields_dict[fort].grid.set_column_disp(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort], false);						
+						cur_frm.fields_dict[fort].grid.set_column_disp(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort], false);
 					} else {
 						msgprint(__('Grid "')+fort+__('" does not exists'));
 					}
diff --git a/erpnext/public/js/transaction.js b/erpnext/public/js/transaction.js
index 65d91c2..1ee06f7 100644
--- a/erpnext/public/js/transaction.js
+++ b/erpnext/public/js/transaction.js
@@ -702,15 +702,20 @@
 		var me = this;
 		if(this.frm.doc.taxes_and_charges) {
 			return this.frm.call({
-				doc: this.frm.doc,
-				method: "set_other_charges",
+				method: "erpnext.controllers.accounts_controller.get_taxes_and_charges",
+				args: {
+					"master_doctype": "Sales Taxes and Charges Master",
+					"master_name": this.frm.doc.taxes_and_charges,
+					"tax_parentfield": this.other_fname
+				},
 				callback: function(r) {
 					if(!r.exc) {
+						me.frm.set_value(me.other_fname, r.message);
 						me.calculate_taxes_and_totals();
 					}
 				}
 			});
-		}
+		});
 	},
 
 	show_item_wise_taxes: function() {