mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
Removed partners as chart of accounts is detailed enough to allow reconciliation. No support for EPS as discussed as legacy. No wage base, but rather 'monthly maximum' on Seguo. NEEDS IR 5TH CAT. refactor to use partial pay period and true up on month 6 and 12
86 lines
4.7 KiB
XML
86 lines
4.7 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<odoo>
|
|
|
|
<!-- Parameters -->
|
|
<record id="rule_parameter_ee_afp" model="hr.rule.parameter">
|
|
<field name="name">EE: AFP</field>
|
|
<field name="code">ee_afp</field>
|
|
<field name="country_id" ref="base.pe"/>
|
|
</record>
|
|
<record id="rule_parameter_ee_afp_2020" model="hr.rule.parameter.value">
|
|
<field name="parameter_value">{
|
|
# non-mixta, mixta_monthly, mixta_annually, iss, ley, maximum (iss wage base)
|
|
'habitat': (1.47, 0.38, 1.25, 1.35, 10.0, 9707.03),
|
|
'integra': (1.55, 0.00, 1.82, 1.35, 10.0, 9707.03),
|
|
'prima': (1.60, 0.18, 1.25, 1.35, 10.0, 9707.03),
|
|
'profuturo': (1.69, 0.67, 1.20, 1.35, 10.0, 9707.03),
|
|
}</field>
|
|
<field name="rule_parameter_id" ref="rule_parameter_ee_afp"/>
|
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
|
</record>
|
|
|
|
<!-- EE Rules -->
|
|
<record id="hr_payroll_rule_ee_afp_pensiones" model="hr.salary.rule">
|
|
<field name="sequence" eval="190"/>
|
|
<field name="struct_id" ref="hr_payroll_structure"/>
|
|
<field name="category_id" ref="hr_payroll_category_ee_pe_afp"/>
|
|
<field name="name">EE: PE AFP Pensiones</field>
|
|
<field name="code">EE_PE_AFP_PENSIONES</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'afp'</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][4]</field>
|
|
<field name="appears_on_payslip" eval="True"/>
|
|
</record>
|
|
|
|
<record id="hr_payroll_rule_ee_afp_seguro" model="hr.salary.rule">
|
|
<field name="sequence" eval="191"/>
|
|
<field name="struct_id" ref="hr_payroll_structure"/>
|
|
<field name="category_id" ref="hr_payroll_category_ee_pe_afp"/>
|
|
<field name="name">EE: PE AFP Seguro</field>
|
|
<field name="code">EE_PE_AFP_SEGURO</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'afp'</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">
|
|
wage = categories.GROSS
|
|
# wage_max is monthly
|
|
wage_max = payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][5]
|
|
# normalize wage_max to pay period
|
|
pay_periods_in_year = payslip.pay_periods_in_year
|
|
wage_max = (wage_max * 12.0) / pay_periods_in_year
|
|
eligible_wage = min(wage, wage_max)
|
|
rate = -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][3]
|
|
result, result_rate = eligible_wage, rate
|
|
</field>
|
|
<field name="appears_on_payslip" eval="True"/>
|
|
</record>
|
|
|
|
<record id="hr_payroll_rule_ee_afp_comision_mixta" model="hr.salary.rule">
|
|
<field name="sequence" eval="192"/>
|
|
<field name="struct_id" ref="hr_payroll_structure"/>
|
|
<field name="category_id" ref="hr_payroll_category_ee_pe_afp"/>
|
|
<field name="name">EE: PE AFP Comisión Mixta</field>
|
|
<field name="code">EE_PE_AFP_COMISION_MIXTA</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'afp' and contract.pe_payroll_config_value('afp_comision_type') == 'mixta'</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][1]</field>
|
|
<field name="appears_on_payslip" eval="True"/>
|
|
</record>
|
|
|
|
<record id="hr_payroll_rule_ee_afp_comision_non_mixta" model="hr.salary.rule">
|
|
<field name="sequence" eval="192"/>
|
|
<field name="struct_id" ref="hr_payroll_structure"/>
|
|
<field name="category_id" ref="hr_payroll_category_ee_pe_afp"/>
|
|
<field name="name">EE: PE AFP Comisión (Non-Mixta)</field>
|
|
<field name="code">EE_PE_AFP_COMISION_NON_MIXTA</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'afp' and contract.pe_payroll_config_value('afp_comision_type') == 'non_mixta'</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][0]</field>
|
|
<field name="appears_on_payslip" eval="True"/>
|
|
</record>
|
|
|
|
</odoo>
|