diff --git a/erpnext/accounts/search_criteria/general_ledger/general_ledger.py b/erpnext/accounts/search_criteria/general_ledger/general_ledger.py
index 6cba6e4..8c855cf 100644
--- a/erpnext/accounts/search_criteria/general_ledger/general_ledger.py
+++ b/erpnext/accounts/search_criteria/general_ledger/general_ledger.py
@@ -1,9 +1,11 @@
 #get company letter head
+#---------------------------------------------------------------------
 l_head = sql("select content from `tabLetter Head` where ifnull(is_default, 0) = 1 and ifnull(disabled, 0) = 0")
 l_head = l_head and l_head[0][0] or ''
 
+
 # Posting date, fiscal year and year start date
-#-----------------------------------------------
+#---------------------------------------------------------------------
 if not filter_values.get('posting_date') or not filter_values.get('posting_date1'):
   msgprint("Please enter From Date and To Date")
   raise Exception
@@ -11,11 +13,16 @@
   from_date = filter_values['posting_date']
   to_date = filter_values['posting_date1']
 
-from_date_year = sql("select name from `tabFiscal Year` where %s between year_start_date and date_sub(date_add(year_start_date,interval 1 year), interval 1 day)",from_date)[0][0]
+from_date_year = sql("select name from `tabFiscal Year` where %s between year_start_date and date_sub(date_add(year_start_date,interval 1 year), interval 1 day)",from_date)
+if not from_date_year:
+	msgprint("From Date is out of range. Please check.", raise_exception=1)
+else:
+	from_date_year = from_date_year[0][0]
 #to_date_year = sql("select name from `tabFiscal Year` where %s between year_start_date and date_sub(date_add(year_start_date,interval 1 year), interval 1 day)",to_date)[0][0]
 
+
 # define columns
-#---------------
+#---------------------------------------------------------------------
 col = []
 col.append(['Date','Date','80px',''])
 col.append(['Detail','Text','475px',''])
@@ -30,9 +37,9 @@
   col_idx[c[0]] = len(colnames)
 
 
-total_debit, total_credit, total_opening, total_diff = 0,0,0,0
-
 #total query
+#---------------------------------------------------------------------
+total_debit, total_credit, total_opening, total_diff = 0,0,0,0
 q = query.split('WHERE')[1].split('LIMIT')
 if len(q) > 2:
   query_where_clause = 'LIMIT'.join(q[:-1])
@@ -47,27 +54,32 @@
 
 total_diff = total_debit - total_credit
 
-# opening
-account = filter_values.get('account')
-if not account:
-  msgprint('Select an account to proceed',raise_exception=0,small=1)
-
-
-acc_det = sql("select debit_or_credit, is_pl_account, lft, rgt, group_or_ledger from tabAccount where name = '%s'" % account)
-
-opening_bal = get_obj('GL Control').get_as_on_balance(account, from_date_year, from_date, acc_det[0][0], acc_det[0][2], acc_det[0][3])[2]
-closing_bal = get_obj('GL Control').get_as_on_balance(account, from_date_year, to_date, acc_det[0][0], acc_det[0][2], acc_det[0][3])[2]
-if acc_det[0][0] == 'Credit':
-  closing_bal = -1*closing_bal
-  opening_bal = -1*opening_bal
-
 out = []
 
-t_row = ['' for i in range(len(colnames))]
-t_row[1] = 'Opening as on '+formatdate(from_date)
-t_row[col_idx['Debit']-1] = opening_bal
-out.append(t_row)
 
+# If account mentioned, show opening and closing
+#---------------------------------------------------------------------
+account = filter_values.get('account')
+
+if account and (total_debit != 0 or total_credit != 0):
+	acc_det = sql("select debit_or_credit, is_pl_account, lft, rgt, group_or_ledger from tabAccount where name = '%s'" % account)
+
+	opening_bal = get_obj('GL Control').get_as_on_balance(account, from_date_year, add_days(from_date, -1), acc_det[0][0], acc_det[0][2], acc_det[0][3])[2]
+	closing_bal = get_obj('GL Control').get_as_on_balance(account, from_date_year, to_date, acc_det[0][0], acc_det[0][2], acc_det[0][3])[2]
+	
+	if acc_det[0][0] == 'Credit':
+	  closing_bal = -1*closing_bal
+	  opening_bal = -1*opening_bal
+
+	# add opening row
+	t_row = ['' for i in range(len(colnames))]
+	t_row[1] = 'Opening as on '+formatdate(from_date)
+	t_row[col_idx['Debit']-1] = opening_bal
+	out.append(t_row)
+	
+	
+# table output
+#---------------------------------------------------------------------
 count = 0
 for r in res:
   count +=1
@@ -79,6 +91,9 @@
   r[1] = a
   out.append(r)
 
+
+# Total, Difference and closing balance
+#---------------------------------------------------------------------
 if total_debit != 0 or total_credit != 0:
   # Total debit/credit
   t_row = ['' for i in range(len(colnames))]
@@ -87,7 +102,6 @@
   t_row[col_idx['Credit']-1] = total_credit
   out.append(t_row)
 
-
   # diffrence (dr-cr)
   t_row = ['' for i in range(len(colnames))]
   t_row[1] = 'Total(Dr-Cr)'
@@ -101,7 +115,9 @@
     t_row[col_idx['Debit']-1] = flt(closing_bal)
     out.append(t_row)
 
+
 # Print Format
+#---------------------------------------------------------------------
 myheader = """<table width = '100%%'><tr><td>"""+l_head+"""</td>
 </tr>
 <tr> <td>
