← Back to team overview

openerp-india team mailing list archive

lp:~openerp-dev/openerp-india/payroll-india-l10n_in_hr_payroll-kbh into lp:~openerp-dev/openerp-india/payroll-india

 

Khushboo Bhatt(openerp) has proposed merging lp:~openerp-dev/openerp-india/payroll-india-l10n_in_hr_payroll-kbh into lp:~openerp-dev/openerp-india/payroll-india.

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

For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-india/payroll-india-l10n_in_hr_payroll-kbh/+merge/121361

Hello,

  l10n_in_hr_payroll::

   I have update module as per changed in trunk.
    - improved salary rules.
    - added contribution register and rule inputs.
    - added postgres report for payslips.

Thank you,
KBH.
-- 
https://code.launchpad.net/~openerp-dev/openerp-india/payroll-india-l10n_in_hr_payroll-kbh/+merge/121361
Your team OpenERP Indian Team is subscribed to branch lp:~openerp-dev/openerp-india/payroll-india.
=== modified file 'l10n_in_hr_payroll/__openerp__.py'
--- l10n_in_hr_payroll/__openerp__.py	2012-08-21 13:20:23 +0000
+++ l10n_in_hr_payroll/__openerp__.py	2012-08-27 05:33:06 +0000
@@ -28,7 +28,7 @@
     'version': '1.0',
     'description': """
 Indian Payroll Salary Rules.
-=======================
+============================
 
     -Configuration of hr_payroll for India localization
     -All main contributions rules for India payslip.
@@ -53,6 +53,7 @@
          'wizard/hr_salary_employee_bymonth_view.xml',
          'wizard/hr_yearly_salary_detail_view.xml',
          'report/payment_advice_report_view.xml',
+         'report/payslip_report_view.xml',
 
      ],
     'test': [

=== modified file 'l10n_in_hr_payroll/data/l10n_in_hr_payroll_data.xml'
--- l10n_in_hr_payroll/data/l10n_in_hr_payroll_data.xml	2012-08-21 13:20:23 +0000
+++ l10n_in_hr_payroll/data/l10n_in_hr_payroll_data.xml	2012-08-27 05:33:06 +0000
@@ -19,6 +19,41 @@
             <field name="name">Register for Food Coupen</field>
         </record>
 
+        <record id="hr_tds_register" model="hr.contribution.register">
+            <field name="name">Register for TDS</field>
+        </record>
+
+        <record id="hr_nps_contribution_register" model="hr.contribution.register">
+            <field name="name">Register for NPS Contribution</field>
+        </record>
+
+        <record id="hr_vpf_contribution_register" model="hr.contribution.register">
+            <field name="name">Register for Voluntarily Provident Fund</field>
+        </record>
+
+        <record id="hr_company_transport_register" model="hr.contribution.register">
+            <field name="name">Register for Company Provided Transport Deduction</field>
+        </record>
+
+        <record id="hr_labour_Welfare_fund_register" model="hr.contribution.register">
+            <field name="name">Register for State Labour Welfare Fund Deduction</field>
+        </record>
+
+        <record id="hr_group_term_insurance_register" model="hr.contribution.register">
+            <field name="name">Register for Company Provided Group Term Insurance Deduction</field>
+        </record>
+
+        <record id="hr_leave_availed_register" model="hr.contribution.register">
+            <field name="name">Register for Leave Availed Deduction</field>
+        </record>
+
+        <record id="hr_medical_insurance_register" model="hr.contribution.register">
+            <field name="name">Register for Company Provided Medical Insurance Deduction</field>
+        </record>
+
+        <record id="hr_other_deduction_register" model="hr.contribution.register">
+            <field name="name">Register for Other Deduction from Employer</field>
+        </record>
         <!-- Hr Salary Rules for allowance-->
 
         <record id="hr_salary_rule_da" model="hr.salary.rule">
@@ -34,7 +69,7 @@
         <record id="hr_salary_rule_houserentallowancemetro_nonmetro" model="hr.salary.rule">
             <field name="code">HRAMN</field>
             <field name="amount_select">code</field>
-            <field name="amount_python_compute">result=payslip.company_id.dearness_allowance and ((contract.wage + DA) * 0.50) or (contract.wage * 0.50) if (contract.city_type=='metro') else payslip.company_id.dearness_allowance and ((contract.wage + DA) * 0.40) or (contract.wage * 0.40) if (contract.city_type=='non-metro') else 0.00</field>
+            <field name="amount_python_compute">result = payslip.company_id.dearness_allowance and ((contract.wage + DA) * contract.house_rent_allowance_metro_nonmetro / 100) or (contract.wage * contract.house_rent_allowance_metro_nonmetro / 100)</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
             <field name="name">House Rent Allowance for metro and nonmetro city</field>
             <field name="register_id" ref="hr_houserent_allowance_register"/>
@@ -54,8 +89,10 @@
             <field name="code">SA</field>
             <field name="name">Grade/Special/Management/Supplementary Allowance</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
+            <field name="condition_select">python</field>
+            <field name="condition_python">result = bool(contract.supplementary_allowance)</field>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = contract.supplementary_allowance</field>
             <field name="sequence" eval="20"/>
             <field name="note">This allowance is normally given as an additional benefit to employees and is fully taxable.</field>
         </record>
@@ -116,7 +153,8 @@
             <field name="code">ARRE</field>
             <field name="name">Arrears</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="amount_select">fix</field>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = inputs.ARS.amount</field>
             <field eval="0.0" name="amount_fix"/>
             <field name="sequence" eval="28"/>
             <field name="note">Generally arrears are fully taxable, but employee may claim exemption u/s 89(1).
@@ -124,25 +162,13 @@
 Now difference of income tax between payment year and actual year would be allowed for deduction.</field>
         </record>
 
-        <record id="hr_salary_rule_gratuity" model="hr.salary.rule">
-            <field name="code">GRA</field>
-            <field name="name">Gratuity</field>
-            <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="condition_select">none</field>
-            <field name="amount_select">code</field>
-             <field name="amount_python_compute">result = payslip.company_id.dearness_allowance and ((contract.wage + DA) * 15 * employee.number_of_year / worked_days.WORK100.number_of_days) or (contract.wage * 15 * employee.number_of_year / worked_days.WORK100.number_of_days)</field>
-            <field name="sequence" eval="57"/>
-            <field name="note">Covered under the Payment of Gratuity Act, 1971:
-(Last drawn monthly basic salary + dearness allowance)/26 x 15 days x
-number of years of service (date of joining – date of retirement/leaving job)</field>
-        </record>
-
         <record id="hr_salary_rule_lta" model="hr.salary.rule">
             <field name="code">LTA</field>
             <field name="name">Leave Travel Allowance</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="amount_select">fix</field>
-            <field name="amount_fix">1666</field>
+            <field name="amount_select">percentage</field>
+            <field name="amount_percentage_base">contract.wage</field>
+            <field name="amount_percentage" eval="8.33"/>
             <field name="sequence" eval="29"/>
             <field name="note">As per Income tax rules of India, if transport bills for LTA are not provided,the amount will be taxed. E.g. If an employee has LTA allowance as Rs 50,000 in his CTC(cost to company),and he provides proofs of Rs 40,000 (boarding pass,air tickets, taxi vouchers) then income tax will be deducted for rest of the Rs 10,000. Does not matter whats the amount of LTA in an employee’s package, income tax laws only permits domestic air tickets only for LTA claim.</field>
         </record>
@@ -152,8 +178,8 @@
             <field name="name">Leave Encashment</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
             <field name="condition_select">none</field>
-            <field name="amount_select">fix</field>
-            <field name="amount_fix">0.0</field>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = inputs.LE.amount</field>
             <field name="sequence" eval="30"/>
             <field name="note">Payment by way of leave encashment received by Central and State Govt.employees at the time of retirement in respect of the period of earned leave at credit is fully exempt. In case of other employees, the exemption is to be limited to minimum of all below:
     1.The actual amount received
@@ -162,29 +188,40 @@
     4.Rs. 3 Lakh</field>
         </record>
 
-        <record id="hr_salary_rule_bonus" model="hr.salary.rule">
+        <record id="hr_salary_rule_performance" model="hr.salary.rule">
             <field name="code">PI</field>
-            <field name="name">Performance Incentive/Bonus</field>
+            <field name="name">Performance Incentive</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = inputs.PERF.amount</field>
             <field name="sequence" eval="31"/>
             <field name="note">This would be fully taxable based on incentive.</field>
         </record>
 
+        <record id="hr_salary_rule_bonus" model="hr.salary.rule">
+            <field name="code">BONUS</field>
+            <field name="name">Bonus</field>
+            <field name="category_id" ref="hr_payroll.ALW"/>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = inputs.BNS.amount</field>
+            <field name="sequence" eval="41"/>
+            <field name="note">This would be fully taxable based on Bonus.</field>
+        </record>
+
+
         <record id="hr_salary_rule_medical" model="hr.salary.rule">
             <field name="code">MEDA</field>
             <field name="name">Medical Reimbursement</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
             <field name="amount_select">fix</field>
-            <field eval="1200.0" name="amount_fix"/>
+            <field eval="1250.0" name="amount_fix"/>
             <field name="sequence" eval="32"/>
             <field name="note">This component is on-taxable up to 15000 per year (or Rs 1250 per month) on producing medical bills.</field>
         </record>
 
          <record id="hr_salary_rule_food_coupon" model="hr.salary.rule">
             <field name="amount_select">fix</field>
-            <field eval="20" name="amount_fix"/>
+            <field eval="50" name="amount_fix"/>
             <field name="quantity">worked_days.WORK100.number_of_days</field>
             <field name="code">FC</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
@@ -197,28 +234,38 @@
             <field name="code">PERJ</field>
             <field name="name">Periodical Journals</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = inputs.PJ.amount</field>
             <field name="sequence" eval="34"/>
             <field name="note">Some employers may provide component for buying magazines, journals and books as a part of knowledge enhancement for business growth.This part would become non taxable on providing original bills.</field>
         </record>
 
-        <record id="hr_salary_rule_uniform" model="hr.salary.rule">
-            <field name="code">UNIF</field>
-            <field name="name">Uniform/Dress Allowance</field>
+        <record id="hr_salary_rule_uniform_senior" model="hr.salary.rule">
+            <field name="code">UNIFS</field>
+            <field name="name">Uniform/Dress Allowance for Senior Executive</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
             <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
+            <field eval="1000" name="amount_fix"/>
             <field name="sequence" eval="35"/>
             <field name="note">Some sections of employees mat get allowance for purchase of office dress/uniform.In such case, the component would become non-taxable.</field>
         </record>
 
+        <record id="hr_salary_rule_uniform_junior" model="hr.salary.rule">
+            <field name="code">UNIFJ</field>
+            <field name="name">Uniform/Dress Allowance for Junior Executive</field>
+            <field name="category_id" ref="hr_payroll.ALW"/>
+            <field name="amount_select">fix</field>
+            <field eval="600" name="amount_fix"/>
+            <field name="sequence" eval="42"/>
+            <field name="note">Some sections of employees mat get allowance for purchase of office dress/uniform.In such case, the component would become non-taxable.</field>
+        </record>
+
         <record id="hr_salary_rule_telephone" model="hr.salary.rule">
             <field name="code">TELR</field>
             <field name="name">Telephone Reimbursement</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="amount_select">fix</field>
-            <field name="amount_fix">1500</field>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = inputs.TR.amount</field>
             <field name="sequence" eval="36"/>
             <field name="note">In some of the cases, companies may provide a component for telephone bills.Employees may provide actual phone usage bills to reimburse this component and make it non-taxable.
             </field>
@@ -237,8 +284,8 @@
             <field name="code">CAR</field>
             <field name="name">Car Expenses Reimbursement</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="amount_select">fix</field>
-            <field name="amount_fix">1800</field>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = inputs.CEI.amount</field>
             <field name="sequence" eval="38"/>
             <field name="note">In case company provides component for this and employee use self owned car for official and personal purposes, Rs 1800 per month would be non-taxable on showing bills for fuel or can maintenance. This amount would be Rs 2400 in case car is more capacity than 1600cc.</field>
         </record>
@@ -247,8 +294,8 @@
             <field name="code">INT</field>
             <field name="name">Internet Expense</field>
             <field name="category_id" ref="hr_payroll.ALW"/>
-            <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = inputs.IE.amount</field>
             <field name="sequence" eval="39"/>
             <field name="note">Employer may also provide reimbursement of internet expenses and thus this would become non taxable.</field>
         </record>
@@ -276,6 +323,7 @@
             <field name="condition_python">result = bool(contract.tds)</field>
             <field name="amount_select">code</field>
             <field name="amount_python_compute">result = -(contract.tds)</field>
+            <field name="register_id" ref="hr_tds_register"/>
             <field name="sequence" eval="140"/>
             <field name="note">As per income tax rules, all payment which are taxable in nature should be done after deduction of taxes at the source itself. Hence employer compute income tax on salary payment and deduct it every month. This TDS is based on employee’s saving/investment declaration at the start of year. If investments for tax saving is not done, large amount may be deducted in last few months.</field>
         </record>
@@ -297,7 +345,7 @@
             <field name="name">Employee's PF Contribution</field>
             <field name="category_id" ref="hr_payroll.DED"/>
             <field name="amount_select">code</field>
-            <field name="amount_python_compute">result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * 8.33 / 100) or - (contract.wage * 8.33 / 100)</field>
+            <field name="amount_python_compute">result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * 0.12) or - (contract.wage * 0.12)</field>
             <field name= "note">Employer contribution does not become part of employee’s income and hence income tax is not payable on this part.</field>
             <field name="register_id" ref="hr_register_provident_fund"/>
             <field name="sequence" eval="150"/>
@@ -310,6 +358,7 @@
             <field name="amount_select">code</field>
             <field name="amount_python_compute">result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * 0.10) or - (contract.wage * 0.10)</field>
             <field name="sequence" eval="155"/>
+            <field name="register_id" ref="hr_nps_contribution_register"/>
             <field name="note">Employee can claim deduction even of employer's contribution to NPS.</field>
         </record>
 
@@ -322,6 +371,7 @@
             <field name="amount_select">code</field>
             <field name="amount_python_compute">result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * contract.voluntary_provident_fund / 100) or - (contract.wage * contract.voluntary_provident_fund / 100)</field>
             <field name="sequence" eval="160"/>
+            <field name="register_id" ref="hr_vpf_contribution_register"/>
             <field name="note">VPF is a safe option wherein you can contribute more than the PF ceiling of 12% that has been mandated by the government.This additional amount enjoys all the benefits of PF except that the employer is not liable to contribute any extra amount apart from 12%.An added advantage is that the interest rate is equal to the interest rate of PF and he withdrawal is tax free. Please note that the maximum contribution towards VPF is 100% of your Basic.The highest rate of interest (close to 9%) makes it a very attractive saving scheme. Because of these advantages many employees chose not to close their PF account even after getting employment else where other than India.Employees also get a major tax break on their entire contribution to the fund up to a ceiling of Rs. 70,000/-</field>
         </record>
 
@@ -331,27 +381,42 @@
             <field name="category_id" ref="hr_payroll.DED"/>
             <field name="condition_select">none</field>
             <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
+            <field eval="-1500.0" name="amount_fix"/>
+            <field name="register_id" ref="hr_company_transport_register"/>
             <field name="sequence" eval="165"/>
+            <field name="note">Company provided transport amount is based on company.</field>
         </record>
 
          <record id="hr_salary_rule_food_coupon_ded" model="hr.salary.rule">
             <field name="amount_select">fix</field>
-            <field eval="-20" name="amount_fix"/>
+            <field eval="-50" name="amount_fix"/>
             <field name="quantity">worked_days.WORK100.number_of_days</field>
             <field name="code">FD</field>
             <field name="category_id" ref="hr_payroll.DED"/>
             <field name="name">Deduction Towards Food Coupons</field>
+            <field name="register_id" ref="hr_food_coupen_register"/>
             <field name="sequence" eval="166"/>
          </record>
 
-        <record id="hr_payslip_rule_lwf" model="hr.salary.rule">
+        <record id="hr_payslip_rule_lwf_employee" model="hr.salary.rule">
+            <field name="code">LWFE</field>
+            <field name="name">Employee's Deduction Towards State Labour Welfare Fund</field>
+            <field name="category_id" ref="hr_payroll.DED"/>
+            <field name="amount_select">fix</field>
+            <field eval="-3.0" name="amount_fix"/>
+            <field name="sequence" eval="170"/>
+            <field name="register_id" ref="hr_labour_Welfare_fund_register"/>
+            <field name="note">The LWF is applicable to all the members of the organisation except the Management staff (Staffs having authority to sign on the cheque/official documents on behalf of the organisation). for e.x. Employee Contribution is Rs. 3.00 and Employer contribution Rs. 6.00 Total Rs 9.00 and deposited to the LWF office.It is half yearly contribution (June and December).</field>
+        </record>
+
+        <record id="hr_payslip_rule_lwf_employer" model="hr.salary.rule">
             <field name="code">LWF</field>
-            <field name="name">Deduction Towards State Labour Welfare Fund</field>
+            <field name="name">Employer's Deduction Towards State Labour Welfare Fund </field>
             <field name="category_id" ref="hr_payroll.DED"/>
             <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
-            <field name="sequence" eval="170"/>
+            <field eval="-6.0" name="amount_fix"/>
+            <field name="sequence" eval="171"/>
+            <field name="register_id" ref="hr_labour_Welfare_fund_register"/>
             <field name="note">The LWF is applicable to all the members of the organisation except the Management staff (Staffs having authority to sign on the cheque/official documents on behalf of the organisation). for e.x. Employee Contribution is Rs. 3.00 and Employer contribution Rs. 6.00 Total Rs 9.00 and deposited to the LWF office.It is half yearly contribution (June and December).</field>
         </record>
 
@@ -360,8 +425,10 @@
             <field name="name">Deduction Towards Company Provided Group Term Insurance</field>
             <field name="category_id" ref="hr_payroll.DED"/>
             <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
+            <field eval="-1000.0" name="amount_fix"/>
+            <field name="register_id" ref="hr_group_term_insurance_register"/>
             <field name="sequence" eval="175"/>
+            <field name="note">Group term insurance provides a solid foundation to a comprehensive employee benifit program,backed up by government asistance in the form of valuable tax incentives to both employees and employers.</field>
         </record>
 
         <record id="hr_payslip_rule_dla" model="hr.salary.rule">
@@ -369,8 +436,9 @@
             <field name="name">Deduction Towards Leave Availed</field>
             <field name="category_id" ref="hr_payroll.DED"/>
             <field name="condition_select">none</field>
-            <field name="amount_select">fix</field>
-            <field eval="0.0" name="amount_fix"/>
+            <field name="amount_select">code</field>
+            <field name="amount_python_compute">result = - (inputs.LAI.amount)</field>
+            <field name="register_id" ref="hr_leave_availed_register"/>
             <field name="sequence" eval="180"/>
         </record>
 
@@ -383,6 +451,7 @@
             <field name="amount_select">code</field>
             <field name="amount_python_compute">result = - (contract.medical_insurance)</field>
             <field eval="-50.0" name="amount_fix"/>
+            <field name="register_id" ref="hr_medical_insurance_register"/>
             <field name="sequence" eval="185"/>
         </record>
 
@@ -392,6 +461,7 @@
             <field name="category_id" ref="hr_payroll.DED"/>
             <field name="amount_select">fix</field>
             <field eval="-200.0" name="amount_fix"/>
+            <field name="register_id" ref="hr_other_deduction_register"/>
             <field name="sequence" eval="187"/>
         </record>
 
@@ -402,6 +472,7 @@
             <field name="amount_select">code</field>
             <field name="amount_python_compute">result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * 0.10) or - (contract.wage * 0.10)</field>
             <field name="sequence" eval="190"/>
+            <field name="register_id" ref="hr_nps_contribution_register"/>
             <field name= "note">Any amount contributed by your employer to your NPS account is treated as part of your salary and is included in your income but you can claim deduction under Section 80C for this too.thus, effectively making it exempt from tax within the limit of 10% of your basic salary. This is very useful and tax efficient for you particularly if you fall in the maximum tax.</field>
         </record>
 
@@ -416,5 +487,60 @@
             <field name="note">Both the employees and employer contribute to the fund at the rate of 12% of the basic wages, dearness allowance and retaining allowance, if any, payable to employees per month.</field>
         </record>
 
+        <!-- Rule Inputs -->
+
+        <record id="hr_rule_input_performance" model="hr.rule.input">
+            <field name="code">PERF</field>
+            <field name="name">Performance of Employee</field>
+            <field name="input_id" ref="hr_salary_rule_performance"/>
+        </record>
+
+        <record id="hr_rule_input_bonus" model="hr.rule.input">
+            <field name="code">BNS</field>
+            <field name="name">Bonus of Employee</field>
+            <field name="input_id" ref="hr_salary_rule_bonus"/>
+        </record>
+
+        <record id="hr_rule_input_arrears" model="hr.rule.input">
+            <field name="code">ARS</field>
+            <field name="name">Arrears</field>
+            <field name="input_id" ref="hr_salary_rule_arrears"/>
+        </record>
+
+        <record id="hr_rule_input_le" model="hr.rule.input">
+            <field name="code">LE</field>
+            <field name="name">Leave Encashment</field>
+            <field name="input_id" ref="hr_salary_rule_le"/>
+        </record>
+
+        <record id="hr_rule_input_journals" model="hr.rule.input">
+            <field name="code">PJ</field>
+            <field name="name">Periodical Journals</field>
+            <field name="input_id" ref="hr_salary_rule_journals"/>
+        </record>
+
+        <record id="hr_rule_input_telephone" model="hr.rule.input">
+            <field name="code">TR</field>
+            <field name="name">Telephone Reimbursement</field>
+            <field name="input_id" ref="hr_salary_rule_telephone"/>
+        </record>
+
+        <record id="hr_rule_input_car" model="hr.rule.input">
+            <field name="code">CEI</field>
+            <field name="name">Car Expenses</field>
+            <field name="input_id" ref="hr_payroll_rule_car"/>
+        </record>
+
+        <record id="hr_rule_input_internet" model="hr.rule.input">
+            <field name="code">IE</field>
+            <field name="name">Internet Expence</field>
+            <field name="input_id" ref="hr_salary_rule_internet"/>
+        </record>
+
+        <record id="hr_rule_input_leave_avail" model="hr.rule.input">
+            <field name="code">LAI</field>
+            <field name="name">Leave Availed</field>
+            <field name="input_id" ref="hr_payslip_rule_dla"/>
+        </record>
     </data>
 </openerp>

=== modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll.py'
--- l10n_in_hr_payroll/l10n_in_hr_payroll.py	2012-08-21 13:20:23 +0000
+++ l10n_in_hr_payroll/l10n_in_hr_payroll.py	2012-08-27 05:33:06 +0000
@@ -45,62 +45,12 @@
         'driver_salay': fields.boolean('Driver Salary', help="Check this box if you provide allowance for driver"),
         'medical_insurance': fields.float('Medical Insurance', digits_compute=dp.get_precision('Payroll'), help="Deduction towards company provided medical insurance"),
         'voluntary_provident_fund': fields.float('Voluntary Provident Fund', digits_compute=dp.get_precision('Payroll'), help="VPF computed as percentage(%)"),
-        'city_type': fields.selection([
-            ('metro', 'Metro'),
-            ('non-metro', 'Non Metro'),
-            ], 'Type of City'),
-    }
-    _defaults = {
-        'city_type': 'non-metro',
+        'house_rent_allowance_metro_nonmetro': fields.float('House Rent Allowance for Metro and Non Metro City', digits_compute=dp.get_precision('Payroll'), help="HRA computed as percentage(%)"),
+        'supplementary_allowance': fields.float('Supplementary Allowance', digits_compute=dp.get_precision('Payroll')),
     }
 
 hr_contract()
 
-class hr_employee(osv.osv):
-    '''
-    Employee's Join date allows to compute total working
-    experience of Employee and it is used to calculate Gratuity rule.
-    '''
-
-    _inherit = 'hr.employee'
-    _description = 'Employee'
-
-    def _compute_year(self, cr, uid, ids, fields, args, context=None):
-        """
-        @param cr: the current row, from the database cursor,
-        @param uid: the current user’s ID for security checks,
-        @param ids: List of employee’s IDs
-        @return: No. of years of experience.
-        @param context: A standard dictionary for contextual values
-        """
-        res = {}
-        c_date = time.strftime(DATETIME_FORMAT)
-        current_date = datetime.strptime(c_date, DATETIME_FORMAT)
-        for employee in self.browse(cr, uid, ids, context=context):
-            if employee.join_date:
-                date_start = datetime.strptime(employee.join_date, DATETIME_FORMAT)
-                diffyears = current_date.year - date_start.year
-                difference = current_date - date_start.replace(current_date.year)
-                days_in_year = isleap(current_date.year) and 366 or 365
-                difference_in_years = diffyears + (difference.days + difference.seconds / 86400.0) / days_in_year
-                total_years = relativedelta(current_date, date_start).years
-                total_months = relativedelta(current_date, date_start).months
-                if total_months < 10:
-                    year_month = float(total_months) / 10 + total_years
-                else:
-                    year_month = float(total_months) / 100 + total_years
-                res[employee.id] = year_month
-            else:
-                res[employee.id] = 0.0
-        return res
-
-    _columns = {
-        'join_date': fields.date('Join Date', help="Joining date of employee"),
-        'number_of_year': fields.function(_compute_year, string='No. of Years of Service', type="float", store=True, help="Total years of work experience"),
-        }
-
-hr_employee()
-
 class payroll_advice(osv.osv):
     '''
     Bank Advice

=== modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml'
--- l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml	2012-08-21 13:20:23 +0000
+++ l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml	2012-08-27 05:33:06 +0000
@@ -4,13 +4,13 @@
 
         <!-- Salary Structure -->
 
-       <!--  <record id="hr_payroll_salary_structure_ind_emp" model="hr.payroll.structure">
+        <record id="hr_payroll_salary_structure_ind_emp" model="hr.payroll.structure">
             <field name="code">NE</field>
             <field name="name">Non-Executive Employee</field>
-            <field eval="[(6, 0, [ref('hr_salary_rule_medical'), ref('hr_salary_rule_da'), ref('hr_salary_rule_lta'), ref('hr_salary_rule_telephone'), ref('hr_salary_rule_internet'), ref('hr_payroll_rule_child1'), ref('hr_salary_rule_gratuity')])]" name="rule_ids"/>
+            <field eval="[(6, 0, [ref('hr_salary_rule_medical'), ref('hr_salary_rule_da'), ref('hr_salary_rule_lta'), ref('hr_salary_rule_telephone'), ref('hr_salary_rule_internet'), ref('hr_payroll_rule_child1')])]" name="rule_ids"/>
             <field name="company_id" ref="base.main_company"/>
             <field name="parent_id" ref="hr_payroll.structure_base"/>
-        </record> -->
+        </record>
 
     </data>
 </openerp>

=== modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml'
--- l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml	2012-08-21 13:20:23 +0000
+++ l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml	2012-08-27 05:33:06 +0000
@@ -13,7 +13,8 @@
                  <group col="2" colspan="2" name="right_column">
                     <separator colspan="2" string="Allowance"/>
                         <field name="driver_salay"/>
-                        <field name="city_type"/>
+                        <field name="house_rent_allowance_metro_nonmetro"/>
+                        <field name="supplementary_allowance"/>
                  </group>
                  <group col="2" colspan="2" name="left_column">
                     <separator colspan="2" string="Deduction"/>
@@ -26,21 +27,6 @@
             </field>
         </record>
 
-        <record id="hr_employee_form_in_inherit" model="ir.ui.view">
-            <field name="name">hr.employee.form.inherit</field>
-            <field name="model">hr.employee</field>
-            <field name="type">form</field>
-            <field name="inherit_id" ref="hr.view_employee_form"/>
-            <field name="arch" type="xml">
-            <data>
-                 <xpath expr="//field[@name='active']" position="before">
-                    <field name="join_date"/>
-                    <field name="number_of_year"/>
-                 </xpath>
-            </data>
-            </field>
-        </record>
-
         <record id="hr_payslip_run_form_inherit" model="ir.ui.view">
             <field name="name">hr.payslip.run.form.inherit</field>
             <field name="model">hr.payslip.run</field>

=== modified file 'l10n_in_hr_payroll/report/__init__.py'
--- l10n_in_hr_payroll/report/__init__.py	2012-08-21 13:20:23 +0000
+++ l10n_in_hr_payroll/report/__init__.py	2012-08-27 05:33:06 +0000
@@ -27,5 +27,6 @@
 import report_hr_salary_employee_bymonth
 import payment_advice_report
 import report_hr_yearly_salary_detail
+import payslip_report
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_in_hr_payroll/report/payslip_report.py'
--- l10n_in_hr_payroll/report/payslip_report.py	1970-01-01 00:00:00 +0000
+++ l10n_in_hr_payroll/report/payslip_report.py	2012-08-27 05:33:06 +0000
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2012-Today OpenERP SA (<http://www.openerp.com>).
+#
+#    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/>.
+#
+##############################################################################
+
+import tools
+from osv import fields, osv
+
+class payslip_report(osv.osv):
+    _name = "payslip.report"
+    _description = "Payslip Analysis"
+    _auto = False
+    _columns = {
+        'name':fields.char('Name', size=32, readonly=True),
+        'date_from': fields.date('Date From', readonly=True,),
+        'date_to': fields.date('Date To', readonly=True,),
+        'year': fields.char('Year', size=4, readonly=True),
+        'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'),
+            ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), ('09', 'September'),
+            ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', readonly=True),
+        'day': fields.char('Day', size=128, readonly=True),
+        'state': fields.selection([
+            ('draft', 'Draft'),
+            ('done', 'Done'),
+            ('cancel', 'Rejected'),
+        ], 'State', readonly=True),
+        'employee_id': fields.many2one('hr.employee', 'Employee', readonly=True),
+        'nbr': fields.integer('# Payslip lines', readonly=True),
+        'number': fields.char('Number', size=16, readonly=True),
+        'struct_id': fields.many2one('hr.payroll.structure', 'Structure', readonly=True),
+        'company_id':fields.many2one('res.company', 'Company', readonly=True),
+        'paid': fields.boolean('Made Payment Order ? ', readonly=True),
+        'total': fields.float('Total', readonly=True),
+        'category_id':fields.many2one('hr.salary.rule.category', 'Category', readonly=True),
+    }
+    def init(self, cr):
+        tools.drop_view_if_exists(cr, 'payslip_report')
+        cr.execute("""
+            create or replace view payslip_report as (
+                select
+                    min(l.id) as id,
+                    l.name,
+                    p.struct_id,
+                    p.state,
+                    p.date_from,
+                    p.date_to,
+                    p.number,
+                    p.company_id,
+                    p.paid,
+                    l.category_id,
+                    l.employee_id,
+                    sum(l.total) as total,
+                    to_char(p.date_from, 'YYYY') as year,
+                    to_char(p.date_from, 'MM') as month,
+                    to_char(p.date_from, 'YYYY-MM-DD') as day,
+                    to_char(p.date_to, 'YYYY') as to_year,
+                    to_char(p.date_to, 'MM') as to_month,
+                    to_char(p.date_to, 'YYYY-MM-DD') as to_day,
+                    1 AS nbr
+                from
+                    hr_payslip as p
+                    left join hr_payslip_line as l on (p.id=l.slip_id)
+                where 
+                    l.employee_id IS NOT NULL
+                group by
+                    p.number,l.name,p.date_from,p.date_to,p.state,p.company_id,p.paid,
+                    l.employee_id,p.struct_id,l.category_id
+            )
+        """)
+payslip_report()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'l10n_in_hr_payroll/report/payslip_report_view.xml'
--- l10n_in_hr_payroll/report/payslip_report_view.xml	1970-01-01 00:00:00 +0000
+++ l10n_in_hr_payroll/report/payslip_report_view.xml	2012-08-27 05:33:06 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+<data>
+
+    <record id="view_payslip_tree" model="ir.ui.view">
+        <field name="name">payslip.report.tree</field>
+        <field name="model">payslip.report</field>
+        <field name="type">tree</field>
+        <field name="arch" type="xml">
+            <tree colors="blue:state == 'draft';black:state == 'done';gray:state == 'cancel' " string="Payslip Analysis">
+                <field name="nbr" sum="# Payslip Lines"/>
+                <field name="name"/>
+                <field name="employee_id" invisible="1"/>
+                <field name="date_to" invisible="1"/>
+                <field name="date_from" invisible="1"/>
+                <field name="state" invisible="1"/>
+                <field name="number" invisible="1"/>
+                <field name="struct_id" invisible="1"/>
+                <field name="year" invisible="1"/>
+                <field name="day" invisible="1"/>
+                <field name="month" invisible="1"/>
+                <field name="company_id" invisible="1"/>
+                <field name="paid" invisible="1"/>
+                <field name="total" />
+                <field name="category_id" invisible="1"/>
+            </tree>
+        </field>
+    </record>
+
+    <record id="view_payslip_search" model="ir.ui.view">
+        <field name="name">payslip.report.search</field>
+        <field name="model">payslip.report</field>
+        <field name="type">search</field>
+        <field name="arch" type="xml">
+            <search string="Payslip Analysis">
+                 <group>
+                    <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Payslips which are in draft state"/>
+                    <filter icon="terp-check" string="Done" name="done" domain="[('state','=','done')]" help="Payslips which are in done state"/>
+                    <separator orientation="vertical"/>
+                    <filter icon="terp-camera_test" string="Paid" domain="[('paid','=',True)]" help="Payslips which are paid"/>
+                    <separator orientation="vertical"/>
+                    <field name="date_from"/>
+                    <field name="date_to"/>
+                    <separator orientation="vertical"/>
+                    <field name="number"/>
+                    <field name="name"/>
+                    <field name="employee_id"/>
+                </group>
+                <newline/>
+                 <group expand="0" string="Extended Filters...">
+                    <field name="company_id" groups="base.group_multi_company" widget="selection"/>
+                </group>
+                <newline/>
+                <group expand="1" string="Group By...">
+                    <filter string="Employee" name="employee" icon="terp-personal" context="{'group_by':'employee_id'}" />
+                    <filter string="Structure" context="{'group_by':'struct_id'}" />
+                    <filter string="Category" name="category" context="{'group_by':'category_id'}" />
+                    <filter string="Payslip Line" context="{'group_by':'name'}" />
+                    <separator orientation="vertical"/>
+                    <filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
+                    <separator orientation="vertical"/>
+                    <filter string="Company" icon="terp-go-home" groups="base.group_multi_company" context="{'group_by':'company_id'}"/>
+                    <separator orientation="vertical"/>
+                    <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Day of Payslip"/>
+                    <filter string="Month" name="order_month" icon="terp-go-month" context="{'group_by':'month'}" help="Month of Payslip"/>
+                    <filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Year of Payslip"/>
+
+                </group>
+            </search>
+        </field>
+    </record>
+
+    <record id="action_payslip_report_all" model="ir.actions.act_window">
+        <field name="name">Payslip Analysis</field>
+        <field name="res_model">payslip.report</field>
+        <field name="view_type">form</field>
+        <field name="view_mode">tree</field>
+        <field name="view_id" ref="view_payslip_tree"/>
+        <field name="context">{'search_default_employee':1,'search_default_category':1,'group_by_no_leaf':uid,'group_by':[]}</field>
+        <field name="help">This report performs analysis on Payslip</field>
+    </record>
+
+    <menuitem action="action_payslip_report_all" id="menu_reporting_payslip" parent="hr.menu_hr_reporting" sequence="5" groups="base.group_hr_manager"/>
+
+</data>
+</openerp>

=== modified file 'l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.rml'
--- l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.rml	2012-08-21 13:20:23 +0000
+++ l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.rml	2012-08-27 05:33:06 +0000
@@ -239,7 +239,7 @@
     <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
     <paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
     <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_tblheader_Details" rightIndent="0.0" leftIndent="-3.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="Footer" fontName="Helvetica"/>
     <paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
     <paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
@@ -247,7 +247,6 @@
     <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
-    <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
@@ -262,8 +261,7 @@
     <blockTable colWidths="785.0" style="Table12">
       <tr>
         <td>
-          <para style="terp_header_Centre">Employees Salary Details </para>
-          <para style="terp_default_Centre_9">From [[ formatLang(data['form']['date_from'], date=True) ]] To [[ formatLang(data['form']['date_to'], date=True) ]]</para>
+          <para style="terp_default_Centre_9">From <u>[[ formatLang(data['form']['date_from'], date=True) ]]</u> To <u>[[ formatLang(data['form']['date_to'], date=True) ]]</u></para>
         </td>
       </tr>
     </blockTable>
@@ -392,7 +390,7 @@
         <font color="white"> </font>
       </para>
       <section>
-        <blockTable colWidths="785.0" style="Table7">
+        <blockTable colWidths="803.0" style="Table7">
           <tr>
             <td>
               <para style="terp_tblheader_Details">Allowances with Basic: </para>
@@ -404,66 +402,79 @@
           <blockTable colWidths="195.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,56.0" style="Table6">
             <tr>
               <td>
-                <para style="terp_default_9">[[ e1[0] ]]</para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[1]!='' and formatLang(e1[1])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[2]!='' and formatLang(e1[2])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[3]!='' and formatLang(e1[3])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[4]!='' and formatLang(e1[4])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[5]!='' and formatLang(e1[5])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[6]!='' and formatLang(e1[6])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[7]!='' and formatLang(e1[7])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[8]!='' and formatLang(e1[8])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[9]!='' and formatLang(e1[9])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[10]!='' and formatLang(e1[10])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[11]!='' and formatLang(e1[11])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e1[12]!='' and formatLang(e1[12])) or removeParentNode('font') ]]</font>
+                <para style="terp_default_9"><b>[[ e1[0] in ["Basic","Gross"] and e1[0] ]]</b> </para>
+                <para style="terp_default_9">[[ e1[0] not in ["Basic","Gross"] and e1[0] ]]</para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[1]!='' and formatLang(e1[1])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[1]!='' and formatLang(e1[1])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[2]!='' and formatLang(e1[2])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[2]!='' and formatLang(e1[2])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[3]!='' and formatLang(e1[3])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[3]!='' and formatLang(e1[3])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[4]!='' and formatLang(e1[4])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[4]!='' and formatLang(e1[4])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[5]!='' and formatLang(e1[5])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[5]!='' and formatLang(e1[5])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[6]!='' and formatLang(e1[6])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[6]!='' and formatLang(e1[6])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[7]!='' and formatLang(e1[7])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[7]!='' and formatLang(e1[7])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[8]!='' and formatLang(e1[8])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[8]!='' and formatLang(e1[8])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[9]!='' and formatLang(e1[9])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[9]!='' and formatLang(e1[9])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[10]!='' and formatLang(e1[10])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[10]!='' and formatLang(e1[10])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[11]!='' and formatLang(e1[11])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[11]!='' and formatLang(e1[11])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e1[0] in ["Basic","Gross"] and e1[12]!='' and formatLang(e1[12])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e1[0] not in ["Basic","Gross"] and e1[12]!='' and formatLang(e1[12])) or removeParentNode('font') ]]</font>
                 </para>
               </td>
               <td>
@@ -472,7 +483,7 @@
             </tr>
           </blockTable>
         </section>
-        <blockTable colWidths="785.0" style="Table10">
+        <blockTable colWidths="803.0" style="Table10">
           <tr>
             <td>
               <para style="terp_tblheader_Details">Deductions: </para>
@@ -484,66 +495,79 @@
           <blockTable colWidths="195.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,46.0,56.0" style="Table8">
             <tr>
               <td>
-                <para style="terp_default_9">[[ e2[0] ]]</para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[1]!='' and formatLang(e2[1])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[2]!='' and formatLang(e2[2])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[3]!='' and formatLang(e2[3])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[4]!='' and formatLang(e2[4])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[5]!='' and formatLang(e2[5])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[6]!='' and formatLang(e2[6])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[7]!='' and formatLang(e2[7])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[8]!='' and formatLang(e2[8])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[9]!='' and formatLang(e2[9])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[10]!='' and formatLang(e2[10])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[11]!='' and formatLang(e2[11])) or removeParentNode('font') ]]</font>
-                </para>
-              </td>
-              <td>
-                <para style="terp_default_Right_8">
-                  <font face="Helvetica" size="7.0">[[ (e2[12]!='' and formatLang(e2[12])) or removeParentNode('font') ]]</font>
+                <para style="terp_default_9"><b>[[ e2[0] in ["Net"] and e2[0] ]]</b> </para>
+                <para style="terp_default_9">[[ e2[0] not in ["Net"] and e2[0] ]]</para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[1]!='' and formatLang(e2[1])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[1]!='' and formatLang(e2[1])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[2]!='' and formatLang(e2[2])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[2]!='' and formatLang(e2[2])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[3]!='' and formatLang(e2[3])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[3]!='' and formatLang(e2[3])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[4]!='' and formatLang(e2[4])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[4]!='' and formatLang(e2[4])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[5]!='' and formatLang(e2[5])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[5]!='' and formatLang(e2[5])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[6]!='' and formatLang(e2[6])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[6]!='' and formatLang(e2[6])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[7]!='' and formatLang(e2[7])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[7]!='' and formatLang(e2[7])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[8]!='' and formatLang(e2[8])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[8]!='' and formatLang(e2[8])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[9]!='' and formatLang(e2[9])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[9]!='' and formatLang(e2[9])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[10]!='' and formatLang(e2[10])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[10]!='' and formatLang(e2[10])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[11]!='' and formatLang(e2[11])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[11]!='' and formatLang(e2[11])) or removeParentNode('font') ]]</font>
+                </para>
+              </td>
+              <td>
+                <para style="terp_default_Right_8">
+                  <font face="Helvetica-Bold" size="7.0">[[ (e2[0] in ["Net"] and e2[12]!='' and formatLang(e2[12])) or removeParentNode('font') ]]</font>
+                  <font face="Helvetica" size="7.0">[[ (e2[0] not in ["Net"] and e2[12]!='' and formatLang(e2[12])) or removeParentNode('font') ]]</font>
                 </para>
               </td>
               <td>

=== modified file 'l10n_in_hr_payroll/security/ir.model.access.csv'
--- l10n_in_hr_payroll/security/ir.model.access.csv	2012-08-21 13:20:23 +0000
+++ l10n_in_hr_payroll/security/ir.model.access.csv	2012-08-27 05:33:06 +0000
@@ -2,3 +2,4 @@
 "access_hr_payroll_advice_user","hr.payroll.advice","model_hr_payroll_advice","base.group_hr_user",1,1,1,1
 "access_hr_payroll_advice_line_user","hr.payroll.advice.line","model_hr_payroll_advice_line","base.group_hr_user",1,1,1,1
 "access_hr_payroll_advice_report_user","payment.advice.report","model_payment_advice_report","base.group_hr_manager",1,1,1,1
+"access_hr_payroll_payslip_report_user","payslip.report","model_payslip_report","base.group_hr_manager",1,1,1,1


Follow ups