← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-addons/trunk-payroll-report-psi into lp:~openerp-dev/openobject-addons/trunk-payroll

 

Purnendu Singh (OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/trunk-payroll-report-psi into lp:~openerp-dev/openobject-addons/trunk-payroll.

Requested reviews:
  OpenERP R&D Team (openerp-dev)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-payroll-report-psi/+merge/61085

Hello,

Split the Employee payslip report into two different reorts.

1) Employee PaySlip: This report will show all the payslip lines which are appear on payslip.

2) PaySlip Details: This report will show all the payslip lines by their category and contribution register.

Thanks and regards
Purnendu Singh
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-payroll-report-psi/+merge/61085
Your team OpenERP R&D Team is requested to review the proposed merge of lp:~openerp-dev/openobject-addons/trunk-payroll-report-psi into lp:~openerp-dev/openobject-addons/trunk-payroll.
=== modified file 'hr_payroll/hr_payroll_report.xml'
--- hr_payroll/hr_payroll_report.xml	2011-04-26 11:35:59 +0000
+++ hr_payroll/hr_payroll_report.xml	2011-05-16 09:56:59 +0000
@@ -1,65 +1,73 @@
 <?xml version="1.0"?>
 <openerp>
-	<data>
-	    <!-- <report 
-          	auto="False" 
-          	id="salary_payslip" 
-          	model="hr.payslip" 
-          	name="payslip.pdf" 
-          	rml="hr_payroll/report/payslip.rml" 
-          	string="Employee PaySlip" />-->
-          	
-      	 <report 
-            auto="False" 
-            id="payslip_report" 
-            model="hr.payslip" 
-            name="test.pdf" 
-            rml="hr_payroll/report/report_payslip.rml" 
+    <data>
+        <!-- <report
+            auto="False"
+            id="salary_payslip"
+            model="hr.payslip"
+            name="payslip.pdf"
+            rml="hr_payroll/report/payslip.rml"
+            string="Employee PaySlip" />-->
+
+        <report
+            auto="False"
+            id="payslip_report"
+            model="hr.payslip"
+            name="test.pdf"
+            rml="hr_payroll/report/report_payslip.rml"
             string="Employee PaySlip" />
-          	
-	     <report 
-          	auto="False" 
-          	id="payroll_advice" 
-          	model="hr.payroll.advice" 
-          	name="payroll.advice" 
-          	rml="hr_payroll/report/report_payroll_advice.rml" 
-          	string="Bank Payment Advice" />
-
-	     <report 
-          	auto="False" 
-          	id="year_salary_report" 
-          	model="hr.payslip" 
-          	name="year.salary" 
-          	rml="hr_payroll/report/report_year_report.rml"
-          	menu = "False" 
-          	string="Year Salary Report" />
-          	
-      	<report 
-          	auto="False" 
-          	id="year_payroll_register" 
-          	model="hr.payroll.register" 
-          	name="hr.payroll.register.sheet" 
-          	rml="hr_payroll/report/payroll_register.rml"
-          	menu = "True" 
-          	string="Print Statement" />
-
-	     <report 
-          	auto="False" 
-          	id="year_employees_detail" 
-          	model="hr.payslip" 
-          	name="employees.salary" 
-          	rml="hr_payroll/report/report_employees_detail.rml"
-          	menu = "False" 
-          	string="Employees Salary Detail" />
-          	
-      	<report 
-          	auto="False" 
-          	id="salary_structure_register" 
-          	model="hr.employee" 
-          	name="salary.structure" 
-          	rml="hr_payroll/report/report_emp_salary_structure.rml"
-          	menu = "True" 
-          	string="Salary Structure" groups="base.group_hr_manager"/>
-  
-	</data>
+
+        <report
+            auto="False"
+            id="payslip_details_report"
+            model="hr.payslip"
+            name="paylip.details"
+            rml="hr_payroll/report/report_payslip_details.rml"
+            string="PaySlip Details" />
+
+<!--         <report
+            auto="False"
+            id="payroll_advice"
+            model="hr.payroll.advice"
+            name="payroll.advice"
+            rml="hr_payroll/report/report_payroll_advice.rml"
+            string="Bank Payment Advice" />
+
+        <report
+            auto="False"
+            id="year_salary_report"
+            model="hr.payslip"
+            name="year.salary"
+            rml="hr_payroll/report/report_year_report.rml"
+            menu = "False"
+            string="Year Salary Report" />
+
+        <report
+            auto="False"
+            id="year_payroll_register"
+            model="hr.payroll.register"
+            name="hr.payroll.register.sheet"
+            rml="hr_payroll/report/payroll_register.rml"
+            menu = "True"
+            string="Print Statement" />
+
+        <report
+            auto="False"
+            id="year_employees_detail"
+            model="hr.payslip"
+            name="employees.salary"
+            rml="hr_payroll/report/report_employees_detail.rml"
+            menu = "False"
+            string="Employees Salary Detail" />
+
+        <report
+            auto="False"
+            id="salary_structure_register"
+            model="hr.employee"
+            name="salary.structure"
+            rml="hr_payroll/report/report_emp_salary_structure.rml"
+            menu = "True"
+            string="Salary Structure" groups="base.group_hr_manager"/> -->
+
+    </data>
 </openerp>

