diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.py b/erpnext/accounts/report/balance_sheet/balance_sheet.py
index 7e05b95..52a358b 100644
--- a/erpnext/accounts/report/balance_sheet/balance_sheet.py
+++ b/erpnext/accounts/report/balance_sheet/balance_sheet.py
@@ -16,6 +16,8 @@
 	
 	provisional_profit_loss = get_provisional_profit_loss(asset, liability, equity, 
 		period_list, filters.company)
+		
+	message = check_opening_balance(asset, liability, equity)
 
 	data = []
 	data.extend(asset or [])
@@ -26,7 +28,7 @@
 
 	columns = get_columns(filters.periodicity, period_list, company=filters.company)
 
-	return columns, data
+	return columns, data, message
 
 def get_provisional_profit_loss(asset, liability, equity, period_list, company):
 	if asset and (liability or equity):
@@ -57,3 +59,14 @@
 
 		if has_value:
 			return provisional_profit_loss
+
+def check_opening_balance(asset, liability, equity):
+	# Check if previous year balance sheet closed
+	opening_balance = flt(asset[0].get("opening_balance", 0))
+	if liability:
+		opening_balance -= flt(liability[0].get("opening_balance", 0))
+	if equity:
+		opening_balance -= flt(asset[0].get("opening_balance", 0))
+		
+	if opening_balance:
+		return _("Previous Financial Year is not closed")
\ No newline at end of file
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index 3e70a0e..1a59a9d 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -125,14 +125,20 @@
 				if entry.posting_date <= period.to_date:
 					if accumulated_values or entry.posting_date >= period.from_date:
 						d[period.key] = d.get(period.key, 0.0) + flt(entry.debit) - flt(entry.credit)
+						
+			if entry.posting_date < period_list[0].year_start_date:
+				d["opening_balance"] = d.get("opening_balance", 0.0) + flt(entry.debit) - flt(entry.credit)
 
 def accumulate_values_into_parents(accounts, accounts_by_name, period_list, accumulated_values):
 	"""accumulate children's values in parent accounts"""
 	for d in reversed(accounts):
 		if d.parent_account:
 			for period in period_list:
-				accounts_by_name[d.parent_account][period.key] = accounts_by_name[d.parent_account].get(period.key, 0.0) + \
-					d.get(period.key, 0.0)
+				accounts_by_name[d.parent_account][period.key] = \
+					accounts_by_name[d.parent_account].get(period.key, 0.0) + d.get(period.key, 0.0)
+			
+			accounts_by_name[d.parent_account]["opening_balance"] = \
+				accounts_by_name[d.parent_account].get("opening_balance", 0.0) + d.get("opening_balance", 0.0)
 
 def prepare_data(accounts, balance_must_be, period_list, company_currency):
 	data = []
@@ -150,13 +156,14 @@
 			"indent": flt(d.indent),
 			"year_start_date": year_start_date,
 			"year_end_date": year_end_date,
-			"currency": company_currency
+			"currency": company_currency,
+			"opening_balance": d.get("opening_balance", 0.0) * (1 if balance_must_be=="Debit" else -1)
 		})
 		for period in period_list:
-			if d.get(period.key):
+			if d.get(period.key) and balance_must_be=="Credit":
 				# change sign based on Debit or Credit, since calculation is done using (debit - credit)
-				d[period.key] *= (1 if balance_must_be=="Debit" else -1)
-
+				d[period.key] *= -1
+		
 			row[period.key] = flt(d.get(period.key, 0.0), 3)
 
 			if abs(row[period.key]) >= 0.005:
