fixes in financial statements
diff --git a/erpnext/accounts/doctype/mis_control/mis_control.py b/erpnext/accounts/doctype/mis_control/mis_control.py
index b398716..7109dfb 100644
--- a/erpnext/accounts/doctype/mis_control/mis_control.py
+++ b/erpnext/accounts/doctype/mis_control/mis_control.py
@@ -12,7 +12,6 @@
 		self.doc = doc
 		self.doclist = doclist
 		self.account_list = []
-		self.ac_details = {} # key: account id, values: debit_or_credit, lft, rgt
 		
 		self.period_list = []
 		self.period_start_date = {}
@@ -76,23 +75,22 @@
 		return self.return_data
 
 	def get_children(self, parent_account, level, pl, company, fy):
-		cl = frappe.db.sql("select distinct account_name, name, debit_or_credit, lft, rgt from `tabAccount` where ifnull(parent_account, '') = %s and ifnull(is_pl_account, 'No')=%s and company=%s and docstatus != 2 order by name asc", (parent_account, pl, company))
+		cl = frappe.db.sql("select distinct account_name, name, root_type, lft, rgt from `tabAccount` where ifnull(parent_account, '') = %s and ifnull(is_pl_account, 'No')=%s and company=%s and docstatus != 2 order by name asc", (parent_account, pl, company))
 		level0_diff = [0 for p in self.period_list]
 		if pl=='Yes' and level==0: # switch for income & expenses
 			cl = [c for c in cl]
 			cl.reverse()
 		if cl:
 			for c in cl:
-				self.ac_details[c[1]] = [c[2], c[3], c[4]]
-				bal_list = self.get_period_balance(c[1], pl)
+				bal_list = self.get_period_balance(c[1], pl, c[2])
 				if level==0: # top level - put balances as totals
 					self.return_data.append([level, c[0]] + ['' for b in bal_list])
 					totals = bal_list
 					for i in range(len(totals)): # make totals
-						if c[2]=='Credit':
-							level0_diff[i] += flt(totals[i])
-						else:
+						if c[2] in ["Asset", "Expense"]:
 							level0_diff[i] -= flt(totals[i])
+						else:
+							level0_diff[i] += flt(totals[i])
 				else:
 					self.return_data.append([level, c[0]]+bal_list)
 					
@@ -103,18 +101,18 @@
 				if level==0:
 					# add rows for profit / loss in B/S
 					if pl=='No':
-						if c[2]=='Credit':
+						if c[2] == "Asset":
+							self.return_data.append([4, 'Total '+c[0]] + totals)
+						else:
 							self.return_data.append([1, 'Total Liabilities'] + totals)
 							level0_diff = [-i for i in level0_diff] # convert to debit
 							self.return_data.append([5, 'Profit/Loss (Provisional)'] + level0_diff)
 							for i in range(len(totals)): # make totals
 								level0_diff[i] = flt(totals[i]) + level0_diff[i]
-						else:
-							self.return_data.append([4, 'Total '+c[0]] + totals)
 
 					# add rows for profit / loss in P/L
 					else:
-						if c[2]=='Debit':
+						if c[2]=='Expense':
 							self.return_data.append([1, 'Total Expenses'] + totals)
 							self.return_data.append([5, 'Profit/Loss (Provisional)'] + level0_diff)
 							for i in range(len(totals)): # make totals
@@ -154,11 +152,14 @@
 				self.period_start_date[pn] = fd
 				self.period_end_date[pn] = get_last_day(fd)
 			
-	def get_period_balance(self, acc, pl):
+	def get_period_balance(self, acc, pl, root_type):
 		ret, i = [], 0
 		for p in self.period_list:
 			period_end_date = self.period_end_date[p].strftime('%Y-%m-%d')
 			bal = get_balance_on(acc, period_end_date)
+			if root_type not in ["Asset", "Expense"]:
+				bal = -bal
+				
 			if pl=='Yes': 
 				bal = bal - sum(ret)