=== modified file 'hr_payroll/report/__init__.py'
--- hr_payroll/report/__init__.py	2011-01-14 00:11:01 +0000
+++ hr_payroll/report/__init__.py	2011-05-16 09:56:59 +0000
@@ -3,7 +3,7 @@
 
 ##############################################################################
 #
-#    OpenERP, Open Source Management Solution    
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
 #    d$
 #
@@ -23,6 +23,7 @@
 ##############################################################################
 
 import report_payslip
+import report_payslip_details
 import report_payroll_advice
 import report_year_salary
 import report_payroll_register

=== modified file 'hr_payroll/report/report_payslip.py'
--- hr_payroll/report/report_payslip.py	2011-05-12 13:05:43 +0000
+++ hr_payroll/report/report_payslip.py	2011-05-16 09:56:59 +0000
@@ -22,7 +22,6 @@
 #
 ##############################################################################
 
-from datetime import datetime
 from report import report_sxw
 from tools import amount_to_text_en
 
@@ -31,61 +30,9 @@
     def __init__(self, cr, uid, name, context):
         super(payslip_report, self).__init__(cr, uid, name, context)
         self.localcontext.update({
-                'convert': self.convert,
-                'get_month': self.get_month,
-                'get_earnings': self.get_earnings,
-                'get_deductions':self.get_deductions,
-                'get_leave': self.get_leave,
                 'get_payslip_lines': self.get_payslip_lines,
-                'get_details_by_rule_category': self.get_details_by_rule_category,
-                'get_lines_by_contribution_register': self.get_lines_by_contribution_register,
         })
 
-    def convert(self, amount, cur):
-        amt_en = amount_to_text_en.amount_to_text(amount, 'en', cur)
-        return amt_en
-
-    def get_leave(self, obj):
-        payslip_line = self.pool.get('hr.payslip.line')
-        res = []
-#        ids = []
-#        for id in range(len(obj)):
-#            if obj[id].type == 'leaves':
-#                ids.append(obj[id].id)
-#        if ids:
-#            res = payslip_line.browse(self.cr, self.uid, ids)
-        return res
-
-    def get_earnings(self, obj):
-        payslip_line = self.pool.get('hr.payslip.line')
-        res = []
-        ids = []
-        for id in range(len(obj)):
-            if obj[id].category_id.parent_id.name == 'Allowance':
-                ids.append(obj[id].id)
-        if ids:
-            res = payslip_line.browse(self.cr, self.uid, ids)
-        return res
-
-    def get_deductions(self, obj):
-        payslip_line = self.pool.get('hr.payslip.line')
-        res = []
-        ids = []
-        for id in range(len(obj)):
-            if obj[id].category_id.parent_id.name == 'Deduction':
-                ids.append(obj[id].id)
-        if ids:
-            res = payslip_line.browse(self.cr, self.uid, ids)
-        return res
-
-    def get_month(self, obj):
-        res = {
-                'mname':''
-        }
-        date = datetime.strptime(obj.date, '%Y-%m-%d')
-        res['mname']= date.strftime('%B')+"-"+date.strftime('%Y')
-        return res['mname']
-
     def get_payslip_lines(self, obj):
         payslip_line = self.pool.get('hr.payslip.line')
         res = []
@@ -97,80 +44,6 @@
             res = payslip_line.browse(self.cr, self.uid, ids)
         return res
 
