diff --git a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
index b8789b3..c12c2fb 100644
--- a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
+++ b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
@@ -23,9 +23,6 @@
 
  		hide_field(['customer_address', 'contact_person', 'customer_name', 'address_display', 'contact_display', 'contact_mobile', 'contact_email', 'territory', 'customer_group']);
 
-		// defined in sales_common.js
-		cur_frm.cscript.update_item_details(doc, cdt, cdn);		
-		
 		//for previously created sales invoice, set required field related to pos
 		if(doc.is_pos ==1) cur_frm.cscript.is_pos(doc, dt, dn);
 
@@ -33,21 +30,22 @@
 }
 
 cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
+	var callback = null;
 	if(doc.customer && doc.__islocal) {
 		// called from mapper, update the account names for items and customer
-		$c_obj(make_doclist(doc.doctype,doc.name),
-			'load_default_accounts','',
-			function(r,rt) {
-				refresh_field('entries');
-				cur_frm.cscript.customer(doc,dt,dn);
-			}
-		);
+		callback = function(doc, dt, dn) {
+			$c_obj(make_doclist(doc.doctype,doc.name),
+				'load_default_accounts','',
+				function(r,rt) {
+					refresh_field('entries');
+					cur_frm.cscript.customer(doc,dt,dn);
+				}
+			);
+		}
 	}
-
-	if(!doc.customer && doc.__islocal) {
-		// new -- load default taxes
-		cur_frm.cscript.load_taxes(doc, cdt, cdn);
-	}
+	// defined in sales_common.js
+	cur_frm.cscript.update_item_details(doc, cdt, cdn, callback);		
+		
 }
 
 
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 9ba743d..e39b5f0 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -32,15 +32,11 @@
 		}
 	}
 
-	// defined in sales_common.js
-	cur_frm.cscript.update_item_details(doc, cdt, cdn);
-
 }
 
 cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
-	// load default charges
-	if(doc.__islocal && !getchildren('RV Tax Detail', doc.name, 'other_charges', doc.doctype).length)
-		cur_frm.cscript.load_taxes(doc, cdt, cdn);
+	// defined in sales_common.js
+	cur_frm.cscript.update_item_details(doc, cdt, cdn);
 }
 
 // hide - unhide fields based on lead or customer..
diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/erpnext/selling/doctype/sales_common/sales_common.js
index 57f379c..cdcec5b 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.js
+++ b/erpnext/selling/doctype/sales_common/sales_common.js
@@ -6,18 +6,23 @@
 // cur_frm.cscript.sales_team_fname - Sales Team fieldname
 
 // ============== Load Default Taxes ===================
-cur_frm.cscript.load_taxes = function(doc, cdt, cdn) {
+cur_frm.cscript.load_taxes = function(doc, cdt, cdn, callback) {
 	// run if this is not executed from dt_map...
-	if(doc.customer) return;
+	doc = locals[doc.doctype][doc.name];
+	if(doc.customer || getchildren('RV Tax Detail', doc.name, 'other_charges', doc.doctype).length) {
+		if(callback) callback(doc, cdt, cdn);
+		return;
+	}
 	$c_obj([doc],'load_default_taxes','',function(r,rt){
-		 refresh_field('other_charges');
+		refresh_field('other_charges');
+		if(callback) callback(doc, cdt, cdn);
 	});
 }
 
 
 // Gets called after existing item details are update to fill in
 // remaining default values
-cur_frm.cscript.load_defaults = function(doc, dt, dn) {
+cur_frm.cscript.load_defaults = function(doc, dt, dn, callback) {
 	if(!cur_frm.doc.__islocal) { return; }
 
 	doc = locals[doc.doctype][doc.name];
@@ -31,11 +36,13 @@
 		LocalDB.set_default_values(children[i]);
 	}
 	refresh_field(cur_frm.cscript.fname);
+	cur_frm.cscript.load_taxes(doc, dt, dn, callback);
 }
 
 
 // Update existing item details
-cur_frm.cscript.update_item_details = function(doc, dt, dn) {
+cur_frm.cscript.update_item_details = function(doc, dt, dn, callback) {
+	doc = locals[doc.doctype][doc.name];
 	if(!cur_frm.doc.__islocal) return;
 	var children = getchildren(cur_frm.cscript.tname, doc.name, cur_frm.cscript.fname);
 	if(children) {
@@ -44,7 +51,7 @@
 			if(!r.exc) {
 				refresh_field(cur_frm.cscript.fname);
 				doc = locals[doc.doctype][doc.name];
-				cur_frm.cscript.load_defaults(doc, dt, dn);
+				cur_frm.cscript.load_defaults(doc, dt, dn, callback);
 			}
 		});
 	}
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 59f8b84..f5f8b58 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -23,15 +23,12 @@
 		hide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group','shipping_address']);
 	}
 
-	// defined in sales_common.js
-	cur_frm.cscript.update_item_details(doc, cdt, cdn);
 }
 
 cur_frm.cscript.onload_post_render = function(doc, cdt, cdn) {
 	if(doc.__islocal) {
-		if(doc.quotation) cur_frm.cscript['Pull Quotation Details'](doc,cdt,cdn);
-	} else {
-	cur_frm.cscript.load_taxes(doc, cdt, cdn);
+		// defined in sales_common.js
+		cur_frm.cscript.update_item_details(doc, cdt, cdn, callback);
 	}
 }
 
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 4099174..b6329c5 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -24,12 +24,13 @@
 		hide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group']);
 	}
 
-	// defined in sales_common.js
-	//cur_frm.cscript.update_item_details(doc, cdt, cdn);
 	
 }
 
 cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
+	// defined in sales_common.js
+	//cur_frm.cscript.update_item_details(doc, cdt, cdn);
+	
 	// load default charges
 	if(doc.__islocal && !getchildren('RV Tax Detail', doc.name, 'other_charges', doc.doctype).length) 
 		cur_frm.cscript.load_taxes(doc, cdt, cdn);	
