diff --git a/l10n_pe_hr_payroll/data/afp_rules.xml b/l10n_pe_hr_payroll/data/afp_rules.xml
index ffeed643..276c88d9 100644
--- a/l10n_pe_hr_payroll/data/afp_rules.xml
+++ b/l10n_pe_hr_payroll/data/afp_rules.xml
@@ -31,6 +31,7 @@
code
result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][4]
+
@@ -54,6 +55,7 @@ rate = -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_t
result, result_rate = eligible_wage, rate
+
@@ -67,6 +69,7 @@ result, result_rate = eligible_wage, rate
code
result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][1]
+
@@ -80,6 +83,7 @@ result, result_rate = eligible_wage, rate
code
result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][0]
+
diff --git a/l10n_pe_hr_payroll/data/base.xml b/l10n_pe_hr_payroll/data/base.xml
index 09d6d494..a33cb6c8 100644
--- a/l10n_pe_hr_payroll/data/base.xml
+++ b/l10n_pe_hr_payroll/data/base.xml
@@ -1,6 +1,14 @@
+
+ SUNAT
+
+
+
+ AFP
+
+
Peru Employee (5ta Cat.)
diff --git a/l10n_pe_hr_payroll/data/er_rules.xml b/l10n_pe_hr_payroll/data/er_rules.xml
index a5d97b44..87bc9cc5 100644
--- a/l10n_pe_hr_payroll/data/er_rules.xml
+++ b/l10n_pe_hr_payroll/data/er_rules.xml
@@ -25,6 +25,7 @@
code
result, result_rate = categories.BASIC, -payslip.rule_parameter('er_essalud')
+
diff --git a/l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml b/l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml
index d18d87f3..2ed482e7 100644
--- a/l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml
+++ b/l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml
@@ -25,6 +25,7 @@
code
result, result_rate = ir_4ta_cat(payslip, categories, worked_days, inputs)
+
diff --git a/l10n_pe_hr_payroll/data/ir_5ta_cat_rules.xml b/l10n_pe_hr_payroll/data/ir_5ta_cat_rules.xml
index bafd7b5b..c1ac88cb 100644
--- a/l10n_pe_hr_payroll/data/ir_5ta_cat_rules.xml
+++ b/l10n_pe_hr_payroll/data/ir_5ta_cat_rules.xml
@@ -55,6 +55,7 @@
code
result, result_rate = ir_5ta_cat(payslip, categories, worked_days, inputs, BASIC)
+
diff --git a/l10n_pe_hr_payroll/data/onp_rules.xml b/l10n_pe_hr_payroll/data/onp_rules.xml
index b2f81e34..09791d98 100644
--- a/l10n_pe_hr_payroll/data/onp_rules.xml
+++ b/l10n_pe_hr_payroll/data/onp_rules.xml
@@ -25,6 +25,7 @@
code
result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_onp')
+
diff --git a/l10n_pe_hr_payroll/i18n/es.po b/l10n_pe_hr_payroll/i18n/es.po
index da3d014e..38efba65 100644
--- a/l10n_pe_hr_payroll/i18n/es.po
+++ b/l10n_pe_hr_payroll/i18n/es.po
@@ -206,6 +206,11 @@ msgstr "Essalud"
msgid "Exempt from 4th Cat. withholding."
msgstr "Exento de Retención de la 4ta Cat."
+#. module: l10n_pe_hr_payroll
+#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__ee_5ta_cat_exempt
+msgid "Exempt from 5th Cat. withholding."
+msgstr "Exento de Retención de la 5ta Cat."
+
#. module: l10n_pe_hr_payroll
#: model:ir.model.fields,help:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__date_hired
msgid "For calculations like IR 5TH CAT."
diff --git a/l10n_pe_hr_payroll/models/pe_payroll_config.py b/l10n_pe_hr_payroll/models/pe_payroll_config.py
index ebac2dc1..7ec13f85 100644
--- a/l10n_pe_hr_payroll/models/pe_payroll_config.py
+++ b/l10n_pe_hr_payroll/models/pe_payroll_config.py
@@ -12,6 +12,8 @@ class HRContractPEPayrollConfig(models.Model):
date_hired = fields.Date(string='Date Hired', required=True, default=fields.Date.today,
help='For calculations like IR 5TH CAT.')
+ ee_5ta_cat_exempt = fields.Boolean(string='Exempt from 5th Cat. withholding.')
+
retirement_type = fields.Selection([
('afp', 'AFP'),
('onp', 'ONP'),
diff --git a/l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py b/l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py
index da802e61..f137c0b5 100644
--- a/l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py
+++ b/l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py
@@ -3,6 +3,9 @@
from datetime import date
def ir_5ta_cat(payslip, categories, worked_days, inputs, basic_wage):
+ if payslip.dict.contract_id.pe_payroll_config_value('ee_5ta_cat_exempt'):
+ return 0.0, 0.0
+
pay_periods_in_year = payslip.pay_periods_in_year
uit = payslip.rule_parameter('pe_uit')
payslip_date_end = payslip.dict.date_to
diff --git a/l10n_pe_hr_payroll/views/pe_payroll_config_views.xml b/l10n_pe_hr_payroll/views/pe_payroll_config_views.xml
index 4ae8e587..38ec9bda 100644
--- a/l10n_pe_hr_payroll/views/pe_payroll_config_views.xml
+++ b/l10n_pe_hr_payroll/views/pe_payroll_config_views.xml
@@ -28,6 +28,7 @@
+