-    def get_recursive_parent(self, rule_categories):
-        if not rule_categories:
-            return []
-        if rule_categories[0].parent_id:
-            rule_categories.insert(0, rule_categories[0].parent_id)
-            self.get_recursive_parent(rule_categories)
-        return rule_categories
-
-    def get_details_by_rule_category(self, obj):
-        payslip_line = self.pool.get('hr.payslip.line')
-        rule_cate_obj = self.pool.get('hr.salary.rule.category')
-        res = []
-        result = {}
-        ids = []
-
-        for id in range(len(obj)):
-            ids.append(obj[id].id)
-        if ids:
-            self.cr.execute('''SELECT pl.id, pl.category_id FROM hr_payslip_line as pl \
-                LEFT JOIN hr_salary_rule_category AS rc on (pl.category_id = rc.id) \
-                WHERE pl.id in %s \
-                GROUP BY rc.parent_id, pl.sequence, pl.id, pl.category_id \
-                ORDER BY pl.sequence, rc.parent_id''',(tuple(ids),))
-            for x in self.cr.fetchall():
-                result.setdefault(x[1], [])
-                result[x[1]].append(x[0])
-            for key, value in result.iteritems():
-                rule_categories = rule_cate_obj.browse(self.cr, self.uid, [key])
-                parents = self.get_recursive_parent(rule_categories)
-                category_total = 0
-                for line in payslip_line.browse(self.cr, self.uid, value):
-                    category_total += line.total
-                level = 0
-                for parent in parents:
-                    res.append({
-                                'rule_category': parent.name,
-                                'name': parent.name,
-                                'code': parent.code,
-                                'level': level,
-                                'total': category_total,
-                    })
-                    level += 1
-                for line in payslip_line.browse(self.cr, self.uid, value):
-                    res.append({
-                                'rule_category': line.name,
-                                'name': line.name,
-                                'code': line.code,
-                                'total': line.total,
-                                'level': level
-                    })
-        return res
-
-    def get_lines_by_contribution_register(self, obj):
-        payslip_line = self.pool.get('hr.payslip.line')
-        result = {}
-        res = []
-
-        for id in range(len(obj)):
-            if obj[id].register_id:
-                result.setdefault(obj[id].register_id.name, [])
-                result[obj[id].register_id.name].append(obj[id].id)
-        for key, value in result.iteritems():
-            res.append({
-                'register_name': key,
-            })
-            for line in payslip_line.browse(self.cr, self.uid, value):
-                res.append({
-                            'name': line.name,
-                            'code': line.code,
-                            'total': line.total,
-                })
-        return res
-
-#report_sxw.report_sxw('report.payslip.pdf', 'hr.payslip', 'hr_payroll/report/payslip.rml', parser=payslip_report)
 report_sxw.report_sxw('report.test.pdf', 'hr.payslip', 'hr_payroll/report/report_payslip.rml', parser=payslip_report)
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== modified file 'hr_payroll/report/report_payslip.rml'
--- hr_payroll/report/report_payslip.rml	2011-05-12 13:39:40 +0000
+++ hr_payroll/report/report_payslip.rml	2011-05-16 09:56:59 +0000
@@ -114,67 +114,9 @@
     <blockTableStyle id="Table9">
       <blockAlignment value="LEFT"/>
       <blockValign value="TOP"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
-    </blockTableStyle>
-    <blockTableStyle id="Table10">
-      <blockAlignment value="LEFT"/>
-      <blockValign value="TOP"/>
-    </blockTableStyle>
-    <blockTableStyle id="Table11">
-      <blockAlignment value="LEFT"/>
-      <blockValign value="TOP"/>
-      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
-      <lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
-    </blockTableStyle>
-    <blockTableStyle id="Table12">
-      <blockAlignment value="LEFT"/>
-      <blockValign value="TOP"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
-    </blockTableStyle>
-    <blockTableStyle id="Table14">
-      <blockAlignment value="LEFT"/>
-      <blockValign value="TOP"/>
-    </blockTableStyle>
-    <blockTableStyle id="Table15">
-      <blockAlignment value="LEFT"/>
-      <blockValign value="TOP"/>
-      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
-      <lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
-    </blockTableStyle>
-    <blockTableStyle id="Table16">
-      <blockAlignment value="LEFT"/>
-      <blockValign value="TOP"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/>
     </blockTableStyle>
     <blockTableStyle id="Table13">
       <blockAlignment value="LEFT"/>
@@ -184,36 +126,28 @@
       <paraStyle name="all" alignment="justify"/>
     </initialize>
     <paraStyle name="P1" fontName="Helvetica" fontSize="2.0" leading="3"/>
-    <paraStyle name="P2" fontName="Helvetica"/>
-    <paraStyle name="P3" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT"/>
-    <paraStyle name="P4" rightIndent="-56.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P5" rightIndent="-56.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P2" rightIndent="-56.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P3" rightIndent="-56.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P4" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P5" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="P6" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P7" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P9" fontName="Helvetica-Bold" fontSize="14.0" leading="17" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P10" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P11" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P12" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P13" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P14" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P15" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P16" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P17" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT"/>
-    <paraStyle name="P18" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT"/>
-    <paraStyle name="P19" fontName="Helvetica-Bold" fontSize="8.0" leading="10"/>
-    <paraStyle name="P20" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT"/>
-    <paraStyle name="P21" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P22" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P23" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P24" fontName="Helvetica" fontSize="2.0" leading="3"/>
-    <paraStyle name="P25" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P26" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P27" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P28" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P29" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P30" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT"/>
-    <paraStyle name="P31" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT"/>
+    <paraStyle name="P7" fontName="Helvetica-Bold" fontSize="14.0" leading="17" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P10" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P11" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P12" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P13" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P14" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT"/>
+    <paraStyle name="P15" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT"/>
+    <paraStyle name="P16" fontName="Helvetica-Bold" fontSize="8.0" leading="10"/>
+    <paraStyle name="P17" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT"/>
+    <paraStyle name="P18" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P19" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P20" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P21" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P22" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P23" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="Standard" fontName="Helvetica"/>
     <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
     <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
@@ -229,7 +163,6 @@
     <paraStyle name="terp_default_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_Bold_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_Bold_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="terp_default_10" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="Table Contents" fontName="Helvetica"/>
     <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
