diff --git a/erpnext/accounts/doctype/payable_voucher/payable_voucher.js b/erpnext/accounts/doctype/payable_voucher/payable_voucher.js
index d4ce9e4..dee9510 100644
--- a/erpnext/accounts/doctype/payable_voucher/payable_voucher.js
+++ b/erpnext/accounts/doctype/payable_voucher/payable_voucher.js
@@ -22,16 +22,18 @@
 	if(doc.__islocal){
 		hide_field(['supplier_address', 'contact_person', 'supplier_name', 'address_display', 'contact_display', 'contact_mobile', 'contact_email']);
 	}
-	
-	// defined in purchase_common.js
-	cur_frm.cscript.update_item_details(doc, cdt, cdn);
 }
 
 
 //Onload post render
 //------------------------
 cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
-	if(doc.__islocal && doc.supplier) cur_frm.cscript.supplier(doc,dt,dn);
+	var callback = function(doc, dt, dn) {
+		if(doc.__islocal && doc.supplier) cur_frm.cscript.supplier(doc,dt,dn);
+	}
+		
+	// defined in purchase_common.js
+	cur_frm.cscript.update_item_details(doc, cdt, cdn, callback);
 }
 
 // Refresh
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index d7d88bb..323d956 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -33,7 +33,7 @@
 }
 
 // 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) {
 	if(!cur_frm.doc.__islocal) { return; }
 	var children = getchildren(cur_frm.cscript.tname, doc.name, cur_frm.cscript.fname);
 	if(children) {
@@ -43,6 +43,7 @@
 				refresh_field(cur_frm.cscript.fname);
 				doc = locals[doc.doctype][doc.name];
 				cur_frm.cscript.load_defaults(doc, dt, dn);
+				if(callback) callback(doc, dt, dn);
 			}
 		});
 	}
diff --git a/erpnext/patches/jan_mar_2012/account_type_patch.py b/erpnext/patches/jan_mar_2012/account_type_patch.py
index 63326ae..81552f0 100644
--- a/erpnext/patches/jan_mar_2012/account_type_patch.py
+++ b/erpnext/patches/jan_mar_2012/account_type_patch.py
@@ -2,10 +2,8 @@
 	import webnotes
 	webnotes.conn.sql("""update `tabAccount` 
 		set account_type = 'Chargeable' 
-		where account_name in ('CENVAT Capital Goods', 'CENVAT Service Tax', 'CENVAT Service Tax Cess 1', 'CENVAT Service Tax Cess 2')
+		where account_name in ('CENVAT Capital Goods', 'CENVAT Service Tax', 'CENVAT Service Tax Cess 1', 'CENVAT Service Tax Cess 2', 
+			'P L A', 'P L A - Cess Portion', 'VAT', 'TDS (Advertisement)', 'TDS (Commission)', 'TDS (Contractor)', 'TDS (Interest)', 
+			'TDS (Rent)', 'TDS (Salary)')
 	""")
-	webnotes.conn.sql("""update tabAccount 
-		set account_type = 'Tax' 
-		where account_name in ('P L A', 'P L A - Cess Portion', 'VAT', 'TDS (Advertisement)', 'TDS (Commission)',
-			'TDS (Contractor)', 'TDS (Interest)', 'TDS (Rent)', 'TDS (Salary)')
-	""")
+
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 1b06374..505ee13 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -108,8 +108,8 @@
 							['Excise Duty 14','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'14.00'],
 							['Excise Duty Edu Cess 2','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'2.00'],
 							['Excise Duty SHE Cess 1','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'1.00'],
-							['P L A','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,''],
-							['P L A - Cess Portion','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,''],
+							['P L A','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+							['P L A - Cess Portion','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
 							['Edu. Cess on Excise','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
 							['Edu. Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
 							['Edu. Cess on TDS','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
@@ -121,14 +121,14 @@
 							['SHE Cess on Excise','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
 							['SHE Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
 							['SHE Cess on TDS','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
-							['Professional Tax','Duties and Taxes','Ledger','No','','Credit',self.doc.name,''],
-							['VAT','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,''],
-							['TDS (Advertisement)','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,''],
-							['TDS (Commission)','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,''],
-							['TDS (Contractor)','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,''],
-							['TDS (Interest)','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,''],
-							['TDS (Rent)','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,''],
-							['TDS (Salary)','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'']
+							['Professional Tax','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+							['VAT','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+							['TDS (Advertisement)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+							['TDS (Commission)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+							['TDS (Contractor)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+							['TDS (Interest)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+							['TDS (Rent)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+							['TDS (Salary)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,'']
 						 ]
 		# load common account heads
 		for d in acc_list_common:
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index db5215a..272f304 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -20,14 +20,16 @@
 	
 	if(doc.supplier) unhide_field(['supplier_name','supplier_address','contact_person','address_display','contact_display','contact_mobile','contact_email']);
 	
-	// defined in purchase_common.js
-	cur_frm.cscript.update_item_details(doc, cdt, cdn);	
 }
 
 cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
-	if(doc.__islocal){ 
-		cur_frm.cscript.get_default_schedule_date(doc);
-	}	
+	var callback = function(doc, dt, dn) {
+		if(doc.__islocal){ 
+			cur_frm.cscript.get_default_schedule_date(doc);
+		}
+	}
+	// defined in purchase_common.js
+	cur_frm.cscript.update_item_details(doc, cdt, cdn, callback);	
 }
 
 //========================== Refresh ===============================================================
