diff --git a/addons/account/report/report_vat.py b/addons/account/report/report_vat.py index 236e2ffaac2..3a0950ac62f 100644 --- a/addons/account/report/report_vat.py +++ b/addons/account/report/report_vat.py @@ -19,6 +19,7 @@ # ############################################################################## +from openerp.osv import osv from openerp.addons.web import http from openerp.addons.web.http import request from common_report_header import common_report_header @@ -29,14 +30,12 @@ except ImportError: import xlwt -class tax_report(http.Controller, common_report_header): +class tax_report(osv.AbstractModel, common_report_header): + _name = 'report.account.report_vat' - @http.route(['/report/account.report_vat'], type='http', auth='user', website=True, multilang=True) - def report_account_tax(self, **data): + def render_html(self, cr, uid, ids, data=None, context=None): report_obj = request.registry['report'] - self.cr, self.uid, self.pool = request.cr, request.uid, request.registry - - data = report_obj.eval_params(data) + self.cr, self.uid, self.context = cr, uid, context res = {} self.period_ids = [] @@ -54,23 +53,23 @@ class tax_report(http.Controller, common_report_header): 'based_on': self._get_basedon(data), 'period_from': self.get_start_period(data), 'period_to': self.get_end_period(data), - 'taxlines': self._get_lines(self._get_basedon(data), company_id=data['form']['company_id']), + 'taxlines': self._get_lines(self._get_basedon(data), company_id=data['form']['company_id'], cr=cr, uid=uid), } - return request.registry['report'].render(self.cr, self.uid, [], 'account.report_vat', docargs) + return report_obj.render(self.cr, self.uid, [], 'account.report_vat', docargs, context=context) def _get_basedon(self, form): return form['form']['based_on'] - def _get_lines(self, based_on, company_id=False, parent=False, level=0, context=None): + def _get_lines(self, based_on, company_id=False, parent=False, level=0, context=None, cr=None, uid=None): period_list = self.period_ids - res = self._get_codes(based_on, company_id, parent, level, period_list, context=context) + res = self._get_codes(based_on, company_id, parent, level, period_list, cr=cr, uid=uid, context=context) if period_list: res = self._add_codes(based_on, res, period_list, context=context) else: - self.cr.execute ("select id from account_fiscalyear") - fy = self.cr.fetchall() - self.cr.execute ("select id from account_period where fiscalyear_id = %s",(fy[0][0],)) - periods = self.cr.fetchall() + cr.execute ("select id from account_fiscalyear") + fy = cr.fetchall() + cr.execute ("select id from account_period where fiscalyear_id = %s",(fy[0][0],)) + periods = cr.fetchall() for p in periods: period_list.append(p[0]) res = self._add_codes(based_on, res, period_list, context=context) @@ -90,7 +89,7 @@ class tax_report(http.Controller, common_report_header): } top_result.append(res_dict) - res_general = self._get_general(res[i][1].id, period_list, company_id, based_on, context=context) + res_general = self._get_general(res[i][1].id, period_list, company_id, based_on, cr=cr, uid=uid, context=context) ind_general = 0 while ind_general < len(res_general): res_general[ind_general]['type'] = 2 @@ -101,14 +100,14 @@ class tax_report(http.Controller, common_report_header): i+=1 return top_result - def _get_general(self, tax_code_id, period_list, company_id, based_on, context=None): + def _get_general(self, tax_code_id, period_list, company_id, based_on, cr=None, uid=None, context=None): if not self.display_detail: return [] res = [] obj_account = self.pool.get('account.account') periods_ids = tuple(period_list) if based_on == 'payments': - self.cr.execute('SELECT SUM(line.tax_amount) AS tax_amount, \ + cr.execute('SELECT SUM(line.tax_amount) AS tax_amount, \ SUM(line.debit) AS debit, \ SUM(line.credit) AS credit, \ COUNT(*) AS count, \ @@ -132,7 +131,7 @@ class tax_report(http.Controller, common_report_header): company_id, periods_ids, 'paid',)) else: - self.cr.execute('SELECT SUM(line.tax_amount) AS tax_amount, \ + cr.execute('SELECT SUM(line.tax_amount) AS tax_amount, \ SUM(line.debit) AS debit, \ SUM(line.credit) AS credit, \ COUNT(*) AS count, \ @@ -149,23 +148,21 @@ class tax_report(http.Controller, common_report_header): AND account.active \ GROUP BY account.id,account.name,account.code', ('draft', tax_code_id, company_id, periods_ids,)) - res = self.cr.dictfetchall() + res = cr.dictfetchall() i = 0 while i= int(accounts[bcl_rup_ind]['level']) and bcl_rup_ind >= 0 ): - res_tot = { 'code': accounts[bcl_rup_ind]['code'], + res_tot = { + 'code': accounts[bcl_rup_ind]['code'], 'name': '', 'debit': 0, 'credit': 0, @@ -229,25 +224,23 @@ class tax_report(http.Controller, common_report_header): return result_accounts + +class tax_report_xls(http.Controller): + @http.route(['/report/account.report_vat_xls'], type='http', auth='user', website=True, multilang=True) def report_account_tax_xls(self, **data): - report_obj = request.registry['report'] - self.cr, self.uid, self.pool = request.cr, request.uid, request.registry - data = report_obj.eval_params(data) + # Very ugly lines, only for the proof of concept of 'controller' report + taxreport_obj = request.registry['report.account.report_vat'] + from openerp.addons.report.controllers.main import ReportController + eval_params = ReportController()._eval_params - res = {} - self.period_ids = [] - period_obj = self.pool.get('account.period') - self.display_detail = data['form']['display_detail'] - res['periods'] = '' - res['fiscalyear'] = data['form'].get('fiscalyear_id', False) + cr, uid = request.cr, request.uid + data = eval_params(data) + data = {'form': data} - if data['form'].get('period_from', False) and data['form'].get('period_to', False): - self.period_ids = period_obj.build_ctx_periods(self.cr, self.uid, data['form']['period_from'], data['form']['period_to']) - - content = '' - lines = self._get_lines(self._get_basedon(data), company_id=data['form']['company_id']) + taxreport_obj.render_html(cr, uid, [], data=data) + lines = taxreport_obj._get_lines(taxreport_obj._get_basedon(data), company_id=data['form']['company_id'], cr=cr, uid=uid) if lines: xls = StringIO.StringIO() diff --git a/addons/account/wizard/account_report_aged_partner_balance_view.xml b/addons/account/wizard/account_report_aged_partner_balance_view.xml index be1d710c09d..09ae525c595 100644 --- a/addons/account/wizard/account_report_aged_partner_balance_view.xml +++ b/addons/account/wizard/account_report_aged_partner_balance_view.xml @@ -19,6 +19,7 @@ +