@@ -239,11 +172,11 @@
     <images/>
   </stylesheet>
   <story>
-    <para style="P4">[[repeatIn(objects,'o')]]</para>
+    <para style="P2">[[repeatIn(objects,'o')]]</para>
     <blockTable colWidths="539.0" style="Table1">
       <tr>
         <td>
-          <para style="P9">Pay Slip</para>
+          <para style="P7">Pay Slip</para>
         </td>
       </tr>
     </blockTable>
@@ -253,20 +186,20 @@
       <font face="Helvetica" size="14.0"/>
       <font face="Helvetica-Bold" size="14.0">Note</font>
     </para>
-    <para style="P10">([[o.name]])</para>
+    <para style="P8">([[o.name]])</para>
     <blockTable colWidths="63.0,206.0,89.0,181.0" style="Table2">
       <tr>
         <td>
-          <para style="P21">Name</para>
-        </td>
-        <td>
-          <para style="P21">[[o.employee_id.name]]</para>
-        </td>
-        <td>
-          <para style="P21">Designation </para>
-        </td>
-        <td>
-          <para style="P6">[[ o.employee_id.job_id.name or '' ]]</para>
+          <para style="P18">Name</para>
+        </td>
+        <td>
+          <para style="P18">[[o.employee_id.name]]</para>
+        </td>
+        <td>
+          <para style="P18">Designation </para>
+        </td>
+        <td>
+          <para style="P4">[[ o.employee_id.job_id.name or '' ]]</para>
         </td>
       </tr>
     </blockTable>
@@ -278,17 +211,17 @@
           </para>
         </td>
         <td>
-          <para style="P6">[[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 '' ]]</para>
+          <para style="P4">[[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 '' ]]</para>
         </td>
       </tr>
     </blockTable>
     <blockTable colWidths="63.0,206.0,89.0,181.0" style="Table4">
       <tr>
         <td>
-          <para style="P21">Email</para>
+          <para style="P18">Email</para>
         </td>
         <td>
-          <para style="P6">[[ o.employee_id.work_email or '' ]]</para>
+          <para style="P4">[[ o.employee_id.work_email or '' ]]</para>
         </td>
         <td>
           <para style="terp_default_Bold_8">
@@ -296,33 +229,33 @@
           </para>
         </td>
         <td>
-          <para style="P6">[[ o.employee_id.identification_id or '' ]]</para>
+          <para style="P4">[[ o.employee_id.identification_id or '' ]]</para>
         </td>
       </tr>
     </blockTable>
     <blockTable colWidths="63.0,205.0,89.0,181.0" style="Table5">
       <tr>
         <td>
-          <para style="P21">Reference</para>
-        </td>
-        <td>
-          <para style="P6">[[ o.number or '' ]]</para>
-        </td>
-        <td>
-          <para style="P21">Bank Account</para>
-        </td>
-        <td>
-          <para style="P6">[[ o.employee_id.otherid or '' ]]</para>
+          <para style="P18">Reference</para>
+        </td>
+        <td>
+          <para style="P4">[[ o.number or '' ]]</para>
+        </td>
+        <td>
+          <para style="P18">Bank Account</para>
+        </td>
+        <td>
+          <para style="P4">[[ o.employee_id.otherid or '' ]]</para>
         </td>
       </tr>
     </blockTable>
     <blockTable colWidths="63.0,205.0,89.0,181.0" style="Table6">
       <tr>
         <td>
-          <para style="P21">Date From</para>
+          <para style="P18">Date From</para>
         </td>
         <td>
-          <para style="P6">[[ o.date_from or '']]</para>
+          <para style="P4">[[ o.date_from or '']]</para>
         </td>
         <td>
           <para style="terp_default_Bold_8">
@@ -330,168 +263,90 @@
           </para>
         </td>
         <td>
-          <para style="P6">[[ o.date_to or '' ]]</para>
+          <para style="P4">[[ o.date_to or '' ]]</para>
         </td>
       </tr>
     </blockTable>
-    <para style="P8">
+    <para style="P6">
       <font color="white"> </font>
     </para>
-    <para style="P8"/>
+    <para style="P6"/>
     <blockTable colWidths="539.0" style="Table7">
       <tr>
         <td>
-          <para style="P12">Payslip Lines: </para>
+          <para style="P9">Payslip Lines: </para>
         </td>
       </tr>
     </blockTable>
     <blockTable colWidths="54.0,387.0,97.0" style="Table8">
       <tr>
         <td>
-          <para style="P17">Code</para>
-        </td>
-        <td>
-          <para style="P17">Name</para>
-        </td>
-        <td>
-          <para style="P18">Amount (in [[o.company_id and o.company_id.currency_id.symbol or '']])</para>
+          <para style="P14">Code</para>
+        </td>
+        <td>
+          <para style="P14">Name</para>
+        </td>
+        <td>
+          <para style="P15">Amount (in [[o.company_id and o.company_id.currency_id.symbol or '']])</para>
         </td>
       </tr>
     </blockTable>
