diff --git a/addons/account/report/account_invoice_report_view.xml b/addons/account/report/account_invoice_report_view.xml
index 24723d7fb12..eebc95ae0e2 100644
--- a/addons/account/report/account_invoice_report_view.xml
+++ b/addons/account/report/account_invoice_report_view.xml
@@ -25,7 +25,7 @@
-
+
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 @@
+