mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[IMP] l10n_pe_hr_payroll: support household allowance, and EE EPS rule
This commit is contained in:
@@ -153,4 +153,40 @@
|
|||||||
<field name="struct_id" ref="l10n_pe_hr_payroll.hr_payroll_structure"/>
|
<field name="struct_id" ref="l10n_pe_hr_payroll.hr_payroll_structure"/>
|
||||||
</record>
|
</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>
|
</odoo>
|
||||||
|
|||||||
@@ -80,6 +80,19 @@
|
|||||||
<field name="appears_on_payslip" eval="True"/>
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
</record>
|
</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">
|
<record id="hr_payroll_rule_ir_5ta_cat_gratif_bono" model="hr.salary.rule">
|
||||||
<field name="sequence" eval="90"/>
|
<field name="sequence" eval="90"/>
|
||||||
<field name="struct_id" ref="hr_payroll_structure_gratif"/>
|
<field name="struct_id" ref="hr_payroll_structure_gratif"/>
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class HRContractPEPayrollConfig(models.Model):
|
|||||||
name = fields.Char(string="Description")
|
name = fields.Char(string="Description")
|
||||||
employee_id = fields.Many2one('hr.employee', string="Employee", required=True)
|
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.')
|
ee_5ta_cat_exempt = fields.Boolean(string='Exempt from 5th Cat. withholding.')
|
||||||
|
|
||||||
retirement_type = fields.Selection([
|
retirement_type = fields.Selection([
|
||||||
@@ -34,6 +35,9 @@ class HRContractPEPayrollConfig(models.Model):
|
|||||||
('essalud', 'Essalud'),
|
('essalud', 'Essalud'),
|
||||||
('eps', 'EPS'),
|
('eps', 'EPS'),
|
||||||
], string='Company Social Services', default='essalud')
|
], 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',
|
comp_ss_eps_rule_id = fields.Many2one('hr.salary.rule', string='Company Social Security EPS Rule',
|
||||||
domain=[('code', '=like', 'ER_PE_EPS%')],
|
domain=[('code', '=like', 'ER_PE_EPS%')],
|
||||||
help="Rule code prefix 'ER_PE_EPS' to select here.")
|
help="Rule code prefix 'ER_PE_EPS' to select here.")
|
||||||
|
|||||||
@@ -99,5 +99,6 @@ def ir_5ta_cat(payslip, categories, worked_days, inputs):
|
|||||||
return wage_period, (remaining_tax / wage_period * 100.0)
|
return wage_period, (remaining_tax / wage_period * 100.0)
|
||||||
|
|
||||||
tax = -(total_tax - ytd_tax) / pay_periods_at_current
|
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)
|
return wage_period, (tax / wage_period * 100.0)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<group name="employee" string="Employee">
|
<group name="employee" string="Employee">
|
||||||
|
<field name="has_minor_dependent" help="Eligible for Household Allowance"/>
|
||||||
<field name="ee_5ta_cat_exempt"/>
|
<field name="ee_5ta_cat_exempt"/>
|
||||||
<field name="retirement_type"/>
|
<field name="retirement_type"/>
|
||||||
<field name="afp_type" attrs="{'invisible': [('retirement_type', '!=', 'afp')]}"/>
|
<field name="afp_type" attrs="{'invisible': [('retirement_type', '!=', 'afp')]}"/>
|
||||||
@@ -34,6 +35,7 @@
|
|||||||
<group name="employer" string="Employer">
|
<group name="employer" string="Employer">
|
||||||
<field name="comp_ss_type" />
|
<field name="comp_ss_type" />
|
||||||
<p attrs="{'invisible': [('comp_ss_type', '!=', 'eps')]}">Not supported. Specify rule.</p>
|
<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')]}" />
|
<field name="comp_ss_eps_rule_id" attrs="{'invisible': [('comp_ss_type', '!=', 'eps')]}" />
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
|
|||||||
Reference in New Issue
Block a user