[IMP] l10n_pe_hr_payroll: support household allowance, and EE EPS rule

This commit is contained in:
Jared Kipe
2022-09-29 20:22:54 +00:00
parent 9fbc5142be
commit 7d0a537bde
5 changed files with 57 additions and 1 deletions

View File

@@ -153,4 +153,40 @@
<field name="struct_id" ref="l10n_pe_hr_payroll.hr_payroll_structure"/>
</record>
<!-- Household Allowance -->
<!-- Parameters -->
<record id="rule_parameter_pe_min_wage" model="hr.rule.parameter">
<field name="name">Peru Minimum Wage</field>
<field name="code">pe_min_wage</field>
<field name="country_id" ref="base.pe"/>
</record>
<record id="rule_parameter_pe_min_wage_2020" model="hr.rule.parameter.value">
<field name="parameter_value">930.0</field>
<field name="rule_parameter_id" ref="rule_parameter_pe_min_wage"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_pe_minor_dependent_rate" model="hr.rule.parameter">
<field name="name">Peru Minor Dependent Rate</field>
<field name="code">pe_minor_dependent_rate</field>
<field name="country_id" ref="base.pe"/>
</record>
<record id="rule_parameter_pe_minor_dependent_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">10.0</field>
<field name="rule_parameter_id" ref="rule_parameter_pe_minor_dependent_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="hr_salary_rule_household_allowance" model="hr.salary.rule">
<field name="condition_select">python</field>
<field name="condition_python">result = contract.pe_payroll_config_value('has_minor_dependent')</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">result, result_rate = payslip.rule_parameter('pe_min_wage'), payslip.rule_parameter('pe_minor_dependent_rate')</field>
<field name="code">BASIC_HOUSEHOLD</field>
<field name="category_id" ref="hr_payroll.BASIC"/>
<field name="name">Basic: Household Allowance</field>
<field name="sequence" eval="5"/>
<field name="struct_id" ref="l10n_pe_hr_payroll.hr_payroll_structure"/>
</record>
</odoo>

View File

@@ -80,6 +80,19 @@
<field name="appears_on_payslip" eval="True"/>
</record>
<record id="hr_payroll_rule_ir_5ta_cat_gratif_household" model="hr.salary.rule">
<field name="sequence" eval="81"/>
<field name="struct_id" ref="hr_payroll_structure_gratif"/>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="name">Household Allowance</field>
<field name="code">ALW_GRATIF_HOUSEHOLD</field>
<field name="condition_select">python</field>
<field name="condition_python">result = contract.pe_payroll_config_value('has_minor_dependent')</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">result, result_rate = payslip.rule_parameter('pe_min_wage'), payslip.rule_parameter('pe_minor_dependent_rate')</field>
<field name="appears_on_payslip" eval="True"/>
</record>
<record id="hr_payroll_rule_ir_5ta_cat_gratif_bono" model="hr.salary.rule">
<field name="sequence" eval="90"/>
<field name="struct_id" ref="hr_payroll_structure_gratif"/>

View File

@@ -10,6 +10,7 @@ class HRContractPEPayrollConfig(models.Model):
name = fields.Char(string="Description")
employee_id = fields.Many2one('hr.employee', string="Employee", required=True)
has_minor_dependent = fields.Boolean(string='Has Minor Dependent', help='Eligible for Household Allowance')
ee_5ta_cat_exempt = fields.Boolean(string='Exempt from 5th Cat. withholding.')
retirement_type = fields.Selection([
@@ -34,6 +35,9 @@ class HRContractPEPayrollConfig(models.Model):
('essalud', 'Essalud'),
('eps', 'EPS'),
], string='Company Social Services', default='essalud')
comp_ss_eps_ee_rule_id = fields.Many2one('hr.salary.rule', string='Employee Social Security EPS Rule',
domain=[('code', '=like', 'EE_PE_EPS%')],
help="Rule code prefix 'EE_PE_EPS' to select here.")
comp_ss_eps_rule_id = fields.Many2one('hr.salary.rule', string='Company Social Security EPS Rule',
domain=[('code', '=like', 'ER_PE_EPS%')],
help="Rule code prefix 'ER_PE_EPS' to select here.")

View File

@@ -99,5 +99,6 @@ def ir_5ta_cat(payslip, categories, worked_days, inputs):
return wage_period, (remaining_tax / wage_period * 100.0)
tax = -(total_tax - ytd_tax) / pay_periods_at_current
_logger.info('ir_5ta_cat locals: ' + str(pformat(locals())))
# uncomment to see a lot of detail
# _logger.info('ir_5ta_cat locals: ' + str(pformat(locals())))
return wage_period, (tax / wage_period * 100.0)

View File

@@ -26,6 +26,7 @@
</group>
<group>
<group name="employee" string="Employee">
<field name="has_minor_dependent" help="Eligible for Household Allowance"/>
<field name="ee_5ta_cat_exempt"/>
<field name="retirement_type"/>
<field name="afp_type" attrs="{'invisible': [('retirement_type', '!=', 'afp')]}"/>
@@ -34,6 +35,7 @@
<group name="employer" string="Employer">
<field name="comp_ss_type" />
<p attrs="{'invisible': [('comp_ss_type', '!=', 'eps')]}">Not supported. Specify rule.</p>
<field name="comp_ss_eps_ee_rule_id" attrs="{'invisible': [('comp_ss_type', '!=', 'eps')]}" />
<field name="comp_ss_eps_rule_id" attrs="{'invisible': [('comp_ss_type', '!=', 'eps')]}" />
</group>
</group>