From e3268061bec41493b7c51ed9c28bb5148e89b11a Mon Sep 17 00:00:00 2001 From: Mustufa Rangwala Date: Fri, 25 Jun 2010 18:48:49 +0530 Subject: [PATCH] [IMP] account: Account balance report change with osv memory (ref: SBH) bzr revid: mra@mra-laptop-20100625131849-e7v7urns302aaoia --- addons/account/report/account_balance.py | 30 ++-- .../account/wizard/account_balance_report.py | 131 ++++-------------- .../wizard/account_balance_report_view.xml | 131 +++++++----------- 3 files changed, 103 insertions(+), 189 deletions(-) diff --git a/addons/account/report/account_balance.py b/addons/account/report/account_balance.py index 93a09db9edf..8185ee0adab 100644 --- a/addons/account/report/account_balance.py +++ b/addons/account/report/account_balance.py @@ -56,8 +56,8 @@ class account_balance(report_sxw.rml_parse): return True def get_fiscalyear(self, form): res=[] - if form.has_key('fiscalyear'): - fisc_id = form['fiscalyear'] + if form.has_key('fiscalyear_id'): + fisc_id = form['fiscalyear_id'] if not (fisc_id): return '' self.cr.execute("select name from account_fiscalyear where id = %s" , (int(fisc_id),)) @@ -84,7 +84,7 @@ class account_balance(report_sxw.rml_parse): else: result+=r.name+", " - return str(result and result[:-1]) or '' + return str(result and result[:-1]) or 'ALL' def lines(self, form, ids={}, done=None, level=1): @@ -100,14 +100,27 @@ class account_balance(report_sxw.rml_parse): res={} result_acc=[] ctx = self.context.copy() - ctx['state'] = form['context'].get('state','all') - ctx['fiscalyear'] = form['fiscalyear'] - if form['state']=='byperiod' : + + ctx['fiscalyear'] = form['fiscalyear_id'] + if form['filter'] == 'filter_period': + periods = form['periods'] + if not periods: + sql = """ + Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.fiscalyear_id = %s + """ + sqlargs = (form['fiscalyear'],) + else: + sql = """ + Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.id in %s + """ + sqlargs = (tuple(periods),) + self.cr.execute(sql, sqlargs) + res = self.cr.dictfetchall() ctx['periods'] = form['periods'] - elif form['state']== 'bydate': + elif form['filter'] == 'filter_date': ctx['date_from'] = form['date_from'] ctx['date_to'] = form['date_to'] - elif form['state'] == 'all' : + elif form['filter'] == 'filter_no' : ctx['periods'] = form['periods'] ctx['date_from'] = form['date_from'] ctx['date_to'] = form['date_to'] @@ -115,6 +128,7 @@ class account_balance(report_sxw.rml_parse): # def cmp_code(x, y): # return cmp(x.code, y.code) # accounts.sort(cmp_code) + child_ids = self.pool.get('account.account')._get_children_and_consol(self.cr, self.uid, ids, ctx) if child_ids: ids = child_ids diff --git a/addons/account/wizard/account_balance_report.py b/addons/account/wizard/account_balance_report.py index 5d02f9fa972..30864d2c734 100644 --- a/addons/account/wizard/account_balance_report.py +++ b/addons/account/wizard/account_balance_report.py @@ -24,115 +24,42 @@ from osv import osv, fields from tools.translate import _ class account_balance_report(osv.osv_memory): - """ - This wizard will provide the account balance report by periods, between any two dates. - """ + + _inherit = "account.common.report" _name = 'account.balance.report' _description = 'Account Balance Report' _columns = { - 'Account_list': fields.many2one('account.account', 'Chart account', - required=True, domain = [('parent_id','=',False)]), - 'company_id': fields.many2one('res.company', 'Company', required=True), - 'display_account': fields.selection([('bal_mouvement','With movements'), + 'company_id': fields.many2one('res.company', 'Company', required=True), + 'display_account': fields.selection([('bal_mouvement','With movements'), ('bal_all','All'), ('bal_solde','With balance is not equal to 0'), ],'Display accounts'), - 'fiscalyear': fields.many2one('account.fiscalyear', 'Fiscal year', help='Keep empty for all open fiscal year'), - 'state': fields.selection([('bydate','By Date'), - ('byperiod','By Period'), - ('all','By Date and Period'), - ('none','No Filter') - ],'Date/Period Filter'), - 'periods': fields.many2many('account.period', 'period_account_balance_rel', - 'report_id', 'period_id', 'Periods', - help='Keep empty for all open fiscal year'), - 'date_from': fields.date('Start date', required=True), - 'date_to': fields.date('End date', required=True), - } + } - def _get_company(self, cr, uid, context=None): - user_obj = self.pool.get('res.users') - company_obj = self.pool.get('res.company') - user = user_obj.browse(cr, uid, uid, context=context) - if user.company_id: - return user.company_id.id + + def default_get(self, cr, uid, fields, context): + """ To get default values for the object. + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param fields: List of fields for which we want default values + @param context: A standard dictionary + @return: A dictionary which of fields with values. + """ + res = {} + if 'journal_ids' in fields: + res['journal_ids'] = [] + return res else: - return company_obj.search(cr, uid, [('parent_id', '=', False)])[0] + result = super(account_balance_report, self).default_get(cr, uid, fields, context) + result.update({'company_id':self.pool.get('account.account').read(cr, uid, result['chart_account_id'], context=context)['company_id']}) + return result - _defaults={ - 'state' : 'none', - 'date_from' : time.strftime('%Y-01-01'), - 'date_to' : time.strftime('%Y-%m-%d'), - 'company_id' : _get_company, - 'fiscalyear' : False, - 'display_account': 'bal_all', - } + def _print_report(self, cr, uid, ids, data, query_line, context=None): - def next_view(self, cr, uid, ids, context=None): - obj_model = self.pool.get('ir.model.data') - if context is None: - context = {} - data = self.read(cr, uid, ids, [])[0] - context.update({'Account_list': data['Account_list']}) - model_data_ids = obj_model.search(cr,uid,[('model','=','ir.ui.view'),('name','=','account_balance_report_view')]) - resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'])[0]['res_id'] - return { - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'account.balance.report', - 'views': [(resource_id,'form')], - 'type': 'ir.actions.act_window', - 'target': 'new', - 'context': context - } - - def check_state(self, cr, uid, ids, context=None): - if context is None: - context = {} - data={} - data['ids'] = context['active_ids'] - data['form'] = self.read(cr, uid, ids, ['date_from', 'company_id', 'state', 'periods', 'date_to', 'display_account', 'fiscalyear'])[0] - data['form']['Account_list'] = context.get('Account_list',[]) - data['form']['context'] = context - if data['form']['Account_list']: - data['model'] = 'ir.ui.menu' - else: - data['model'] = 'account.account' - - if data['form']['state'] == 'bydate' : - return self._check_date(cr, uid, data, context) - elif data['form']['state'] == 'byperiod': - if not data['form']['periods']: - raise osv.except_osv(_('Warning'),_('Please Enter Periods ! ')) - - return { - 'type': 'ir.actions.report.xml', - 'report_name': 'account.account.balance', - 'datas': data, - 'nodestroy':True, - } - - def _check_date(self, cr, uid, data, context=None): - if context is None: - context = {} - sql = """ - SELECT f.id, f.date_start, f.date_stop FROM account_fiscalyear f Where %s between f.date_start and f.date_stop """ - cr.execute(sql, (data['form']['date_from'],)) - res = cr.dictfetchall() - if res: - - if (data['form']['date_to'] > res[0]['date_stop'] or data['form']['date_to'] < res[0]['date_start']): - raise osv.except_osv(_('UserError'),_('Date to must be set between %s and %s') % (res[0]['date_start'], res[0]['date_stop'])) - else: - return { - 'type': 'ir.actions.report.xml', - 'report_name': 'account.account.balance', - 'datas': data, - 'nodestroy':True, - } - else: - raise osv.except_osv(_('UserError'),_('Date not in a defined fiscal year')) - -account_balance_report() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + if data['model']=='ir.ui.menu': + data['ids']=data['form']['chart_account_id'] + data['form'].update(self.read(cr, uid, ids, ['display_account', 'company_id',])[0]) + data['form']['query_get'] = query_line + return { 'type': 'ir.actions.report.xml', 'report_name': 'account.account.balance', 'datas': data, 'nodestroy':True, } +account_balance_report() \ No newline at end of file diff --git a/addons/account/wizard/account_balance_report_view.xml b/addons/account/wizard/account_balance_report_view.xml index f50cce039cc..4b94d458383 100644 --- a/addons/account/wizard/account_balance_report_view.xml +++ b/addons/account/wizard/account_balance_report_view.xml @@ -1,93 +1,66 @@ - + - - Select period - account.balance.report - form - -
- - - - -