Merge branch 'master' of github.com:webnotes/erpnext
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>