From 49c93661c1183f49bf32c45c893ac98365f35d6b Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 17 Oct 2012 11:03:56 +0530 Subject: [PATCH] Transaction Date removed and fixed in aging date calculation in AR/AP report --- .../accounts_payable/accounts_payable.js | 2 +- .../accounts_payable/accounts_payable.py | 47 +++-- .../accounts_payable/accounts_payable.sql | 2 +- .../accounts_payable/accounts_payable.txt | 21 +- .../accounts_receivable.js | 6 +- .../accounts_receivable.py | 194 +++++++++--------- .../accounts_receivable.sql | 2 +- 7 files changed, 139 insertions(+), 135 deletions(-) diff --git a/accounts/search_criteria/accounts_payable/accounts_payable.js b/accounts/search_criteria/accounts_payable/accounts_payable.js index 1f1953798d..8c1486d868 100644 --- a/accounts/search_criteria/accounts_payable/accounts_payable.js +++ b/accounts/search_criteria/accounts_payable/accounts_payable.js @@ -22,7 +22,7 @@ report.customize_filters = function() { this.filter_fields_dict['GL Entry'+FILTER_SEP +'To Posting Date'].df.filter_hide = 0; this.filter_fields_dict['GL Entry'+FILTER_SEP +'Account'].df.filter_hide = 0; - this.add_filter({fieldname:'aging_based_on', label:'Aging Based On', fieldtype:'Select', options:NEWLINE+'Transaction Date'+NEWLINE+'Aging Date'+NEWLINE+'Due Date',ignore : 1, parent:'Purchase Invoice', report_default:'Aging Date'}); + this.add_filter({fieldname:'aging_based_on', label:'Aging Based On', fieldtype:'Select', options:NEWLINE+'Aging Date'+NEWLINE+'Due Date',ignore : 1, parent:'Purchase Invoice', report_default:'Aging Date'}); this.add_filter({fieldname:'range_1', label:'Range 1', fieldtype:'Data', ignore : 1, parent:'GL Entry', report_default:30}); this.add_filter({fieldname:'range_2', label:'Range 2', fieldtype:'Data', ignore : 1, parent:'GL Entry', report_default:45}); this.add_filter({fieldname:'range_3', label:'Range 3', fieldtype:'Data', ignore : 1, parent:'GL Entry', report_default:60}); diff --git a/accounts/search_criteria/accounts_payable/accounts_payable.py b/accounts/search_criteria/accounts_payable/accounts_payable.py index 1aaee964de..9bb6493922 100644 --- a/accounts/search_criteria/accounts_payable/accounts_payable.py +++ b/accounts/search_criteria/accounts_payable/accounts_payable.py @@ -8,11 +8,11 @@ # # 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 +# 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 . +# along with this program. If not, see . # Check mandatory filters # ------------------------------------------------------------------ @@ -40,25 +40,24 @@ for r in range(len(range_list)-1): # Add columns # ------------------------------------------------------------------ data = [['Aging Date','Date','80px',''], - ['Transaction Date','Date','80px',''], - ['Account','Data','120px',''], - ['Against Voucher Type','Data','120px',''], - ['Against Voucher','Data','120px',''], - ['Voucher Type','Data','120px',''], - ['Voucher No','Data','120px',''], - ['Remarks','Data','160px',''], - ['Supplier Type', 'Data', '80px', ''], - ['Due Date', 'Data', '80px', ''], - ['Bill No','Data','80px',''], - ['Bill Date','Data','80px',''], - ['Opening Amt','Currency','120px',''], - ['Outstanding Amt','Currency','120px',''], - ['Age (Days)', 'Currency', '150px', ''], - ['0-'+cstr(filter_values['range_1']),'Currency','100px',''], - [cstr(cint(filter_values['range_1']) + 1)+ '-' +cstr(filter_values['range_2']),'Currency','100px',''], - [cstr(cint(filter_values['range_2']) + 1)+ '-' +cstr(filter_values['range_3']),'Currency','100px',''], - [cstr(cint(filter_values['range_3']) + 1)+ '-' +cstr(filter_values['range_4']),'Currency','100px',''], - [cstr(filter_values['range_4']) + '-Above','Currency','100px','']] + ['Account','Data','120px',''], + ['Against Voucher Type','Data','120px',''], + ['Against Voucher','Data','120px',''], + ['Voucher Type','Data','120px',''], + ['Voucher No','Data','120px',''], + ['Remarks','Data','160px',''], + ['Supplier Type', 'Data', '80px', ''], + ['Due Date', 'Data', '80px', ''], + ['Bill No','Data','80px',''], + ['Bill Date','Data','80px',''], + ['Opening Amt','Currency','120px',''], + ['Outstanding Amt','Currency','120px',''], + ['Age (Days)', 'Currency', '150px', ''], + ['0-'+cstr(filter_values['range_1']),'Currency','100px',''], + [cstr(cint(filter_values['range_1']) + 1)+ '-' +cstr(filter_values['range_2']),'Currency','100px',''], + [cstr(cint(filter_values['range_2']) + 1)+ '-' +cstr(filter_values['range_3']),'Currency','100px',''], + [cstr(cint(filter_values['range_3']) + 1)+ '-' +cstr(filter_values['range_4']),'Currency','100px',''], + [cstr(filter_values['range_4']) + '-Above','Currency','100px','']] for d in data: @@ -97,12 +96,14 @@ for t in sql("select name, due_date, bill_no, bill_date from `tabPurchase Invoic pv_outside_period = [d[0] for d in sql("select distinct name from `tabPurchase Invoice` where (posting_date < '%s' or posting_date > '%s') and docstatus = 1" % (from_date, to_date))] +from webnotes.utils import nowdate + out = [] total_booking_amt, total_outstanding_amt = 0,0 for r in res: outstanding_amt, due_date, bill_no, bill_date, cond = 0, '','','', '' - booking_amt = r.pop(8) + booking_amt = r.pop(7) # supplier type r.append(supp_type_dict.get(r[col_idx['Account']], '')) @@ -141,6 +142,8 @@ for r in res: # split into date ranges val_l1 = val_l2 = val_l3 = val_l4 = val_l5_above= 0 if r[col_idx[aging_based_on]]: + if getdate(to_date) > getdate(nowdate()): + to_date = nowdate() diff = (getdate(to_date) - getdate(r[col_idx[aging_based_on]])).days if diff < cint(filter_values['range_1']): val_l1 = outstanding_amt diff --git a/accounts/search_criteria/accounts_payable/accounts_payable.sql b/accounts/search_criteria/accounts_payable/accounts_payable.sql index cc7c199601..5e40683be8 100644 --- a/accounts/search_criteria/accounts_payable/accounts_payable.sql +++ b/accounts/search_criteria/accounts_payable/accounts_payable.sql @@ -1,4 +1,4 @@ -SELECT DISTINCT `tabGL Entry`.`Aging_date`,`tabGL Entry`.`transaction_date`,`tabGL Entry`.`account`, `tabGL Entry`.`against_voucher_type`, `tabGL Entry`.`against_voucher`,`tabGL Entry`.`voucher_type`,`tabGL Entry`.`voucher_no`, `tabGL Entry`.`remarks`, `tabGL Entry`.`credit` +SELECT DISTINCT `tabGL Entry`.`Aging_date`,`tabGL Entry`.`account`, `tabGL Entry`.`against_voucher_type`, `tabGL Entry`.`against_voucher`,`tabGL Entry`.`voucher_type`,`tabGL Entry`.`voucher_no`, `tabGL Entry`.`remarks`, `tabGL Entry`.`credit` FROM `tabGL Entry`,`tabAccount` WHERE `tabGL Entry`.`posting_date`>= '%(posting_date)s' AND `tabGL Entry`.`posting_date`<= '%(posting_date1)s' diff --git a/accounts/search_criteria/accounts_payable/accounts_payable.txt b/accounts/search_criteria/accounts_payable/accounts_payable.txt index 8cc99b3287..55ef6dd871 100644 --- a/accounts/search_criteria/accounts_payable/accounts_payable.txt +++ b/accounts/search_criteria/accounts_payable/accounts_payable.txt @@ -3,11 +3,11 @@ # These values are common in all dictionaries { - 'creation': '2012-04-03 12:49:50', - 'docstatus': 0, - 'modified': '2012-04-03 12:49:50', - 'modified_by': u'Administrator', - 'owner': u'Administrator' + u'creation': '2012-05-14 18:05:41', + u'docstatus': 0, + u'modified': '2012-10-17 10:51:41', + u'modified_by': u'Administrator', + u'owner': u'Administrator' }, # These values are common for all Search Criteria @@ -15,10 +15,11 @@ 'columns': u'GL Entry\x01Posting Date,GL Entry\x01Account,GL Entry\x01Against Voucher,GL Entry\x01Voucher No', 'criteria_name': u'Accounts Payable', 'doc_type': u'GL Entry', - 'doctype': 'Search Criteria', - 'filters': u"{'GL Entry\x01Is Cancelled':'','GL Entry\x01Fiscal Year':'','GL Entry\x01Company':'','Purchase Invoice\x01Aging Based On':'Posting Date','GL Entry\x01Range 1':'30','GL Entry\x01Range 2':'45','GL Entry\x01Range 3':'60','GL Entry\x01Range 4':'90'}", + u'doctype': u'Search Criteria', + 'filters': u'{"GL Entry\\u0001Voucher Type":[""],"GL Entry\\u0001Is Cancelled":[""],"GL Entry\\u0001Is Opening":[""],"GL Entry\\u0001Fiscal Year":[""],"Purchase Invoice\\u0001Aging Based On":["Aging Date"],"GL Entry\\u0001Range 1":"30","GL Entry\\u0001Range 2":"45","GL Entry\\u0001Range 3":"60","GL Entry\\u0001Range 4":"90"}', 'module': u'Accounts', - 'name': '__common__', + u'name': u'__common__', + 'page_len': 50, 'sort_by': u'`tabGL Entry`.`name`', 'sort_order': u'DESC', 'standard': u'Yes' @@ -26,7 +27,7 @@ # Search Criteria, accounts_payable { - 'doctype': 'Search Criteria', - 'name': u'accounts_payable' + u'doctype': u'Search Criteria', + u'name': u'accounts_payable' } ] \ No newline at end of file diff --git a/accounts/search_criteria/accounts_receivable/accounts_receivable.js b/accounts/search_criteria/accounts_receivable/accounts_receivable.js index 60df6c800b..e56b420f44 100644 --- a/accounts/search_criteria/accounts_receivable/accounts_receivable.js +++ b/accounts/search_criteria/accounts_receivable/accounts_receivable.js @@ -22,7 +22,7 @@ report.customize_filters = function() { this.filter_fields_dict['GL Entry'+FILTER_SEP +'To Posting Date'].df.filter_hide = 0; this.filter_fields_dict['GL Entry'+FILTER_SEP +'Account'].df.filter_hide = 0; - this.add_filter({fieldname:'aging_based_on', label:'Aging Based On', fieldtype:'Select', options:NEWLINE+'Transaction Date'+NEWLINE+'Aging Date'+NEWLINE+'Due Date',ignore : 1, parent:'Sales Invoice', report_default:'Aging Date'}); + this.add_filter({fieldname:'aging_based_on', label:'Aging Based On', fieldtype:'Select', options:NEWLINE+'Aging Date'+NEWLINE+'Due Date',ignore : 1, parent:'Sales Invoice', report_default:'Aging Date'}); this.add_filter({fieldname:'range_1', label:'Range 1', fieldtype:'Data', ignore : 1, parent:'GL Entry'}); this.add_filter({fieldname:'range_2', label:'Range 2', fieldtype:'Data', ignore : 1, parent:'GL Entry'}); this.add_filter({fieldname:'range_3', label:'Range 3', fieldtype:'Data', ignore : 1, parent:'GL Entry'}); @@ -33,6 +33,4 @@ report.customize_filters = function() { this.filter_fields_dict['GL Entry'+FILTER_SEP +'Company'].df['report_default']=sys_defaults.company; this.dt.set_no_limit(1); -} - -//this.mytabs.items['Select Columns'].hide() \ No newline at end of file +} \ No newline at end of file diff --git a/accounts/search_criteria/accounts_receivable/accounts_receivable.py b/accounts/search_criteria/accounts_receivable/accounts_receivable.py index 51259e69b8..aec749a1dd 100644 --- a/accounts/search_criteria/accounts_receivable/accounts_receivable.py +++ b/accounts/search_criteria/accounts_receivable/accounts_receivable.py @@ -8,142 +8,144 @@ # # 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 +# 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 . +# along with this program. If not, see . # Check mandatory filters #------------------------------ from __future__ import unicode_literals if not filter_values.get('posting_date') or not filter_values.get('posting_date1'): - msgprint("Please select From Posting Date and To Posting Date in 'Set Filters' section") - raise Exception + msgprint("Please select From Posting Date and To Posting Date in 'Set Filters' section") + raise Exception else: - from_date = filter_values.get('posting_date') - to_date = filter_values.get('posting_date1') + from_date = filter_values.get('posting_date') + to_date = filter_values.get('posting_date1') if not filter_values['range_1'] or not filter_values['range_2'] or not filter_values['range_3'] or not filter_values['range_4']: - msgprint("Please select aging ranges in no of days in 'Set Filters' section") - raise Exception + msgprint("Please select aging ranges in no of days in 'Set Filters' section") + raise Exception # validate Range range_list = ['range_1','range_2','range_3','range_4'] for r in range(len(range_list)-1): - if not cint(filter_values[range_list[r]]) < cint(filter_values[range_list[r + 1]]): - msgprint("Range %s should be less than Range %s." % (cstr(r+1),cstr(r+2))) - raise Exception + if not cint(filter_values[range_list[r]]) < cint(filter_values[range_list[r + 1]]): + msgprint("Range %s should be less than Range %s." % (cstr(r+1),cstr(r+2))) + raise Exception # Add columns # ----------- -data = [['Transaction Date','Date','80px',''], - ['Aging Date','Date','80px',''], - ['Account','Data','120px',''], - ['Against Voucher Type','Data','120px',''], - ['Against Voucher','Data','120px',''], - ['Voucher Type','Data','120px',''], - ['Voucher No','Data','120px',''], - ['Remarks','Data','160px',''], - ['Territory','Data','120px',''], - ['Due Date', 'Date', '80px', ''], - ['Opening Amt','Currency','120px',''], - ['Outstanding Amt','Currency','120px',''], - ['Age (Days)', 'Data', '60px', ''], - ['0-'+cstr(filter_values['range_1']),'Currency','100px',''], - [cstr(cint(filter_values['range_1']) + 1)+ '-' +cstr(filter_values['range_2']),'Currency','100px',''], - [cstr(cint(filter_values['range_2']) + 1)+ '-' +cstr(filter_values['range_3']),'Currency','100px',''], - [cstr(cint(filter_values['range_3']) + 1)+ '-' +cstr(filter_values['range_4']),'Currency','100px',''], - [cstr(filter_values['range_4']) + '-Above','Currency','100px','']] - +data = [['Aging Date','Date','80px',''], + ['Account','Data','120px',''], + ['Against Voucher Type','Data','120px',''], + ['Against Voucher','Data','120px',''], + ['Voucher Type','Data','120px',''], + ['Voucher No','Data','120px',''], + ['Remarks','Data','160px',''], + ['Territory','Data','120px',''], + ['Due Date', 'Date', '80px', ''], + ['Opening Amt','Currency','120px',''], + ['Outstanding Amt','Currency','120px',''], + ['Age (Days)', 'Data', '60px', ''], + ['0-'+cstr(filter_values['range_1']),'Currency','100px',''], + [cstr(cint(filter_values['range_1']) + 1)+ '-' +cstr(filter_values['range_2']),'Currency','100px',''], + [cstr(cint(filter_values['range_2']) + 1)+ '-' +cstr(filter_values['range_3']),'Currency','100px',''], + [cstr(cint(filter_values['range_3']) + 1)+ '-' +cstr(filter_values['range_4']),'Currency','100px',''], + [cstr(filter_values['range_4']) + '-Above','Currency','100px','']] + for d in data: - colnames.append(d[0]) - coltypes.append(d[1]) - colwidths.append(d[2]) - coloptions.append(d[3]) - col_idx[d[0]] = len(colnames)-1 - + colnames.append(d[0]) + coltypes.append(d[1]) + colwidths.append(d[2]) + coloptions.append(d[3]) + col_idx[d[0]] = len(colnames)-1 + # ageing based on aging_based_on = filter_values.get('aging_based_on') and filter_values['aging_based_on'].split(NEWLINE)[-1] or 'Aging Date' -if len(res) > 2000 and from_export == 0: - msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.Please select Account or click on 'Export' to open in excel") - raise Exception +if len(res) > 2000 and from_export == 0: + msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.Please select Account or click on 'Export' to open in excel") + raise Exception # ------------------------------------------------------------------ # main loop starts here # ------------------------------------------------------------------ +from webnotes.utils import nowdate out = [] total_opening_amt,total_outstanding_amt = 0,0 for r in res: - # get customer territory - terr = sql("select t1.territory from `tabCustomer` t1, `tabAccount` t2 where t1.name = t2.master_name and t2.name = '%s'" % r[col_idx['Account']]) - r.append(terr and terr[0][0] or '') - - outstanding_amt, opening_amt, cond, due_date = 0,0, '', '' - # if entry against Sales Invoice - if r[col_idx['Against Voucher']] and r[col_idx['Voucher Type']] == 'Sales Invoice': - # get due date - due_date = sql("select due_date from `tabSales Invoice` where name = '%s'" % r[col_idx['Against Voucher']]) - due_date = due_date and cstr(due_date[0][0]) or '' + # get customer territory + terr = sql("select t1.territory from `tabCustomer` t1, `tabAccount` t2 where t1.name = t2.master_name and t2.name = '%s'" % r[col_idx['Account']]) + r.append(terr and terr[0][0] or '') + + outstanding_amt, opening_amt, cond, due_date = 0,0, '', '' + # if entry against Sales Invoice + if r[col_idx['Against Voucher']] and r[col_idx['Voucher Type']] == 'Sales Invoice': + # get due date + due_date = sql("select due_date from `tabSales Invoice` where name = '%s'" % r[col_idx['Against Voucher']]) + due_date = due_date and cstr(due_date[0][0]) or '' - # get booking amt - opening_amt = sql("select debit from `tabGL Entry` where account = '%s' and voucher_no = '%s' and is_cancelled = 'No'" % (r[col_idx['Account']], r[col_idx['Voucher No']])) - opening_amt = opening_amt and flt(opening_amt[0][0]) or 0 + # get booking amt + opening_amt = sql("select debit from `tabGL Entry` where account = '%s' and voucher_no = '%s' and is_cancelled = 'No'" % (r[col_idx['Account']], r[col_idx['Voucher No']])) + opening_amt = opening_amt and flt(opening_amt[0][0]) or 0 - cond = "and against_voucher = '%s' and against_voucher is not null" % r[col_idx['Against Voucher']] + cond = "and against_voucher = '%s' and against_voucher is not null" % r[col_idx['Against Voucher']] - # if entry against JV & and not adjusted within period - elif r[col_idx['Against Voucher Type']] == 'Sales Invoice' and sql("select name from `tabSales Invoice` where name = '%s' and (posting_date < '%s' or posting_date > '%s') and docstatus = 1" % (r[col_idx['Against Voucher']], from_date, to_date)): - cond = " and voucher_no = '%s' and ifnull(against_voucher, '') = '%s'" % (r[col_idx['Voucher No']], r[col_idx['Against Voucher']]) - # if entry against JV and unadjusted - elif not r[col_idx['Against Voucher']]: - cond = " and ((voucher_no = '%s' and ifnull(against_voucher, '') = '') or (ifnull(against_voucher, '') = '%s' and voucher_type = 'Journal Voucher'))" % (r[col_idx['Voucher No']], r[col_idx['Voucher No']]) - - if cond: - outstanding_amt = flt(sql("select ifnull(sum(debit),0) - ifnull(sum(credit),0) from `tabGL Entry` where account = '%s' and ifnull(is_cancelled, 'No') = 'No' and posting_date <= '%s' %s" % (r[col_idx['Account']], to_date, cond))[0][0] or 0) - # add to total outstanding - total_outstanding_amt += flt(outstanding_amt) - # add to total booking amount - if outstanding_amt and r[col_idx['Voucher Type']] == 'Sales Invoice' and r[col_idx['Against Voucher']]: - total_opening_amt += flt(opening_amt) + # if entry against JV & and not adjusted within period + elif r[col_idx['Against Voucher Type']] == 'Sales Invoice' and sql("select name from `tabSales Invoice` where name = '%s' and (posting_date < '%s' or posting_date > '%s') and docstatus = 1" % (r[col_idx['Against Voucher']], from_date, to_date)): + cond = " and voucher_no = '%s' and ifnull(against_voucher, '') = '%s'" % (r[col_idx['Voucher No']], r[col_idx['Against Voucher']]) + # if entry against JV and unadjusted + elif not r[col_idx['Against Voucher']]: + cond = " and ((voucher_no = '%s' and ifnull(against_voucher, '') = '') or (ifnull(against_voucher, '') = '%s' and voucher_type = 'Journal Voucher'))" % (r[col_idx['Voucher No']], r[col_idx['Voucher No']]) + + if cond: + outstanding_amt = flt(sql("select ifnull(sum(debit),0) - ifnull(sum(credit),0) from `tabGL Entry` where account = '%s' and ifnull(is_cancelled, 'No') = 'No' and posting_date <= '%s' %s" % (r[col_idx['Account']], to_date, cond))[0][0] or 0) + # add to total outstanding + total_outstanding_amt += flt(outstanding_amt) + # add to total booking amount + if outstanding_amt and r[col_idx['Voucher Type']] == 'Sales Invoice' and r[col_idx['Against Voucher']]: + total_opening_amt += flt(opening_amt) - r += [due_date, opening_amt, outstanding_amt] + r += [due_date, opening_amt, outstanding_amt] - #Ageing Outstanding - val_l1 = val_l2 = val_l3 = val_l4 = val_l5_above = 0 - diff = 0 - if r[col_idx[aging_based_on]]: - diff = (getdate(to_date) - getdate(r[col_idx[aging_based_on]])).days - if diff < cint(filter_values['range_1']): - val_l1 = outstanding_amt - if diff >= cint(filter_values['range_1']) and diff < cint(filter_values['range_2']): - val_l2 = outstanding_amt - if diff >= cint(filter_values['range_2']) and diff < cint(filter_values['range_3']): - val_l3 = outstanding_amt - if diff >= cint(filter_values['range_3']) and diff < cint(filter_values['range_4']): - val_l4 = outstanding_amt - if diff >= cint(filter_values['range_4']): - val_l5_above = outstanding_amt - - r += [diff, val_l1, val_l2, val_l3, val_l4, val_l5_above] + #Ageing Outstanding + val_l1 = val_l2 = val_l3 = val_l4 = val_l5_above = 0 + diff = 0 + if r[col_idx[aging_based_on]]: + if getdate(to_date) > getdate(nowdate()): + to_date = nowdate() + diff = (getdate(to_date) - getdate(r[col_idx[aging_based_on]])).days + if diff < cint(filter_values['range_1']): + val_l1 = outstanding_amt + if diff >= cint(filter_values['range_1']) and diff < cint(filter_values['range_2']): + val_l2 = outstanding_amt + if diff >= cint(filter_values['range_2']) and diff < cint(filter_values['range_3']): + val_l3 = outstanding_amt + if diff >= cint(filter_values['range_3']) and diff < cint(filter_values['range_4']): + val_l4 = outstanding_amt + if diff >= cint(filter_values['range_4']): + val_l5_above = outstanding_amt + + r += [diff, val_l1, val_l2, val_l3, val_l4, val_l5_above] - # Only show that entry which has outstanding - if abs(flt(outstanding_amt)) > 0.001: - out.append(r) + # Only show that entry which has outstanding + if abs(flt(outstanding_amt)) > 0.001: + out.append(r) -if len(out) > 300 and from_export == 0: - msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.Please select Account or click on 'Export' to open in excel") - raise Exception +if len(out) > 300 and from_export == 0: + msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.Please select Account or click on 'Export' to open in excel") + raise Exception # Append Extra rows to RES if len(out) > 0: - t_row = ['' for i in range(len(colnames))] - t_row[col_idx['Voucher No']] = 'Total' - t_row[col_idx['Opening Amt']] = total_opening_amt - t_row[col_idx['Outstanding Amt']] = total_outstanding_amt - out.append(t_row) + t_row = ['' for i in range(len(colnames))] + t_row[col_idx['Voucher No']] = 'Total' + t_row[col_idx['Opening Amt']] = total_opening_amt + t_row[col_idx['Outstanding Amt']] = total_outstanding_amt + out.append(t_row) diff --git a/accounts/search_criteria/accounts_receivable/accounts_receivable.sql b/accounts/search_criteria/accounts_receivable/accounts_receivable.sql index 0a1da876a0..4aa134868d 100644 --- a/accounts/search_criteria/accounts_receivable/accounts_receivable.sql +++ b/accounts/search_criteria/accounts_receivable/accounts_receivable.sql @@ -1,4 +1,4 @@ -SELECT `tabGL Entry`.`transaction_date`,`tabGL Entry`.`aging_date`,`tabGL Entry`.`account`, `tabGL Entry`.`against_voucher_type`, `tabGL Entry`.`against_voucher`,`tabGL Entry`.`voucher_type`,`tabGL Entry`.`voucher_no`, `tabGL Entry`.remarks +SELECT `tabGL Entry`.`aging_date`,`tabGL Entry`.`account`, `tabGL Entry`.`against_voucher_type`, `tabGL Entry`.`against_voucher`,`tabGL Entry`.`voucher_type`,`tabGL Entry`.`voucher_no`, `tabGL Entry`.remarks FROM `tabGL Entry`,`tabAccount` WHERE `tabGL Entry`.`posting_date`>= '%(posting_date)s' AND `tabGL Entry`.`posting_date`<= '%(posting_date1)s'