[REF] l10n_pe_hr_payroll: extraordinary input for extra paid day off

Several BASIC rules became ALW to remove the dependency on BASIC rule for calculation on IR 5th CAT.
This commit is contained in:
Jared Kipe
2022-06-30 16:34:42 +00:00
parent ee70144b7f
commit 7aa8d62279
6 changed files with 33 additions and 10 deletions

View File

@@ -3,7 +3,7 @@
{ {
'name': 'Peru - Payroll', 'name': 'Peru - Payroll',
'author': 'Hibou Corp. <hello@hibou.io>', 'author': 'Hibou Corp. <hello@hibou.io>',
'version': '15.0.2022.0.0', 'version': '15.0.2022.1.0',
'category': 'Payroll Localization', 'category': 'Payroll Localization',
'depends': [ 'depends': [
'hr_payroll_hibou', 'hr_payroll_hibou',

View File

@@ -99,6 +99,28 @@
<field name="parent_id" ref="hr_payroll.COMP"/> <field name="parent_id" ref="hr_payroll.COMP"/>
</record> </record>
<!-- Extra input & rule -->
<record id="input_type_extra" model="hr.payslip.input.type">
<field name="name">Extraordinary Wage</field>
<field name="code">EXTRA</field>
<field name="country_id" ref="base.pe" />
<field name="struct_ids" eval="[
(4, ref('l10n_pe_hr_payroll.hr_payroll_structure')),
]" />
</record>
<record id="hr_salary_rule_extra" model="hr.salary.rule">
<field name="condition_select">python</field>
<field name="condition_python">result = inputs.EXTRA.amount > 0.0 if inputs.EXTRA else False</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">result = inputs.EXTRA.amount if inputs.EXTRA else 0</field>
<field name="code">ALW_EXTRA</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="name">Extraordinary Wage</field>
<field name="sequence" eval="24"/>
<field name="struct_id" ref="l10n_pe_hr_payroll.hr_payroll_structure"/>
</record>
<!-- Bonus input & rule --> <!-- Bonus input & rule -->
<record id="input_type_bono" model="hr.payslip.input.type"> <record id="input_type_bono" model="hr.payslip.input.type">
<field name="name">Bonus</field> <field name="name">Bonus</field>
@@ -114,8 +136,8 @@
<field name="condition_python">result = inputs.BONO.amount > 0.0 if inputs.BONO else False</field> <field name="condition_python">result = inputs.BONO.amount > 0.0 if inputs.BONO else False</field>
<field name="amount_select">code</field> <field name="amount_select">code</field>
<field name="amount_python_compute">result = inputs.BONO.amount if inputs.BONO else 0</field> <field name="amount_python_compute">result = inputs.BONO.amount if inputs.BONO else 0</field>
<field name="code">BASIC_BONO</field> <field name="code">ALW_BONO</field>
<field name="category_id" ref="hr_payroll.BASIC"/> <field name="category_id" ref="hr_payroll.ALW"/>
<field name="name">Bonus</field> <field name="name">Bonus</field>
<field name="sequence" eval="25"/> <field name="sequence" eval="25"/>
<field name="struct_id" ref="l10n_pe_hr_payroll.hr_payroll_structure"/> <field name="struct_id" ref="l10n_pe_hr_payroll.hr_payroll_structure"/>

View File

@@ -21,9 +21,9 @@
<field name="name">ER: PE Essalud</field> <field name="name">ER: PE Essalud</field>
<field name="code">ER_PE_ESSALUD</field> <field name="code">ER_PE_ESSALUD</field>
<field name="condition_select">python</field> <field name="condition_select">python</field>
<field name="condition_python">result = categories.BASIC</field> <field name="condition_python">result = categories.GROSS</field>
<field name="amount_select">code</field> <field name="amount_select">code</field>
<field name="amount_python_compute">result, result_rate = categories.BASIC, -payslip.rule_parameter('er_essalud')</field> <field name="amount_python_compute">result, result_rate = categories.GROSS, -payslip.rule_parameter('er_essalud')</field>
<field name="appears_on_payslip" eval="True"/> <field name="appears_on_payslip" eval="True"/>
<field name="partner_id" ref="partner_sunat"/> <field name="partner_id" ref="partner_sunat"/>
</record> </record>

View File

@@ -6,7 +6,7 @@
<field name="condition_python">result = inputs.COMMISSION.amount > 0.0 if inputs.COMMISSION else False</field> <field name="condition_python">result = inputs.COMMISSION.amount > 0.0 if inputs.COMMISSION else False</field>
<field name="amount_select">code</field> <field name="amount_select">code</field>
<field name="amount_python_compute">result = inputs.COMMISSION.amount if inputs.COMMISSION else 0</field> <field name="amount_python_compute">result = inputs.COMMISSION.amount if inputs.COMMISSION else 0</field>
<field name="code">BASIC_COM</field> <field name="code">ALW_COM</field>
<field name="category_id" ref="hr_payroll.BASIC"/> <field name="category_id" ref="hr_payroll.BASIC"/>
<field name="name">Commissions</field> <field name="name">Commissions</field>
<field name="sequence" eval="20"/> <field name="sequence" eval="20"/>
@@ -19,7 +19,7 @@
<field name="condition_python">result = inputs.BADGES.amount > 0.0 if inputs.BADGES else False</field> <field name="condition_python">result = inputs.BADGES.amount > 0.0 if inputs.BADGES else False</field>
<field name="amount_select">code</field> <field name="amount_select">code</field>
<field name="amount_python_compute">result = inputs.BADGES.amount if inputs.BADGES else 0</field> <field name="amount_python_compute">result = inputs.BADGES.amount if inputs.BADGES else 0</field>
<field name="code">BASIC_BADGES</field> <field name="code">ALW_BADGES</field>
<field name="category_id" ref="hr_payroll.BASIC"/> <field name="category_id" ref="hr_payroll.BASIC"/>
<field name="name">Badges</field> <field name="name">Badges</field>
<field name="sequence" eval="20"/> <field name="sequence" eval="20"/>

View File

@@ -51,9 +51,9 @@
<field name="name">EE: PE IR 5th Cat.</field> <field name="name">EE: PE IR 5th Cat.</field>
<field name="code">EE_PE_IR_5TA_CAT</field> <field name="code">EE_PE_IR_5TA_CAT</field>
<field name="condition_select">python</field> <field name="condition_select">python</field>
<field name="condition_python">result, _ = ir_5ta_cat(payslip, categories, worked_days, inputs, BASIC)</field> <field name="condition_python">result, _ = ir_5ta_cat(payslip, categories, worked_days, inputs)</field>
<field name="amount_select">code</field> <field name="amount_select">code</field>
<field name="amount_python_compute">result, result_rate = ir_5ta_cat(payslip, categories, worked_days, inputs, BASIC)</field> <field name="amount_python_compute">result, result_rate = ir_5ta_cat(payslip, categories, worked_days, inputs)</field>
<field name="appears_on_payslip" eval="True"/> <field name="appears_on_payslip" eval="True"/>
<field name="partner_id" ref="partner_sunat"/> <field name="partner_id" ref="partner_sunat"/>
</record> </record>

View File

@@ -2,7 +2,8 @@
from datetime import date from datetime import date
def ir_5ta_cat(payslip, categories, worked_days, inputs, basic_wage): def ir_5ta_cat(payslip, categories, worked_days, inputs):
basic_wage = categories.BASIC
if payslip.dict.contract_id.pe_payroll_config_value('ee_5ta_cat_exempt'): if payslip.dict.contract_id.pe_payroll_config_value('ee_5ta_cat_exempt'):
return 0.0, 0.0 return 0.0, 0.0