+    <para style="P11">
+      <font color="white"> </font>
+    </para>
     <section>
-      <para style="P6">[[repeatIn(get_payslip_lines(o.line_ids),'p') ]]</para>
+      <para style="P4">[[repeatIn(get_payslip_lines(o.line_ids),'p') ]]</para>
       <blockTable colWidths="54.0,387.0,97.0" style="Table9">
         <tr>
           <td>
-            <para style="P6">[[ p.code ]]</para>
-          </td>
-          <td>
-            <para style="P6">[[ p.name ]]</para>
-          </td>
-          <td>
-            <para style="P7">[[ p.total or '0.0']]</para>
+            <para style="P4">[[ p.code ]]</para>
+          </td>
+          <td>
+            <para style="P4">[[ p.name ]]</para>
+          </td>
+          <td>
+            <para style="P5">[[ p.total or '0.0']]</para>
           </td>
         </tr>
       </blockTable>
+      <para style="P12">
+        <font color="white"> </font>
+      </para>
     </section>
-    <para style="P11">
-      <font color="white"> </font>
-    </para>
-    <blockTable colWidths="539.0" style="Table10">
-      <tr>
-        <td>
-          <para style="P13">Details by Salary Rule Category: </para>
-        </td>
-      </tr>
-    </blockTable>
-    <blockTable colWidths="54.0,215.0,173.0,97.0" style="Table11">
-      <tr>
-        <td>
-          <para style="P19">Code</para>
-        </td>
-        <td>
-          <para style="P19">Salary Rule Category</para>
-        </td>
-        <td>
-          <para style="P19">Name</para>
-        </td>
-        <td>
-          <para style="P20">Amount<font face="Helvetica">(in [[o.company_id and o.company_id.currency_id.symbol or '']])</font></para>
-        </td>
-      </tr>
-    </blockTable>
+    <para style="P23">
+      <font color="white"> </font>
+    </para>
+    <para style="P22">
+      <font color="white"> </font>
+    </para>
+    <para style="P6">
+      <font color="white"> </font>
+    </para>
     <para style="P1">
       <font color="white"> </font>
     </para>
-    <section>
-      <para style="P21">[[repeatIn(get_details_by_rule_category(o.details_by_salary_rule_category),'h') ]]</para>
-      <blockTable colWidths="54.0,215.0,173.0,97.0" style="Table12">
-        <tr>
-          <td>
-            <para style="P21">
-              <font face="Helvetica">[[ h['code'] ]]</font>
-              <font face="Helvetica">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]]</font>
-            </para>
-          </td>
-          <td>
-            <para style="P22"><font face="Helvetica" color="white">[[ '..'*h['level'] ]]</font>[[ h['rule_category'] ]]<font face="Helvetica">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font') ]]</font></para>
-          </td>
-          <td>
-            <para style="P23">[[ h['name'] ]]<font face="Helvetica">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]]</font></para>
-          </td>
-          <td>
-            <para style="P7">[[ h['total'] ]] <font face="Helvetica" size="8.0">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]]</font></para>
-          </td>
-        </tr>
-      </blockTable>
-    </section>
-    <para style="P8">
-      <font color="white"> </font>
-    </para>
-    <blockTable colWidths="539.0" style="Table14">
-      <tr>
-        <td>
-          <para style="P13">Payslip Lines by Contribution Register:</para>
-        </td>
-      </tr>
-    </blockTable>
-    <blockTable colWidths="115.0,46.0,289.0,88.0" style="Table15">
-      <tr>
-        <td>
-          <para style="P17">Register Name</para>
-        </td>
-        <td>
-          <para style="P17">Code</para>
-        </td>
-        <td>
-          <para style="P17">Name</para>
-        </td>
-        <td>
-          <para style="P18">Amount (in [[o.company_id and o.company_id.currency_id.symbol or '']])</para>
-        </td>
-      </tr>
-    </blockTable>
-    <section>
-      <para style="P21">[[repeatIn(get_lines_by_contribution_register(o.details_by_salary_rule_category),'r') ]]</para>
-      <blockTable colWidths="116.0,46.0,289.0,88.0" style="Table16">
-        <tr>
-          <td>
-            <para style="P21">[[ r.get('register_name', False) ]]<font face="Helvetica">[[ h.get('register_name', False) and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]]</font></para>
-          </td>
-          <td>
-            <para style="P6">[[ r['code'] ]]</para>
-          </td>
-          <td>
-            <para style="P6">[[ r['name'] ]]</para>
-          </td>
-          <td>
-            <para style="P7">[[ r['total'] or '0.0']]</para>
-          </td>
-        </tr>
-      </blockTable>
-    </section>
     <blockTable colWidths="269.0,269.0" style="Table13">
       <tr>
         <td>
-          <para style="P6">
+          <para style="P4">
             <font color="white"> </font>
           </para>
         </td>
         <td>
