From d0a6dc07c7cdd79d347761ed2607875cfcc7a50b Mon Sep 17 00:00:00 2001 From: "psi (Open ERP)" Date: Thu, 26 May 2011 18:37:58 +0530 Subject: [PATCH] [IMP] hr_payroll: Change the layout of the contribution report, and improve it bzr revid: psi@tinyerp.co.in-20110526130758-97hntbczyskcjjg9 --- .../report/report_contribution_register.py | 14 +- .../report/report_contribution_register.rml | 166 +++++++++++++----- 2 files changed, 130 insertions(+), 50 deletions(-) diff --git a/addons/hr_payroll/report/report_contribution_register.py b/addons/hr_payroll/report/report_contribution_register.py index 8648132262c..8c952351c91 100644 --- a/addons/hr_payroll/report/report_contribution_register.py +++ b/addons/hr_payroll/report/report_contribution_register.py @@ -27,12 +27,14 @@ from datetime import datetime from dateutil import relativedelta from report import report_sxw +from tools.safe_eval import safe_eval as eval class contribution_register_report(report_sxw.rml_parse): def __init__(self, cr, uid, name, context): super(contribution_register_report, self).__init__(cr, uid, name, context) self.localcontext.update({ 'get_payslip_lines': self._get_payslip_lines, + 'sum_total': self.sum_total, }) def set_context(self, objects, data, ids, report_type=None): @@ -40,12 +42,16 @@ class contribution_register_report(report_sxw.rml_parse): self.date_to = data['form'].get('date_to', str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10]) return super(contribution_register_report, self).set_context(objects, data, ids, report_type=report_type) + def sum_total(self): + return self.regi_total + def _get_payslip_lines(self, obj): payslip_obj = self.pool.get('hr.payslip') payslip_line = self.pool.get('hr.payslip.line') + localdict = {} res = [] result = {} - + self.regi_total = 0.0 self.cr.execute("SELECT pl.id, pl.slip_id from hr_payslip_line as pl "\ "LEFT JOIN hr_payslip AS hp on (pl.slip_id = hp.id) "\ "WHERE (hp.date_from >= %s) AND (hp.date_to <= %s) "\ @@ -57,15 +63,15 @@ class contribution_register_report(report_sxw.rml_parse): result.setdefault(x[1], []) result[x[1]].append(x[0]) for key, value in result.iteritems(): - res.append({ - 'payslip_name': payslip_obj.browse(self.cr, self.uid, [key])[0].name, - }) for line in payslip_line.browse(self.cr, self.uid, value): res.append({ + 'payslip_name': payslip_obj.browse(self.cr, self.uid, [key])[0].name, 'name': line.name, 'code': line.code, 'total': line.total, + 'quantity': line.quantity }) + self.regi_total += line.total return res report_sxw.report_sxw('report.contribution.register.lines', 'hr.contribution.register', 'hr_payroll/report/report_contribution_register.rml', parser=contribution_register_report) diff --git a/addons/hr_payroll/report/report_contribution_register.rml b/addons/hr_payroll/report/report_contribution_register.rml index 67c9d1d787a..66949105387 100644 --- a/addons/hr_payroll/report/report_contribution_register.rml +++ b/addons/hr_payroll/report/report_contribution_register.rml @@ -14,22 +14,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + @@ -38,23 +58,36 @@ + + + + + - - - - - - - - - + + + + + + + + + - + + + + + + + + + @@ -83,66 +116,107 @@ - PaySlip Lines by Contribution Register + PaySlip Lines by Contribution Register - + - + - Register Name: [[o.name]] + - - - - + - PaySlip Name + + Register Name + - Code + Date From - Name + + Date To + + + + + + + + [[ o.name or '']] - Amount (in [[o.company_id and o.company_id.currency_id.symbol or '']]) + [[ data['form']['date_from'] or '']] + + + [[ data['form']['date_to'] or '' ]] + + + + + + + + + + + + + + PaySlip Name + + + Code + + + Name + + + Quantity + + + Amount
- [[repeatIn(get_payslip_lines(o),'r') ]] - + [[repeatIn(get_payslip_lines(o),'r') ]] + - [[ r.get('payslip_name', False) ]][[ r.get('payslip_name', False) and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]] + [[ r.get('payslip_name', False) ]][[ r.get('payslip_name', False) and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]] - [[ r['code'] ]] + [[ r['code'] ]] - [[ r['name'] ]] + [[ r['name'] ]] - [[ r['total'] or '0.0']] + [[ r['quantity'] ]] + + + [[ r['total'] or '0.0']] [[o.company_id and o.company_id.currency_id.symbol or '']]
- - - - - - - - - + + + + Total: + + + [[ sum_total() or 0.0]] [[o.company_id and o.company_id.currency_id.symbol or '']] + + +