2012-02-23 07:05:32 +00:00
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
2011-06-08 09:07:15 +00:00
#get company letter head
2011-09-15 08:33:16 +00:00
#---------------------------------------------------------------------
2011-06-08 09:07:15 +00:00
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 ' '
2011-09-15 08:33:16 +00:00
2011-06-08 09:07:15 +00:00
# Posting date, fiscal year and year start date
2011-09-15 08:33:16 +00:00
#---------------------------------------------------------------------
2011-06-08 09:07:15 +00:00
if not filter_values . get ( ' posting_date ' ) or not filter_values . get ( ' posting_date1 ' ) :
msgprint ( " Please enter From Date and To Date " )
raise Exception
else :
from_date = filter_values [ ' posting_date ' ]
to_date = filter_values [ ' posting_date1 ' ]
2011-09-15 08:33:16 +00:00
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 ]
2011-09-02 11:25:03 +00:00
#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]
2011-06-08 09:07:15 +00:00
2011-09-15 08:33:16 +00:00
2011-06-08 09:07:15 +00:00
# define columns
2011-09-15 08:33:16 +00:00
#---------------------------------------------------------------------
2011-06-08 09:07:15 +00:00
col = [ ]
col . append ( [ ' Date ' , ' Date ' , ' 80px ' , ' ' ] )
col . append ( [ ' Detail ' , ' Text ' , ' 475px ' , ' ' ] )
col . append ( [ ' Debit ' , ' Currency ' , ' 75px ' , ' ' ] )
col . append ( [ ' Credit ' , ' Currency ' , ' 75px ' , ' ' ] )
for c in col :
colnames . append ( c [ 0 ] )
coltypes . append ( c [ 1 ] )
colwidths . append ( c [ 2 ] )
coloptions . append ( c [ 3 ] )
col_idx [ c [ 0 ] ] = len ( colnames )
#total query
2011-09-15 08:33:16 +00:00
#---------------------------------------------------------------------
total_debit , total_credit , total_opening , total_diff = 0 , 0 , 0 , 0
2011-06-08 09:07:15 +00:00
q = query . split ( ' WHERE ' ) [ 1 ] . split ( ' LIMIT ' )
if len ( q ) > 2 :
query_where_clause = ' LIMIT ' . join ( q [ : - 1 ] )
else :
query_where_clause = q [ 0 ]
tot = sql ( ' select sum(debit),sum(credit) from `tabGL Entry` where %s ' % query_where_clause )
for t in tot :
total_debit + = t and flt ( t [ 0 ] ) or 0
total_credit + = t and flt ( t [ 1 ] ) or 0
total_diff = total_debit - total_credit
out = [ ]
2011-09-02 11:25:03 +00:00
2011-09-15 08:33:16 +00:00
# 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
#---------------------------------------------------------------------
2011-06-08 09:07:15 +00:00
count = 0
for r in res :
count + = 1
det = r [ 1 ] . split ( ' ~~~ ' )
if from_export == 1 :
a = " Account: " + det [ 0 ] + NEWLINE + det [ 1 ] + NEWLINE + " Against: " + det [ 2 ] + NEWLINE + " Voucher No: " + det [ 4 ]
else :
a = " Account: <b> " + det [ 0 ] + " </b> " + NEWLINE + " <div class= ' comment ' > " + det [ 1 ] + " </div><div class = ' comment ' style= ' padding-left:12px ' >Against: <b> " + det [ 2 ] + " </b></div><div class = ' comment ' style= ' padding-left:12px ' >Voucher No: <span class= ' link_type ' onclick= ' loaddoc( " + ' " ' + det [ 3 ] + ' " , ' + ' " ' + det [ 4 ] + ' " ' + " ) ' > " + det [ 4 ] + " </span></div> "
r [ 1 ] = a
out . append ( r )
2011-09-15 08:33:16 +00:00
# Total, Difference and closing balance
#---------------------------------------------------------------------
2011-06-08 09:07:15 +00:00
if total_debit != 0 or total_credit != 0 :
# Total debit/credit
t_row = [ ' ' for i in range ( len ( colnames ) ) ]
t_row [ 1 ] = ' Total '
2011-09-02 11:25:03 +00:00
t_row [ col_idx [ ' Debit ' ] - 1 ] = total_debit
t_row [ col_idx [ ' Credit ' ] - 1 ] = total_credit
2011-06-08 09:07:15 +00:00
out . append ( t_row )
2011-09-02 11:25:03 +00:00
2011-06-08 09:07:15 +00:00
# diffrence (dr-cr)
t_row = [ ' ' for i in range ( len ( colnames ) ) ]
t_row [ 1 ] = ' Total(Dr-Cr) '
2011-09-02 11:25:03 +00:00
t_row [ col_idx [ ' Debit ' ] - 1 ] = total_diff
2011-06-08 09:07:15 +00:00
out . append ( t_row )
# closing
if account :
t_row = [ ' ' for i in range ( len ( colnames ) ) ]
2011-09-02 11:25:03 +00:00
t_row [ 1 ] = ' Closing Balance on ' + formatdate ( to_date )
2011-06-08 09:07:15 +00:00
t_row [ col_idx [ ' Debit ' ] - 1 ] = flt ( closing_bal )
out . append ( t_row )
2011-09-02 11:25:03 +00:00
2011-09-15 08:33:16 +00:00
2011-06-08 09:07:15 +00:00
# Print Format
2011-09-15 08:33:16 +00:00
#---------------------------------------------------------------------
2011-06-08 09:07:15 +00:00
myheader = """ <table width = ' 100 %% ' ><tr><td> """ + l_head + """ </td>
< / tr >
< tr > < td >
< div > < h3 > % ( acc ) s < / h3 > < / div >
< div > Ledger Between % ( fdt ) s and % ( tdt ) s < / div > < / td > < / tr > < / table > < br >
""" % { ' acc ' :account,
' fdt ' : from_date ,
' tdt ' : to_date }
2011-09-02 11:25:03 +00:00
2011-06-08 09:07:15 +00:00
page_template = myheader + " <div> %(table)s </div> "