-          <para style="P16">
-            <font color="white"> </font>
-          </para>
-          <para style="P16">
-            <font color="white"> </font>
-          </para>
-          <para style="P16">
-            <font color="white"> </font>
-          </para>
-          <para style="P16">Authorized Signature </para>
+          <para style="P13">
+            <font color="white"> </font>
+          </para>
+          <para style="P13">
+            <font color="white"> </font>
+          </para>
+          <para style="P13">
+            <font color="white"> </font>
+          </para>
+          <para style="P13">Authorized Signature </para>
         </td>
       </tr>
     </blockTable>
-    <para style="P5">
+    <para style="P3">
       <font color="white"> </font>
     </para>
   </story>

=== modified file 'hr_payroll/report/report_payslip.sxw'
Binary files hr_payroll/report/report_payslip.sxw	2011-05-12 13:39:40 +0000 and hr_payroll/report/report_payslip.sxw	2011-05-16 09:56:59 +0000 differ
=== added file 'hr_payroll/report/report_payslip_details.py'
--- hr_payroll/report/report_payslip_details.py	1970-01-01 00:00:00 +0000
+++ hr_payroll/report/report_payslip_details.py	2011-05-16 09:56:59 +0000
@@ -0,0 +1,113 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    d$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from report import report_sxw
+from tools import amount_to_text_en
+
+class payslip_details_report(report_sxw.rml_parse):
+
+    def __init__(self, cr, uid, name, context):
+        super(payslip_details_report, self).__init__(cr, uid, name, context)
+        self.localcontext.update({
+                'get_details_by_rule_category': self.get_details_by_rule_category,
+                'get_lines_by_contribution_register': self.get_lines_by_contribution_register,
+        })
+
+    def get_details_by_rule_category(self, obj):
+        payslip_line = self.pool.get('hr.payslip.line')
+        rule_cate_obj = self.pool.get('hr.salary.rule.category')
+
+        def get_recursive_parent(rule_categories):
+            if not rule_categories:
+                return []
+            if rule_categories[0].parent_id:
+                rule_categories.insert(0, rule_categories[0].parent_id)
+                self.get_recursive_parent(rule_categories)
+            return rule_categories
+
+        res = []
+        result = {}
+        ids = []
+
+        for id in range(len(obj)):
+            ids.append(obj[id].id)
+        if ids:
+            self.cr.execute('''SELECT pl.id, pl.category_id FROM hr_payslip_line as pl \
+                LEFT JOIN hr_salary_rule_category AS rc on (pl.category_id = rc.id) \
+                WHERE pl.id in %s \
+                GROUP BY rc.parent_id, pl.sequence, pl.id, pl.category_id \
+                ORDER BY pl.sequence, rc.parent_id''',(tuple(ids),))
+            for x in self.cr.fetchall():
+                result.setdefault(x[1], [])
+                result[x[1]].append(x[0])
+            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
+                level = 0
+                for parent in parents:
+                    res.append({
+                                'rule_category': parent.name,
+                                'name': parent.name,
+                                'code': parent.code,
+                                'level': level,
+                                'total': category_total,
+                    })
+                    level += 1
+                for line in payslip_line.browse(self.cr, self.uid, value):
+                    res.append({
+                                'rule_category': line.name,
+                                'name': line.name,
+                                'code': line.code,
+                                'total': line.total,
+                                'level': level
+                    })
+        return res
+
+    def get_lines_by_contribution_register(self, obj):
+        payslip_line = self.pool.get('hr.payslip.line')
+        result = {}
+        res = []
+
+        for id in range(len(obj)):
+            if obj[id].register_id:
+                result.setdefault(obj[id].register_id.name, [])
+                result[obj[id].register_id.name].append(obj[id].id)
+        for key, value in result.iteritems():
+            res.append({
+                'register_name': key,
+            })
+            for line in payslip_line.browse(self.cr, self.uid, value):
+                res.append({
+                            'name': line.name,
+                            'code': line.code,
+                            'total': line.total,
+                })
+        return res
+
+report_sxw.report_sxw('report.paylip.details', 'hr.payslip', 'hr_payroll/report/report_payslip_details.rml', parser=payslip_details_report)
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added file 'hr_payroll/report/report_payslip_details.rml'
--- hr_payroll/report/report_payslip_details.rml	1970-01-01 00:00:00 +0000
+++ hr_payroll/report/report_payslip_details.rml	2011-05-16 09:56:59 +0000
@@ -0,0 +1,431 @@
+<?xml version="1.0"?>
+<document filename="test.pdf">
+  <template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
+    <pageTemplate id="first">
+      <frame id="first" x1="28.0" y1="28.0" width="539" height="786"/>
+    </pageTemplate>
+  </template>
+  <stylesheet>
+    <blockTableStyle id="Standard_Outline">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table1">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table2">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="2,0" stop="2,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="2,0" stop="2,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEAFTER" colorName="#cccccc" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="3,0" stop="3,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="3,-1" stop="3,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table3">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
+      <lineStyle kind="LINEAFTER" colorName="#cccccc" start="1,0" stop="1,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table4">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="2,0" stop="2,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="2,0" stop="2,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEAFTER" colorName="#cccccc" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="3,0" stop="3,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="3,-1" stop="3,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table5">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="2,0" stop="2,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="2,0" stop="2,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEAFTER" colorName="#cccccc" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="3,0" stop="3,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="3,-1" stop="3,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table6">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="2,0" stop="2,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="2,0" stop="2,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEAFTER" colorName="#cccccc" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="3,0" stop="3,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="3,-1" stop="3,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table10">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table11">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table12">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="3,-1" stop="3,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table14">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table15">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table16">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
+    </blockTableStyle>
+    <blockTableStyle id="Table13">
+      <blockAlignment value="LEFT"/>
+      <blockValign value="TOP"/>
+    </blockTableStyle>
+    <initialize>
+      <paraStyle name="all" alignment="justify"/>
+    </initialize>
+    <paraStyle name="P1" fontName="Helvetica" fontSize="2.0" leading="3"/>
+    <paraStyle name="P2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT"/>
+    <paraStyle name="P3" fontName="Helvetica" fontSize="2.0" leading="3"/>
+    <paraStyle name="P4" rightIndent="-56.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P5" rightIndent="-56.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P6" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P7" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P9" fontName="Helvetica-Bold" fontSize="14.0" leading="17" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P10" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P11" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P12" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P13" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P14" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P15" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT"/>
+    <paraStyle name="P16" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT"/>
+    <paraStyle name="P17" fontName="Helvetica-Bold" fontSize="8.0" leading="10"/>
+    <paraStyle name="P18" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT"/>
+    <paraStyle name="P19" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P20" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P21" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P22" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="P23" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="Standard" fontName="Helvetica"/>
+    <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
+    <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
+    <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
+    <paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="Index" fontName="Helvetica"/>
+    <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_space" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="14.0" leading="17" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_Centre_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_Centre_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_Bold_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_Bold_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_10" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="Table Contents" fontName="Helvetica"/>
+    <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/>
+    <paraStyle name="payslip_adj" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <images/>
+  </stylesheet>
+  <story>
+    <para style="P4">[[repeatIn(objects,'o')]]</para>
+    <blockTable colWidths="539.0" style="Table1">
+      <tr>
+        <td>
+          <para style="P9">Pay Slip Details</para>
+        </td>
+      </tr>
+    </blockTable>
+    <para style="terp_header_Centre">
+      <font face="Helvetica" size="6.0">[[o.credit_note==False and removeParentNode('para')]]</font>
+      <font face="Helvetica-Bold" size="14.0">Credit</font>
+      <font face="Helvetica" size="14.0"/>
+      <font face="Helvetica-Bold" size="14.0">Note</font>
+    </para>
+    <para style="P10">([[o.name]])</para>
+    <blockTable colWidths="63.0,206.0,89.0,181.0" style="Table2">
+      <tr>
+        <td>
+          <para style="P19">Name</para>
+        </td>
+        <td>
+          <para style="P19">[[o.employee_id.name]]</para>
+        </td>
+        <td>
+          <para style="P19">Designation </para>
+        </td>
+        <td>
+          <para style="P6">[[ o.employee_id.job_id.name or '' ]]</para>
+        </td>
+      </tr>
+    </blockTable>
+    <blockTable colWidths="63.0,475.0" style="Table3">
+      <tr>
+        <td>
+          <para style="terp_default_Bold_8">
+            <font face="Helvetica">Address </font>
+          </para>
+        </td>
+        <td>
+          <para style="P6">[[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 '' ]]</para>
+        </td>
+      </tr>
+    </blockTable>
+    <blockTable colWidths="63.0,206.0,89.0,181.0" style="Table4">
+      <tr>
+        <td>
+          <para style="P19">Email</para>
+        </td>
+        <td>
+          <para style="P6">[[ o.employee_id.work_email or '' ]]</para>
+        </td>
+        <td>
+          <para style="terp_default_Bold_8">
+            <font face="Helvetica">Identification No</font>
+          </para>
+        </td>
+        <td>
+          <para style="P6">[[ o.employee_id.identification_id or '' ]]</para>
+        </td>
+      </tr>
+    </blockTable>
+    <blockTable colWidths="63.0,205.0,89.0,181.0" style="Table5">
+      <tr>
+        <td>
+          <para style="P19">Reference</para>
+        </td>
+        <td>
+          <para style="P6">[[ o.number or '' ]]</para>
+        </td>
+        <td>
+          <para style="P19">Bank Account</para>
+        </td>
+        <td>
+          <para style="P6">[[ o.employee_id.otherid or '' ]]</para>
+        </td>
+      </tr>
+    </blockTable>
+    <blockTable colWidths="63.0,205.0,89.0,181.0" style="Table6">
+      <tr>
+        <td>
+          <para style="P19">Date From</para>
+        </td>
+        <td>
+          <para style="P6">[[ o.date_from or '']]</para>
+        </td>
+        <td>
+          <para style="terp_default_Bold_8">
+            <font face="Helvetica" size="8.0">Date To</font>
+          </para>
+        </td>
+        <td>
+          <para style="P6">[[ o.date_to or '' ]]</para>
+        </td>
+      </tr>
+    </blockTable>
+    <para style="P8"/>
+    <para style="P13">
+      <font color="white"> </font>
+    </para>
+    <para style="P6">
+      <font color="white"> </font>
+    </para>
+    <blockTable colWidths="539.0" style="Table10">
+      <tr>
+        <td>
+          <para style="P12">Details by Salary Rule Category: </para>
+        </td>
+      </tr>
+    </blockTable>
+    <blockTable colWidths="54.0,215.0,173.0,97.0" style="Table11">
+      <tr>
+        <td>
+          <para style="P17">Code</para>
+        </td>
+        <td>
+          <para style="P17">Salary Rule Category</para>
+        </td>
+        <td>
+          <para style="P17">Name</para>
+        </td>
+        <td>
+          <para style="P18">Amount<font face="Helvetica">(in [[o.company_id and o.company_id.currency_id.symbol or '']])</font></para>
+        </td>
+      </tr>
+    </blockTable>
+    <para style="P1">
+      <font color="white"> </font>
+    </para>
+    <section>
+      <para style="P19">[[repeatIn(get_details_by_rule_category(o.details_by_salary_rule_category),'h') ]]</para>
+      <blockTable colWidths="54.0,215.0,173.0,97.0" style="Table12">
+        <tr>
+          <td>
+            <para style="P19">
+              <font face="Helvetica">[[ h['code'] ]]</font>
+              <font face="Helvetica">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]]</font>
+            </para>
+          </td>
+          <td>
+            <para style="P20"><font face="Helvetica" color="white">[[ '..'*h['level'] ]]</font>[[ h['rule_category'] ]]<font face="Helvetica">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font') ]]</font></para>
+          </td>
+          <td>
+            <para style="P21">[[ h['name'] ]]<font face="Helvetica">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]]</font></para>
+          </td>
+          <td>
+            <para style="P7">[[ h['total'] ]] <font face="Helvetica" size="8.0">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]]</font></para>
+          </td>
+        </tr>
+      </blockTable>
+    </section>
+    <para style="P8">
+      <font color="white"> </font>
+    </para>
+    <condPageBreak height="2cm"/>
+    <blockTable colWidths="539.0" style="Table14">
+      <tr>
+        <td>
+          <para style="P12">Payslip Lines by Contribution Register:</para>
+        </td>
+      </tr>
+    </blockTable>
+    <blockTable colWidths="115.0,46.0,289.0,88.0" style="Table15">
+      <tr>
+        <td>
+          <para style="P15">Register Name</para>
+        </td>
+        <td>
+          <para style="P15">Code</para>
+        </td>
+        <td>
+          <para style="P15">Name</para>
+        </td>
+        <td>
+          <para style="P16">Amount (in [[o.company_id and o.company_id.currency_id.symbol or '']])</para>
+        </td>
+      </tr>
+    </blockTable>
+    <section>
+    <para style="P19">[[repeatIn(get_lines_by_contribution_register(o.details_by_salary_rule_category),'r')]]</para>
+      <blockTable colWidths="116.0,46.0,289.0,88.0" style="Table16">
+        <tr>
+          <td>
+            <para style="P19">[[ r.get('register_name', False) ]]<font face="Helvetica">[[ h.get('register_name', False) and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]]</font></para>
+          </td>
+          <td>
+            <para style="P6">[[ r['code'] ]]</para>
+          </td>
+          <td>
+            <para style="P6">[[ r['name'] ]]</para>
+          </td>
+          <td>
+            <para style="P7">[[ r['total'] or '0.0']]</para>
+          </td>
+        </tr>
+      </blockTable>
+    </section>
+    <blockTable colWidths="269.0,269.0" style="Table13">
+      <tr>
+        <td>
+          <para style="P6">
+            <font color="white"> </font>
+          </para>
+        </td>
+        <td>
+          <para style="P14">
+            <font color="white"> </font>
+          </para>
+          <para style="P14">
+            <font color="white"> </font>
+          </para>
+          <para style="P14">
+            <font color="white"> </font>
+          </para>
+          <para style="P14">Authorized Signature </para>
+        </td>
+      </tr>
+    </blockTable>
+    <para style="P5">
+      <font color="white"> </font>
+    </para>
+  </story>
+</document>
+

=== added file 'hr_payroll/report/report_payslip_details.sxw'
Binary files hr_payroll/report/report_payslip_details.sxw	1970-01-01 00:00:00 +0000 and hr_payroll/report/report_payslip_details.sxw	2011-05-16 09:56:59 +0000 differ

Follow ups