From ccd168a55d0fe1f3a9262da0642d14573bc3b570 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Wed, 17 Sep 2008 18:27:57 +0530 Subject: [PATCH] Committed: third_party_ledger reports formated... account/report/third_party_ledger.py* account/report/third_party_ledger.rml* account/wizard/wizard_third_party_ledger.py* bzr revid: patelamit2003@gmail.com-20080917125757-5a1bzt9ymsthzwkc --- addons/account/report/third_party_ledger.py | 517 +++++++++++++----- addons/account/report/third_party_ledger.rml | 353 ++++++------ .../wizard/wizard_third_party_ledger.py | 160 ++++-- 3 files changed, 663 insertions(+), 367 deletions(-) mode change 100644 => 100755 addons/account/report/third_party_ledger.py mode change 100644 => 100755 addons/account/report/third_party_ledger.rml mode change 100644 => 100755 addons/account/wizard/wizard_third_party_ledger.py diff --git a/addons/account/report/third_party_ledger.py b/addons/account/report/third_party_ledger.py old mode 100644 new mode 100755 index bf060555e7e..fa1b73944cd --- a/addons/account/report/third_party_ledger.py +++ b/addons/account/report/third_party_ledger.py @@ -1,9 +1,6 @@ -# -*- encoding: utf-8 -*- ############################################################################## # -# Copyright (c) 2004-2008 TINY SPRL. (http://tiny.be) All Rights Reserved. -# -# $Id$ +# Copyright (c) 2005-2006 TINY SPRL. (http://tiny.be) All Rights Reserved. # # WARNING: This program as such is intended to be used by professional # programmers who take the whole responsability of assessing all potential @@ -30,153 +27,387 @@ import pooler import time +import re + +import datetime from report import report_sxw class third_party_ledger(report_sxw.rml_parse): - def __init__(self, cr, uid, name, context): - super(third_party_ledger, self).__init__(cr, uid, name, context) - self.localcontext.update( { - 'time': time, - 'lines': self.lines, - 'sum_debit_partner': self._sum_debit_partner, - 'sum_credit_partner': self._sum_credit_partner, - 'sum_debit': self._sum_debit, - 'sum_credit': self._sum_credit, - 'get_company': self._get_company, - 'get_currency': self._get_currency, - }) + def __init__(self, cr, uid, name, context): + self.date_lst = [] + self.date_lst_string = '' + super(third_party_ledger, self).__init__(cr, uid, name, context) + self.localcontext.update( { + 'time': time, + 'lines': self.lines, + 'sum_debit_partner': self._sum_debit_partner, + 'sum_credit_partner': self._sum_credit_partner, + 'sum_debit': self._sum_debit, + 'sum_credit': self._sum_credit, + 'get_company': self._get_company, + 'get_currency': self._get_currency, + 'comma_me' : self.comma_me, + }) + def date_range(self,start,end): + start = datetime.date.fromtimestamp(time.mktime(time.strptime(start,"%Y-%m-%d"))) + end = datetime.date.fromtimestamp(time.mktime(time.strptime(end,"%Y-%m-%d"))) + full_str_date = [] + # + r = (end+datetime.timedelta(days=1)-start).days + # + date_array = [start+datetime.timedelta(days=i) for i in range(r)] + for date in date_array: + full_str_date.append(str(date)) + return full_str_date + + # + def transform_period_into_date_array(self,data): + ## Get All Period Date + + if not data['form']['periods'][0][2] : + periods_id = self.pool.get('account.period').search(self.cr, self.uid, [('fiscalyear_id','=',data['form']['fiscalyear'])]) + + else: + periods_id = data['form']['periods'][0][2] + + date_array = [] + for period_id in periods_id: + period_obj = self.pool.get('account.period').browse(self.cr, self.uid, period_id) + date_array = date_array + self.date_range(period_obj.date_start,period_obj.date_stop) + + self.date_lst = date_array + print"self.date_lst[len(self.date_lst)-1]",self.date_lst[len(self.date_lst)-1] + self.date_lst.sort() + + + def transform_date_into_date_array(self,data): + + return_array = self.date_range(data['form']['date1'],data['form']['date2']) + self.date_lst = return_array + + self.date_lst.sort() - def preprocess(self, objects, data, ids): - account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') - line_query = account_move_line_obj._query_get(self.cr, self.uid, obj='line', - context={'fiscalyear': data['form']['fiscalyear'],'state':data['form']['state']}) - self.cr.execute( - "SELECT DISTINCT line.partner_id " \ - "FROM account_move_line AS line, account_account AS account " \ - "WHERE line.partner_id IS NOT NULL " \ - "AND line.date >= %s " \ - "AND line.date <= %s " \ - "AND " + line_query + " " \ - "AND line.account_id = account.id " \ - "AND account.company_id = %d " \ - "AND account.active", - (data['form']['date1'], data['form']['date2'], - data['form']['company_id'])) - new_ids = [id for (id,) in self.cr.fetchall()] - self.cr.execute( - "SELECT a.id " \ - "FROM account_account a " \ - "LEFT JOIN account_account_type t " \ - "ON (a.type=t.code) " \ - "WHERE t.partner_account=TRUE " \ - "AND a.company_id = %d " \ - "AND a.active", (data['form']['company_id'],)) - self.account_ids = ','.join([str(a) for (a,) in self.cr.fetchall()]) - self.partner_ids = ','.join(map(str, new_ids)) - objects = self.pool.get('res.partner').browse(self.cr, self.uid, new_ids) - super(third_party_ledger, self).preprocess(objects, data, new_ids) + def comma_me(self,amount): + if type(amount) is float : + amount = str('%.2f'%amount) + else : + amount = str(amount) + if (amount == '0'): + return ' ' + orig = amount + new = re.sub("^(-?\d+)(\d{3})", "\g<1>'\g<2>", amount) + + if orig == new: + return new + else: + return self.comma_me(new) + def special_map(self): + string_map = '' + for date_string in self.date_lst: + string_map = date_string + ',' + return string_map + + def preprocess(self, objects, data, ids): + print"====objects====",objects + for o in objects: + print o.id + PARTNER_REQUEST = '' + if (data['model'] == 'res.partner'): + print"data['model']",data['model'] + ## Si on imprime depuis les partenaires + if ids: + print"ids",ids + PARTNER_REQUEST = "AND line.partner_id IN (" + ','.join(map(str, ids)) + ")" + print"PARTNER_REQUEST",PARTNER_REQUEST + # Transformation des date + # + # + if data['form'].has_key('fiscalyear'): + self.transform_period_into_date_array(data) + else: + self.transform_date_into_date_array(data) + ## + self.date_lst_string = '\'' + '\',\''.join(map(str,self.date_lst)) + '\'' + # + #new_ids = [id for (id,) in self.cr.fetchall()] + if data['form']['result_selection'] == 'supplier': + ACCOUNT_TYPE = "AND a.type='payable' " + elif data['form']['result_selection'] == 'customer': + ACCOUNT_TYPE = "AND a.type='receivable' " + elif data['form']['result_selection'] == 'all': + ACCOUNT_TYPE = "AND (a.type='receivable' OR a.type='payable') " - def lines(self, partner): - account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') - line_query = account_move_line_obj._query_get(self.cr, self.uid, obj='l', - context={'fiscalyear': self.datas['form']['fiscalyear'],'state':self.datas['form']['state']}) - self.cr.execute( - "SELECT l.date, j.code, l.ref, l.name, l.debit, l.credit " \ - "FROM account_move_line l " \ - "LEFT JOIN account_journal j " \ - "ON (l.journal_id = j.id) " \ - "WHERE l.partner_id = %d " \ - "AND l.account_id IN (" + self.account_ids + ") " \ - "AND l.date >= %s " \ - "AND l.date <= %s " - "AND " + line_query + " " \ - "ORDER BY l.id", - (partner.id, self.datas['form']['date1'], self.datas['form']['date2'])) - res = self.cr.dictfetchall() - sum = 0.0 - for r in res: - sum += r['debit'] - r['credit'] - r['progress'] = sum - return res + self.cr.execute( + "SELECT a.id " \ + "FROM account_account a " \ + "LEFT JOIN account_account_type t " \ + "ON (a.type=t.code) " \ + "WHERE t.partner_account=TRUE " \ + "AND a.company_id = %d " \ + " " + ACCOUNT_TYPE + " " \ + "AND a.active", (data['form']['company_id'],)) + self.account_ids = ','.join([str(a) for (a,) in self.cr.fetchall()]) - def _sum_debit_partner(self, partner): - account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') - line_query = account_move_line_obj._query_get(self.cr, self.uid, - obj='account_move_line', - context={'fiscalyear': self.datas['form']['fiscalyear'],'state':self.datas['form']['state']}) - self.cr.execute( - "SELECT sum(debit) " \ - "FROM account_move_line " \ - "WHERE partner_id = %d " \ - "AND account_id IN (" + self.account_ids + ") " \ - "AND date >= %s " \ - "AND date <= %s " \ - "AND " + line_query, - (partner.id, self.datas['form']['date1'], self.datas['form']['date2'])) - return self.cr.fetchone()[0] or 0.0 - - def _sum_credit_partner(self, partner): - account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') - line_query = account_move_line_obj._query_get(self.cr, self.uid, - obj='account_move_line', - context={'fiscalyear': self.datas['form']['fiscalyear'],'state':self.datas['form']['state']}) - self.cr.execute( - "SELECT sum(credit) " \ - "FROM account_move_line " \ - "WHERE partner_id=%d " \ - "AND account_id IN (" + self.account_ids + ") " \ - "AND date >= %s " \ - "AND date <= %s " \ - "AND " + line_query, - (partner.id, self.datas["form"]["date1"], self.datas["form"]["date2"])) - return self.cr.fetchone()[0] or 0.0 - - def _sum_debit(self): - if not self.ids: - return 0.0 - account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') - line_query = account_move_line_obj._query_get(self.cr, self.uid, - obj='account_move_line', - context={'fiscalyear': self.datas['form']['fiscalyear'],'state':self.datas['form']['state']}) - self.cr.execute( - "SELECT sum(debit) " \ - "FROM account_move_line " \ - "WHERE partner_id IN (" + self.partner_ids + ") " \ - "AND account_id IN (" + self.account_ids + ") " \ - "AND date >= %s " \ - "AND date <= %s " \ - "AND " + line_query, - (self.datas['form']['date1'], self.datas['form']['date2'])) - return self.cr.fetchone()[0] or 0.0 - - def _sum_credit(self): - if not self.ids: - return 0.0 - account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') - line_query = account_move_line_obj._query_get(self.cr, self.uid, - obj='account_move_line', - context={'fiscalyear': self.datas['form']['fiscalyear'],'state':self.datas['form']['state']}) - self.cr.execute( - "SELECT sum(credit) " \ - "FROM account_move_line " \ - "WHERE partner_id IN (" + self.partner_ids + ") " \ - "AND account_id IN (" + self.account_ids + ") " \ - "AND date >= %s " \ - "AND date <= %s " \ - "AND " + line_query, - (self.datas['form']['date1'], self.datas['form']['date2'])) - return self.cr.fetchone()[0] or 0.0 + account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') + partner_to_use = [] + print"self.account_ids",self.account_ids + + if data['form']['soldeinit'] : + self.cr.execute( + "SELECT DISTINCT line.partner_id " \ + "FROM account_move_line AS line, account_account AS account " \ + "WHERE line.partner_id IS NOT NULL " \ + "AND line.account_id = account.id " \ + "AND line.date < %s " \ + "AND line.reconcile_id IS NULL " \ +# "AND line.account_id IN (" + self.account_ids + ") " \ + " " + PARTNER_REQUEST + " " \ + "AND account.company_id = %d " \ + "AND account.active " , + (self.date_lst[len(self.date_lst)-1],data['form']['company_id'])) + else: + self.cr.execute( + "SELECT DISTINCT line.partner_id " \ + "FROM account_move_line AS line, account_account AS account " \ + "WHERE line.partner_id IS NOT NULL " \ + "AND line.account_id = account.id " \ + "AND line.date IN (" + self.date_lst_string + ") " \ +# "AND line.account_id IN (" + self.account_ids + ") " \ + " " + PARTNER_REQUEST + " " \ + "AND account.company_id = %d " \ + "AND account.active " , + (data['form']['company_id'])) + res = self.cr.dictfetchall() + print"===res===",res + for res_line in res: + partner_to_use.append(res_line['partner_id']) + print"====partner_to_use====",partner_to_use + res = self.cr.dictfetchall() + + for res_line in res: + partner_to_use.append(res_line['partner_id']) + print"====partner_to_use====",partner_to_use - def _get_company(self, form): - return pooler.get_pool(self.cr.dbname).get('res.company').browse(self.cr, self.uid, form['company_id']).name - def _get_currency(self, form): - return pooler.get_pool(self.cr.dbname).get('res.company').browse(self.cr, self.uid, form['company_id']).currency_id.name + new_ids = partner_to_use + print"new_ids",new_ids + self.partner_ids = ','.join(map(str, new_ids)) + objects = self.pool.get('res.partner').browse(self.cr, self.uid, new_ids) + print"objects",objects + super(third_party_ledger, self).preprocess(objects, data, new_ids) + def lines(self, partner,data): + print"====partner====",partner + account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') + full_account = [] + if data['form']['reconcil'] : + RECONCILE_TAG = " " + else: + RECONCILE_TAG = "AND l.reconcile_id IS NULL" + if data['form']['soldeinit'] : + self.cr.execute( + "SELECT l.id,l.date,j.code, l.ref, l.name, l.debit, l.credit " \ + "FROM account_move_line l " \ + "LEFT JOIN account_journal j " \ + "ON (l.journal_id = j.id) " \ + "WHERE l.partner_id = %d " \ + "AND l.account_id IN (" + self.account_ids + ") " \ + "AND l.date < %s " \ + "AND l.reconcile_id IS NULL " + "ORDER BY l.id", + (partner.id, self.date_lst[0])) + res = self.cr.dictfetchall() + sum = 0.0 + for r in res: + sum = r['debit'] - r['credit'] + r['progress'] = sum + full_account.append(r) + + self.cr.execute( + "SELECT l.id,l.date,j.code, l.ref, l.name, l.debit, l.credit " \ + "FROM account_move_line l " \ + "LEFT JOIN account_journal j " \ + "ON (l.journal_id = j.id) " \ + "WHERE l.partner_id = %d " \ + "AND l.account_id IN (" + self.account_ids + ") " \ + "AND l.date IN (" + self.date_lst_string + ") " \ + " " + RECONCILE_TAG + " "\ + "ORDER BY l.id", + (partner.id,)) + res = self.cr.dictfetchall() + sum = 0.0 + for r in res: + sum = r['debit'] - r['credit'] + r['progress'] = sum + full_account.append(r) + + return full_account + + def _sum_debit_partner(self, partner,data): + account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') + result_tmp = 0.0 + if data['form']['reconcil'] : + RECONCILE_TAG = " " + else: + RECONCILE_TAG = "AND reconcile_id IS NULL" + if data['form']['soldeinit'] : + self.cr.execute( + "SELECT sum(debit) " \ + "FROM account_move_line " \ + "WHERE partner_id = %d " \ + "AND account_id IN (" + self.account_ids + ") " \ + "AND reconcile_id IS NULL " \ + "AND date < %s " , + (partner.id, self.date_lst[0],)) + contemp = self.cr.fetchone() + if contemp != None: + result_tmp = contemp[0] or 0.0 + else: + result_tmp = result_tmp + 0.0 + + + self.cr.execute( + "SELECT sum(debit) " \ + "FROM account_move_line " \ + "WHERE partner_id = %d " \ + "AND account_id IN (" + self.account_ids + ") " \ + " " + RECONCILE_TAG + " " \ + "AND date IN (" + self.date_lst_string + ") " , + (partner.id,)) + + contemp = self.cr.fetchone() + if contemp != None: + result_tmp = contemp[0] or 0.0 + else: + result_tmp = result_tmp + 0.0 + return result_tmp + + def _sum_credit_partner(self, partner,data): + account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') + result_tmp = 0.0 + if data['form']['reconcil'] : + RECONCILE_TAG = " " + else: + RECONCILE_TAG = "AND reconcile_id IS NULL" + if data['form']['soldeinit'] : + self.cr.execute( + "SELECT sum(credit) " \ + "FROM account_move_line " \ + "WHERE partner_id=%d " \ + "AND account_id IN (" + self.account_ids + ") " \ + "AND reconcile_id IS NULL " \ + "AND date < %s " , + (partner.id,self.date_lst[0],)) + contemp = self.cr.fetchone() + if contemp != None: + result_tmp = contemp[0] or 0.0 + else: + result_tmp = result_tmp + 0.0 + + self.cr.execute( + "SELECT sum(credit) " \ + "FROM account_move_line " \ + "WHERE partner_id=%d " \ + "AND account_id IN (" + self.account_ids + ") " \ + " " + RECONCILE_TAG + " " \ + "AND date IN (" + self.date_lst_string + ") " , + (partner.id,)) + + contemp = self.cr.fetchone() + if contemp != None: + result_tmp = contemp[0] or 0.0 + else: + result_tmp = result_tmp + 0.0 + return result_tmp + + def _sum_debit(self,data): + if not self.ids: + return 0.0 + account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') + result_tmp = 0.0 + if data['form']['reconcil'] : + RECONCILE_TAG = " " + else: + RECONCILE_TAG = "AND reconcile_id IS NULL" + if data['form']['soldeinit'] : + self.cr.execute( + "SELECT sum(debit) " \ + "FROM account_move_line " \ + "WHERE partner_id IN (" + self.partner_ids + ") " \ + "AND account_id IN (" + self.account_ids + ") " \ + "AND reconcile_id IS NULL " \ + "AND date < %s " , + (self.date_lst[0],)) + contemp = self.cr.fetchone() + if contemp != None: + result_tmp = contemp[0] or 0.0 + else: + result_tmp = result_tmp + 0.0 + + self.cr.execute( + "SELECT sum(debit) " \ + "FROM account_move_line " \ + "WHERE partner_id IN (" + self.partner_ids + ") " \ + "AND account_id IN (" + self.account_ids + ") " \ + " " + RECONCILE_TAG + " " \ + "AND date IN (" + self.date_lst_string + ") " + ) + + contemp = self.cr.fetchone() + if contemp != None: + result_tmp = contemp[0] or 0.0 + else: + result_tmp = result_tmp + 0.0 + + return result_tmp + + + def _sum_credit(self,data): + if not self.ids: + return 0.0 + account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line') + result_tmp = 0.0 + if data['form']['reconcil'] : + RECONCILE_TAG = " " + else: + RECONCILE_TAG = "AND reconcile_id IS NULL" + if data['form']['soldeinit'] : + self.cr.execute( + "SELECT sum(credit) " \ + "FROM account_move_line " \ + "WHERE partner_id IN (" + self.partner_ids + ") " \ + "AND account_id IN (" + self.account_ids + ") " \ + "AND reconcile_id IS NULL " \ + "AND date < %s " , + (self.date_lst[0],)) + contemp = self.cr.fetchone() + if contemp != None: + result_tmp = contemp[0] or 0.0 + else: + result_tmp = result_tmp + 0.0 + self.cr.execute( + "SELECT sum(credit) " \ + "FROM account_move_line " \ + "WHERE partner_id IN (" + self.partner_ids + ") " \ + "AND account_id IN (" + self.account_ids + ") " \ + " " + RECONCILE_TAG + " " \ + "AND date IN (" + self.date_lst_string + ") " + ) + contemp = self.cr.fetchone() + if contemp != None: + result_tmp = contemp[0] or 0.0 + else: + result_tmp = result_tmp + 0.0 + + return result_tmp + + def _get_company(self, form): + return pooler.get_pool(self.cr.dbname).get('res.company').browse(self.cr, self.uid, form['company_id']).name + + def _get_currency(self, form): + return pooler.get_pool(self.cr.dbname).get('res.company').browse(self.cr, self.uid, form['company_id']).currency_id.name + report_sxw.report_sxw('report.account.third_party_ledger', 'res.partner', - 'addons/account/report/third_party_ledger.rml',parser=third_party_ledger, - header=False) - - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + 'addons/account/third_party_ledger.rml',parser=third_party_ledger, + header=2) diff --git a/addons/account/report/third_party_ledger.rml b/addons/account/report/third_party_ledger.rml old mode 100644 new mode 100755 index a44bbb4f2ca..2f7d0bf82e9 --- a/addons/account/report/third_party_ledger.rml +++ b/addons/account/report/third_party_ledger.rml @@ -3,6 +3,34 @@ @@ -13,227 +41,188 @@ - - - - - - + + + + + + - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + Third Party Ledger + + + + + [[ data['form']['page_split'] == True or removeParentNode('para') ]] + [[ repeatIn(objects, 'p') ]] + + + + + Date + + + JNRL + + + Ref. + + + Entry label + + + Debit + + + Credit + + + Balance + + + + + + + - - - + Balance brought forward - Third party ledger + [[ (sum_debit(data)) ]] - From [[ formatLang(data['form']['date1'], date=True) ]] - to [[ formatLang(data['form']['date2'], date=True) ]] - - - - - [[ get_company(data['form']) ]] + [[ (sum_credit(data)) ]] - Complete - - - Currency: [[ get_currency(data['form']) ]] + [[ (sum_debit(data) - sum_credit(data)) ]] - - - - Printing date: [[ formatLang(time.strftime('%Y-%m-%d'), date=True) ]] at [[ time.strftime('%H:%M:%S') ]] - - - - - - - Date - - - J. code - - - Voucher Nb - - - Entry label - - - Debit - - - Credit - - - Progressive balance - - - - - - -
- [[ repeatIn(objects, 'p') ]] - [[ p.ref ]] [[ p.name ]] - + + + + [[ repeatIn(objects, 'p') ]] + + + - [[ repeatIn(lines(p), 'line') ]][[ formatLang(line['date'], date=True) ]] + [[ p.ref ]] - [[ p.name ]] + + + + + + + [[ (sum_debit_partner(p,data)) ]] - [[ line['code'] ]] + [[ (sum_credit_partner(p,data)) ]] - [[ line['ref'] ]] - - - [[ line['name'] ]] - - - [[ formatLang(line['debit']) ]] - - - [[ formatLang(line['credit']) ]] - - - [[ formatLang(line['progress']) ]] + [[ (sum_debit_partner(p,data) - sum_credit_partner(p,data)) ]] - - - - Total for [[ p.ref ]] - - - - - - [[ formatLang(sum_debit_partner(p)) ]] - - - [[ formatLang(sum_credit_partner(p)) ]] - - - [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p))) ]] - - - - - - -
- - - - - - - Balance brought forward - - - [[ formatLang(sum_debit()) ]] - - - [[ formatLang(sum_credit()) ]] - - - [[ formatLang((sum_debit() - sum_credit())) ]] - - - - - - + + + + + + [[ repeatIn(lines(p,data), 'line') ]][[ line['date'] ]] + + + [[ line['code'] ]] + + + [[ line['ref'] ]] + + + [[ line['name'] ]] + + + [[ (line['debit']) or '' ]] + + + [[ (line['credit']) or '' ]] + + + [[ (line['progress']) or '' ]] + + + + + + + +
- diff --git a/addons/account/wizard/wizard_third_party_ledger.py b/addons/account/wizard/wizard_third_party_ledger.py old mode 100644 new mode 100755 index 2c64c8f1df2..e9f2daf4b01 --- a/addons/account/wizard/wizard_third_party_ledger.py +++ b/addons/account/wizard/wizard_third_party_ledger.py @@ -1,9 +1,6 @@ -# -*- encoding: utf-8 -*- ############################################################################## # -# Copyright (c) 2004-2008 TINY SPRL. (http://tiny.be) All Rights Reserved. -# -# $Id$ +# Copyright (c) 2005-2006 TINY SPRL. (http://tiny.be) All Rights Reserved. # # WARNING: This program as such is intended to be used by professional # programmers who take the whole responsability of assessing all potential @@ -32,54 +29,133 @@ import time import wizard import pooler + +report_type = ''' +
+
''' + + dates_form = '''
- - -