diff --git a/addons/hr_payroll/hr_payroll_view.xml b/addons/hr_payroll/hr_payroll_view.xml index f7d95c572e8..03f3adbe2d1 100644 --- a/addons/hr_payroll/hr_payroll_view.xml +++ b/addons/hr_payroll/hr_payroll_view.xml @@ -248,7 +248,7 @@ - + diff --git a/addons/hr_payroll/report/report_payslip.rml b/addons/hr_payroll/report/report_payslip.rml index 010f2b968a0..b2082613bba 100644 --- a/addons/hr_payroll/report/report_payslip.rml +++ b/addons/hr_payroll/report/report_payslip.rml @@ -100,31 +100,20 @@ - - - - - - - - - - - - - - - - + + + + + @@ -143,15 +132,13 @@ - - - - - - - - - + + + + + + + @@ -194,13 +181,13 @@ - Name + Name - [[o.employee_id.name]] + [[o.employee_id.name]] - Designation + Designation [[ o.employee_id.job_id.name or '' ]] @@ -222,7 +209,7 @@ - Email + Email [[ o.employee_id.work_email or '' ]] @@ -240,13 +227,13 @@ - Reference + Reference [[ o.number or '' ]] - Bank Account + Bank Account [[ o.employee_id.otherid or '' ]] @@ -256,7 +243,7 @@ - Date From + Date From [[ o.date_from or '']] @@ -285,22 +272,25 @@ - Code + Code - Name + Name - Quantity + Quantity - Amount + Amount - Total + Total + + +
[[repeatIn(get_payslip_lines(o.line_ids),'p') ]] @@ -315,18 +305,21 @@ [[ p.quantity or '0.0']] - [[ p.amount or '0.0']] + [[ p.amount or '0.0' ]] [[ p.total or '0.0']] [[o.company_id and o.company_id.currency_id.symbol or '']] + + +
- + - + @@ -343,16 +336,16 @@ - + - + - + - Authorized Signature + Authorized Signature
diff --git a/addons/hr_payroll/report/report_payslip_details.py b/addons/hr_payroll/report/report_payslip_details.py index be40a2ec02a..d65065eb6f6 100644 --- a/addons/hr_payroll/report/report_payslip_details.py +++ b/addons/hr_payroll/report/report_payslip_details.py @@ -64,9 +64,8 @@ class payslip_details_report(report_sxw.rml_parse): for key, value in result.iteritems(): rule_categories = rule_cate_obj.browse(self.cr, self.uid, [key]) parents = get_recursive_parent(rule_categories) - category_total = 0 - for line in payslip_line.browse(self.cr, self.uid, value): - category_total += line.total + self.cr.execute('''SELECT SUM(pl.total) FROM hr_payslip_line pl\ + WHERE pl.id in %s''',(tuple(value),)) level = 0 for parent in parents: res.append({ @@ -74,7 +73,7 @@ class payslip_details_report(report_sxw.rml_parse): 'name': parent.name, 'code': parent.code, 'level': level, - 'total': category_total, + 'total': self.cr.fetchone()[0] or 0.0, }) level += 1 for line in payslip_line.browse(self.cr, self.uid, value): @@ -97,13 +96,18 @@ class payslip_details_report(report_sxw.rml_parse): result.setdefault(obj[id].register_id.name, []) result[obj[id].register_id.name].append(obj[id].id) for key, value in result.iteritems(): + self.cr.execute('''SELECT SUM(pl.total) FROM hr_payslip_line pl\ + WHERE pl.id in %s''',(tuple(value),)) res.append({ 'register_name': key, + 'total': self.cr.fetchone()[0] or 0.0, }) for line in payslip_line.browse(self.cr, self.uid, value): res.append({ 'name': line.name, 'code': line.code, + 'quantity': line.quantity, + 'amount': line.amount, 'total': line.total, }) return res diff --git a/addons/hr_payroll/report/report_payslip_details.rml b/addons/hr_payroll/report/report_payslip_details.rml index ee9d16479e7..395654151f5 100644 --- a/addons/hr_payroll/report/report_payslip_details.rml +++ b/addons/hr_payroll/report/report_payslip_details.rml @@ -100,56 +100,42 @@ - - - - - - - - - - - - - + + + + - + - + - - - - - - - - - + + - - - - + + + + + + @@ -159,28 +145,31 @@ - - + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -196,7 +185,7 @@ - + @@ -206,11 +195,11 @@ - [[repeatIn(objects,'o')]] + [[repeatIn(objects,'o')]] - Pay Slip Details + Pay Slip Details @@ -220,20 +209,20 @@ Note - ([[o.name or removeParentNode('para') ]]) + ([[o.name or removeParentNode('para')]]) - Name + Name - [[o.employee_id.name]] + [[o.employee_id.name]] - Designation + Designation - [[ o.employee_id.job_id.name or '' ]] + [[ o.employee_id.job_id.name or '' ]] @@ -245,17 +234,17 @@ - [[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street2 or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.zip or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.city or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.state_id and o.employee_id.address_home_id.state_id.name or '' ]] [[o.employee_id.address_home_id and o.employee_id.address_home_id.country_id and o.employee_id.address_home_id.country_id.name or '' ]] + [[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street2 or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.zip or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.city or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.state_id and o.employee_id.address_home_id.state_id.name or '' ]] [[o.employee_id.address_home_id and o.employee_id.address_home_id.country_id and o.employee_id.address_home_id.country_id.name or '' ]]
- Email + Email - [[ o.employee_id.work_email or '' ]] + [[ o.employee_id.work_email or '' ]] @@ -263,33 +252,33 @@ - [[ o.employee_id.identification_id or '' ]] + [[ o.employee_id.identification_id or '' ]] - Reference + Reference - [[ o.number or '' ]] + [[ o.number or '' ]] - Bank Account + Bank Account - [[ o.employee_id.otherid or '' ]] + [[ o.employee_id.otherid or '' ]] - Date From + Date From - [[ o.date_from or '']] + [[ o.date_from or '']] @@ -297,37 +286,37 @@ - [[ o.date_to or '' ]] + [[ o.date_to or '' ]] - - + + - + - Details by Salary Rule Category: + Details by Salary Rule Category: - Code + Code - Salary Rule Category + Salary Rule Category - Name + Name - Total + Total @@ -335,69 +324,80 @@
- [[repeatIn(get_details_by_rule_category(o.details_by_salary_rule_category),'h') ]] + [[repeatIn(get_details_by_rule_category(o.details_by_salary_rule_category),'h') ]] - + [[ h['code'] ]] [[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]] - [[ '..'*h['level'] ]][[ h['rule_category'] ]][[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font') ]] + [[ '..'*h['level'] ]][[ h['rule_category'] ]][[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font') ]] - [[ h['name'] ]][[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]] + [[ h['name'] ]][[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]] - [[ h['total'] or '0.0' ]] [[o.company_id and o.company_id.currency_id.symbol or '']] [[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]] + [[ h['total'] or '0.0' ]] [[o.company_id and o.company_id.currency_id.symbol or '']] [[ h['level']==0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]]
- + - - + - Payslip Lines by Contribution Register: + Payslip Lines by Contribution Register: - + - Register Name + Register Name - Code + Code - Name + Name - Total + Quantity/Rate + + + Amount + + + Total
- [[repeatIn(get_lines_by_contribution_register(o.details_by_salary_rule_category),'r')]] - + [[repeatIn(get_lines_by_contribution_register(o.details_by_salary_rule_category),'r') ]] + - [[ r.get('register_name', False) ]][[ h.get('register_name', False) and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]] + [[ r.get('register_name', False) ]][[ h.get('register_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']] [[o.company_id and o.company_id.currency_id.symbol or '']] + [[ r['quantity'] or '0.0' ]] + + + [[ r['amount'] or '0.0' ]] + + + [[ r['total'] or '0.0']] [[ o.company_id and o.company_id.currency_id.symbol or '']][[ r.get('register_name', False) and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font')]] @@ -405,26 +405,27 @@ - + - + - + - + - Authorized Signature + Authorized Signature - + +