From c033b7d29e1e80fe96514d2c1eb5e8cc6213ca6a Mon Sep 17 00:00:00 2001 From: Mayank Patel Date: Wed, 11 Sep 2024 05:48:27 +0000 Subject: [PATCH] [REM] l10n_pe_hr_payroll: available in professional H14528 --- l10n_pe_hr_payroll/__init__.py | 12 - l10n_pe_hr_payroll/__manifest__.py | 36 -- l10n_pe_hr_payroll/data/afp_rules.xml | 89 ----- l10n_pe_hr_payroll/data/base.xml | 192 ---------- l10n_pe_hr_payroll/data/er_rules.xml | 31 -- l10n_pe_hr_payroll/data/integration_rules.xml | 29 -- l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml | 31 -- l10n_pe_hr_payroll/data/ir_5ta_cat_rules.xml | 130 ------- l10n_pe_hr_payroll/data/onp_rules.xml | 31 -- l10n_pe_hr_payroll/i18n/es.po | 328 ------------------ l10n_pe_hr_payroll/models/__init__.py | 6 - l10n_pe_hr_payroll/models/hr_contract.py | 13 - l10n_pe_hr_payroll/models/hr_payslip.py | 81 ----- .../models/pe_payroll_config.py | 43 --- l10n_pe_hr_payroll/models/rules/__init__.py | 5 - l10n_pe_hr_payroll/models/rules/general.py | 58 ---- l10n_pe_hr_payroll/models/rules/ir_4ta_cat.py | 8 - l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py | 108 ------ l10n_pe_hr_payroll/models/update.py | 32 -- .../security/ir.model.access.csv | 2 - .../static/description/icon.png | Bin 8221 -> 0 bytes l10n_pe_hr_payroll/tests/__init__.py | 6 - l10n_pe_hr_payroll/tests/common.py | 64 ---- .../views/hr_contract_views.xml | 21 -- .../views/pe_payroll_config_views.xml | 72 ---- 25 files changed, 1428 deletions(-) delete mode 100644 l10n_pe_hr_payroll/__init__.py delete mode 100644 l10n_pe_hr_payroll/__manifest__.py delete mode 100644 l10n_pe_hr_payroll/data/afp_rules.xml delete mode 100644 l10n_pe_hr_payroll/data/base.xml delete mode 100644 l10n_pe_hr_payroll/data/er_rules.xml delete mode 100644 l10n_pe_hr_payroll/data/integration_rules.xml delete mode 100644 l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml delete mode 100644 l10n_pe_hr_payroll/data/ir_5ta_cat_rules.xml delete mode 100644 l10n_pe_hr_payroll/data/onp_rules.xml delete mode 100644 l10n_pe_hr_payroll/i18n/es.po delete mode 100644 l10n_pe_hr_payroll/models/__init__.py delete mode 100644 l10n_pe_hr_payroll/models/hr_contract.py delete mode 100644 l10n_pe_hr_payroll/models/hr_payslip.py delete mode 100644 l10n_pe_hr_payroll/models/pe_payroll_config.py delete mode 100644 l10n_pe_hr_payroll/models/rules/__init__.py delete mode 100644 l10n_pe_hr_payroll/models/rules/general.py delete mode 100644 l10n_pe_hr_payroll/models/rules/ir_4ta_cat.py delete mode 100644 l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py delete mode 100644 l10n_pe_hr_payroll/models/update.py delete mode 100644 l10n_pe_hr_payroll/security/ir.model.access.csv delete mode 100644 l10n_pe_hr_payroll/static/description/icon.png delete mode 100644 l10n_pe_hr_payroll/tests/__init__.py delete mode 100755 l10n_pe_hr_payroll/tests/common.py delete mode 100644 l10n_pe_hr_payroll/views/hr_contract_views.xml delete mode 100644 l10n_pe_hr_payroll/views/pe_payroll_config_views.xml diff --git a/l10n_pe_hr_payroll/__init__.py b/l10n_pe_hr_payroll/__init__.py deleted file mode 100644 index 013f4e73..00000000 --- a/l10n_pe_hr_payroll/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -from . import models - -def _post_install_hook(cr, registry): - """ - This method will set the default for the Payslip Sum Behavior - """ - cr.execute("SELECT id FROM ir_config_parameter WHERE key = 'hr_payroll.payslip.sum_behavior';") - existing = cr.fetchall() - if not existing: - cr.execute("INSERT INTO ir_config_parameter (key, value) VALUES ('hr_payroll.payslip.sum_behavior', 'date');") diff --git a/l10n_pe_hr_payroll/__manifest__.py b/l10n_pe_hr_payroll/__manifest__.py deleted file mode 100644 index 2c3d8f99..00000000 --- a/l10n_pe_hr_payroll/__manifest__.py +++ /dev/null @@ -1,36 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -{ - 'name': 'Peru - Payroll', - 'author': 'Hibou Corp. ', - 'version': '15.0.2022.2.0', - 'category': 'Payroll Localization', - 'depends': [ - 'hr_payroll_hibou', - 'hr_contract_reports', - 'hibou_professional', - ], - 'description': """ -Peru - Payroll Rules. -===================== - - """, - - 'data': [ - 'security/ir.model.access.csv', - 'data/base.xml', - 'data/integration_rules.xml', - 'data/afp_rules.xml', - 'data/onp_rules.xml', - 'data/ir_4ta_cat_rules.xml', - 'data/ir_5ta_cat_rules.xml', - 'data/er_rules.xml', - 'views/hr_contract_views.xml', - 'views/pe_payroll_config_views.xml', - ], - 'demo': [ - ], - 'auto_install': False, - 'post_init_hook': '_post_install_hook', - 'license': 'OPL-1', -} diff --git a/l10n_pe_hr_payroll/data/afp_rules.xml b/l10n_pe_hr_payroll/data/afp_rules.xml deleted file mode 100644 index 276c88d9..00000000 --- a/l10n_pe_hr_payroll/data/afp_rules.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - EE: AFP - ee_afp - - - - { - # 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), - } - - - - - - - - - - EE: PE AFP Pensions - EE_PE_AFP_PENSIONES - python - result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'afp' - code - result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][4] - - - - - - - - - EE: PE AFP Insurance - EE_PE_AFP_SEGURO - python - result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'afp' - code - -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 - - - - - - - - - - EE: PE AFP Mixed Commission - EE_PE_AFP_COMISION_MIXTA - python - result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'afp' and contract.pe_payroll_config_value('afp_comision_type') == 'mixta' - code - result, result_rate = categories.GROSS, -payslip.rule_parameter('ee_afp')[contract.pe_payroll_config_value('afp_type')][1] - - - - - - - - - EE: PE AFP Comission (Non-Mixed) - EE_PE_AFP_COMISION_NON_MIXTA - python - result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'afp' and contract.pe_payroll_config_value('afp_comision_type') == 'non_mixta' - 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 deleted file mode 100644 index ae59e259..00000000 --- a/l10n_pe_hr_payroll/data/base.xml +++ /dev/null @@ -1,192 +0,0 @@ - - - - - SUNAT - - - - AFP - - - - Peru Employee (5ta Cat.) - - - - - - Peru Employee (5ta Cat.) - PE5 - - - - - - - - - - - July/December Gratuity (5ta Cat.) - PE5GRATIF - - - - - - - - Peru Employee (4ta Cat.) - - - - - - Peru Employee (4ta Cat.) - - - - - - - - - - - EE: AFP - EE_PE_AFP - - - - ER: AFP - ER_PE_AFP - - - - - - EE: ONP - EE_PE_ONP - - - - ER: ONP - ER_PE_ONP - - - - - - EE: IR 5th Cat. - EE_PE_IR_5TA_CAT - - - - ER: IR 5th Cat. - ER_PE_IR_5TA_CAT - - - - - - EE: IR 4th Cat. - EE_PE_IR_4TA_CAT - - - - - - EE: Essalud (rem) - EE_PE_ESSALUD - - - - EE: Essalud - ER_PE_ESSALUD - - - - - - Extraordinary Wage - EXTRA - - - - - - python - result = inputs.EXTRA.amount > 0.0 if inputs.EXTRA else False - code - result = inputs.EXTRA.amount if inputs.EXTRA else 0 - ALW_EXTRA - - Extraordinary Wage - - - - - - - Bonus - BONO - - - - - - python - result = inputs.BONO.amount > 0.0 if inputs.BONO else False - code - result = inputs.BONO.amount if inputs.BONO else 0 - ALW_BONO - - Bonus - - - - - - - - Peru Minimum Wage - pe_min_wage - - - - 930.0 - - - - - - Peru Minor Dependent Rate - pe_minor_dependent_rate - - - - 10.0 - - - - - - python - result = contract.pe_payroll_config_value('has_minor_dependent') - code - result, result_rate = payslip.rule_parameter('pe_min_wage'), payslip.rule_parameter('pe_minor_dependent_rate') - BASIC_HOUSEHOLD - - Basic: Household Allowance - - - - - diff --git a/l10n_pe_hr_payroll/data/er_rules.xml b/l10n_pe_hr_payroll/data/er_rules.xml deleted file mode 100644 index 5c4fdc5b..00000000 --- a/l10n_pe_hr_payroll/data/er_rules.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - ER: Essalud - er_essalud - - - - 6.75 - - - - - - - - - - ER: PE Essalud - ER_PE_ESSALUD - python - result = categories.GROSS - code - result, result_rate = categories.GROSS, -payslip.rule_parameter('er_essalud') - - - - - diff --git a/l10n_pe_hr_payroll/data/integration_rules.xml b/l10n_pe_hr_payroll/data/integration_rules.xml deleted file mode 100644 index 57274a74..00000000 --- a/l10n_pe_hr_payroll/data/integration_rules.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - python - result = inputs.COMMISSION.amount > 0.0 if inputs.COMMISSION else False - code - result = inputs.COMMISSION.amount if inputs.COMMISSION else 0 - ALW_COM - - Commissions - - - - - - - python - result = inputs.BADGES.amount > 0.0 if inputs.BADGES else False - code - result = inputs.BADGES.amount if inputs.BADGES else 0 - ALW_BADGES - - Badges - - - - - \ No newline at end of file diff --git a/l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml b/l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml deleted file mode 100644 index 2ed482e7..00000000 --- a/l10n_pe_hr_payroll/data/ir_4ta_cat_rules.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - EE: IR 4ta Cat. - ee_ir_4ta_cat - - - - 8.0 - - - - - - - - - - EE: PE IR 4th Cat. - EE_PE_IR_4TA_CAT - python - result, _ = ir_4ta_cat(payslip, categories, worked_days, inputs) - 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 deleted file mode 100644 index 7d7d73d5..00000000 --- a/l10n_pe_hr_payroll/data/ir_5ta_cat_rules.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - Peru UIT - pe_uit - - - - 4400.0 - - - - - - EE: IR 5ta Cat. - ee_ir_5ta_cat - - - - - [ - ( 5.0, 8.0), - ( 20.0, 14.0), - ( 35.0, 17.0), - ( 45.0, 20.0), - ('inf', 30.0), - ] - - - - - - EE: IR 5ta Cat. Bonificación Extraordinaria (Ley 29351) - ee_ir_5ta_cat_ley_29351 - - - - 9.0 - - - - - - - - Manual IR 5th Cat. - EE_PE_IR_5TA_CAT - - - - - - - - - EE: PE IR 5th Cat. - EE_PE_IR_5TA_CAT - python - result, _ = ir_5ta_cat(payslip, categories, worked_days, inputs) - code - result, result_rate = ir_5ta_cat(payslip, categories, worked_days, inputs) - - - - - - - Gratif Full Months - MONTHS - - - - - - - - - Gratif - ALW_GRATIF - none - code - result = payslip.paid_amount - - - - - - - - Household Allowance - ALW_GRATIF_HOUSEHOLD - python - result = contract.pe_payroll_config_value('has_minor_dependent') - code - result, result_rate = (payslip.rule_parameter('pe_min_wage')*inputs.MONTHS.amount / 6.0), payslip.rule_parameter('pe_minor_dependent_rate') - - - - - - - - Gratif Bonifextra - ALW_GRATIF_BONIFEXTRA - python - result = categories.ALW - code - result, result_rate = categories.ALW, payslip.rule_parameter('er_essalud') - - - - - - - - Net Gratif - NET - none - code - result = categories.BASIC + categories.ALW + categories.DED - - - - diff --git a/l10n_pe_hr_payroll/data/onp_rules.xml b/l10n_pe_hr_payroll/data/onp_rules.xml deleted file mode 100644 index 09791d98..00000000 --- a/l10n_pe_hr_payroll/data/onp_rules.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - EE: ONP - ee_onp - - - - 13.0 - - - - - - - - - - EE: PE ONP/SNP - EE_PE_ONP - python - result = categories.GROSS and contract.pe_payroll_config_value('retirement_type') == 'onp' - 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 deleted file mode 100644 index 4ec71b08..00000000 --- a/l10n_pe_hr_payroll/i18n/es.po +++ /dev/null @@ -1,328 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * l10n_pe_hr_payroll -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 15.0+e\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-27 20:00+0000\n" -"PO-Revision-Date: 2022-07-27 20:00+0000\n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__retirement_type__afp -msgid "AFP" -msgstr "AFP" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__afp_comision_type -msgid "AFP Commission Type" -msgstr "Tipo de Comisión de AFP" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__afp_type -msgid "AFP Type" -msgstr "Tipo de AFP" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_salary_rule_gamification -msgid "Badges" -msgstr "Insignias" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_salary_rule_bonus -msgid "Bonus" -msgstr "Bono" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_salary_rule_commission -msgid "Commissions" -msgstr "Comisiones" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__comp_ss_eps_rule_id -msgid "Company Social Security EPS Rule" -msgstr "Regla EPS de la Seguridad Social de la Empresa" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__comp_ss_type -msgid "Company Social Services" -msgstr "Servicios Social de la Empresa" - -#. module: l10n_pe_hr_payroll -#: model:ir.model,name:l10n_pe_hr_payroll.model_hr_contract_pe_payroll_config -msgid "Contract PE Payroll Forms" -msgstr "Formularios de Nómina del Contrato PE" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__create_uid -msgid "Created by" -msgstr "Creado Por" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__create_date -msgid "Created on" -msgstr "Creado En" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__name -msgid "Description" -msgstr "Descripción" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__display_name -msgid "Display Name" -msgstr "Nombre para Mostrar" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_ee_pe_afp -msgid "EE: AFP" -msgstr "EE: AFP" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_er_essalud -msgid "EE: Essalud" -msgstr "EE: Essalud" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_ee_essalud -msgid "EE: Essalud (rem)" -msgstr "EE: Essalud (rem)" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_ee_ir_4ta_cat -msgid "EE: IR 4th Cat." -msgstr "EE: IR 4ta Cat." - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_ee_ir_5ta_cat -msgid "EE: IR 5th Cat." -msgstr "EE: IR 5ta Cat." - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_ee_pe_onp -msgid "EE: ONP" -msgstr "EE: ONP" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_payroll_rule_ee_afp_comision_non_mixta -msgid "EE: PE AFP Comission (Non-Mixed)" -msgstr "EE: PE AFP Comisión (No-Mixta)" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_payroll_rule_ee_afp_seguro -msgid "EE: PE AFP Insurance" -msgstr "EE: PE AFP Seguro" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_payroll_rule_ee_afp_comision_mixta -msgid "EE: PE AFP Mixed Commission" -msgstr "EE: PE AFP Comisión Mixta" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_payroll_rule_ee_afp_pensiones -msgid "EE: PE AFP Pensions" -msgstr "EE: PE AFP Pensiones" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_payroll_rule_ee_ir_4ta_cat -msgid "EE: PE IR 4th Cat." -msgstr "EE: PE IR 4ta Cat." - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_payroll_rule_ee_ir_5ta_cat -msgid "EE: PE IR 5th Cat." -msgstr "EE: PE IR 5ta Cat." - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_payroll_rule_ee_onp -msgid "EE: PE ONP/SNP" -msgstr "EE: PE ONP/SNP" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__comp_ss_type__eps -msgid "EPS" -msgstr "EPS" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_er_pe_afp -msgid "ER: AFP" -msgstr "ER: AFP" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_er_ir_5ta_cat -msgid "ER: IR 5th Cat." -msgstr "ER: IR 5ta Cat." - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule.category,name:l10n_pe_hr_payroll.hr_payroll_category_er_pe_onp -msgid "ER: ONP" -msgstr "ER: ONP" - -#. module: l10n_pe_hr_payroll -#: model:hr.salary.rule,name:l10n_pe_hr_payroll.hr_payroll_rule_er_essalud -msgid "ER: PE Essalud" -msgstr "ER: PE Essalud" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__employee_id -#: model_terms:ir.ui.view,arch_db:l10n_pe_hr_payroll.pe_payroll_config_form -msgid "Employee" -msgstr "Empleado" - -#. module: l10n_pe_hr_payroll -#: model:ir.model,name:l10n_pe_hr_payroll.model_hr_contract -msgid "Employee Contract" -msgstr "Contrato de Empleado" - -#. module: l10n_pe_hr_payroll -#: model_terms:ir.ui.view,arch_db:l10n_pe_hr_payroll.pe_payroll_config_form -msgid "Employee Payroll Forms" -msgstr "Formularios de Nómina del Empleado" - -#. module: l10n_pe_hr_payroll -#: model_terms:ir.ui.view,arch_db:l10n_pe_hr_payroll.pe_payroll_config_form -msgid "Employer" -msgstr "Empleador" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__comp_ss_type__essalud -msgid "Essalud" -msgstr "Essalud" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract__pe_payroll_ee_4ta_cat_exempt -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:hr.salary.rule,name:l10n_pe_hr_payroll.hr_salary_rule_extra -msgid "Extraordinary Wage" -msgstr "Salario Extraordinario" - -#. 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." -msgstr "Para Cálculos como IR 5TA CAT." - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__afp_type__habitat -msgid "Habitat" -msgstr "Habitat" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__id -msgid "ID" -msgstr "ID" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__afp_type__integra -msgid "Integra" -msgstr "Integra" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config____last_update -msgid "Last Modified on" -msgstr "Última Modificación En" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__write_uid -msgid "Last Updated by" -msgstr "Última Actualización Por" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__write_date -msgid "Last Updated on" -msgstr "Ultima Actualización En" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__afp_comision_type__mixta -msgid "Mixed" -msgstr "Mixta" - -#. module: l10n_pe_hr_payroll -#: model_terms:ir.actions.act_window,help:l10n_pe_hr_payroll.pe_payroll_config_action_main -msgid "No Forms" -msgstr "Sin Formularios" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__afp_comision_type__non_mixta -msgid "Non-Mixed" -msgstr "No-Mixta" - -#. module: l10n_pe_hr_payroll -#: model_terms:ir.ui.view,arch_db:l10n_pe_hr_payroll.pe_payroll_config_form -msgid "Not supported. Specify rule." -msgstr "No Soportado. Indique una Regla" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__retirement_type__onp -msgid "ONP" -msgstr "ONP" - -#. module: l10n_pe_hr_payroll -#: model:ir.model,name:l10n_pe_hr_payroll.model_hr_payslip -msgid "Pay Slip" -msgstr "Recibo de Nómina" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract__pe_payroll_config_id -msgid "Payroll Forms" -msgstr "Formularios de Nómina" - -#. module: l10n_pe_hr_payroll -#: model:ir.actions.act_window,name:l10n_pe_hr_payroll.pe_payroll_config_action_main -#: model_terms:ir.ui.view,arch_db:l10n_pe_hr_payroll.pe_payroll_config_tree -msgid "Peru Employee Payroll Forms" -msgstr "Formularios de Nómina del Empleado de Perú" - -#. module: l10n_pe_hr_payroll -#: model_terms:ir.ui.view,arch_db:l10n_pe_hr_payroll.pe_payroll_config_search -msgid "Peru Employee Payroll Forms Search" -msgstr "Búsqueda de Formularios de Nómina del Empleado de Perú" - -#. module: l10n_pe_hr_payroll -#: model:ir.ui.menu,name:l10n_pe_hr_payroll.pe_payroll_config_menu_main -msgid "Peru Payroll Forms" -msgstr "Formularios de Nómina de Perú" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__afp_type__prima -msgid "Prima" -msgstr "Prima" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__afp_type__profuturo -msgid "Profuturo" -msgstr "Profuturo" - -#. module: l10n_pe_hr_payroll -#: model:ir.model,name:l10n_pe_hr_payroll.model_publisher_warranty_contract -msgid "Publisher Warranty Contract" -msgstr "Contrato de Garantía del Editorial" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields.selection,name:l10n_pe_hr_payroll.selection__hr_contract_pe_payroll_config__retirement_type__retired -msgid "Retired" -msgstr "Jubilado" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,field_description:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__retirement_type -msgid "Retirement Type" -msgstr "Tipo de Jubilación" - -#. module: l10n_pe_hr_payroll -#: model:ir.model.fields,help:l10n_pe_hr_payroll.field_hr_contract_pe_payroll_config__comp_ss_eps_rule_id -msgid "Rule code prefix 'ER_PE_EPS' to select here." -msgstr "Prefijo del Código de la Regla 'ER_PE_EPS' a Seleccionar Aquí." diff --git a/l10n_pe_hr_payroll/models/__init__.py b/l10n_pe_hr_payroll/models/__init__.py deleted file mode 100644 index 30e1b8cc..00000000 --- a/l10n_pe_hr_payroll/models/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -from . import hr_contract -from . import hr_payslip -from . import pe_payroll_config -from . import update diff --git a/l10n_pe_hr_payroll/models/hr_contract.py b/l10n_pe_hr_payroll/models/hr_contract.py deleted file mode 100644 index f6bfbacf..00000000 --- a/l10n_pe_hr_payroll/models/hr_contract.py +++ /dev/null @@ -1,13 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -from odoo import api, fields, models - - -class PEHRContract(models.Model): - _inherit = 'hr.contract' - - pe_payroll_config_id = fields.Many2one('hr.contract.pe_payroll_config', 'Payroll Forms') - pe_payroll_ee_4ta_cat_exempt = fields.Boolean(string='Exempt from 4th Cat. withholding.') - - def pe_payroll_config_value(self, name): - return self.pe_payroll_config_id[name] diff --git a/l10n_pe_hr_payroll/models/hr_payslip.py b/l10n_pe_hr_payroll/models/hr_payslip.py deleted file mode 100644 index 992bfdc1..00000000 --- a/l10n_pe_hr_payroll/models/hr_payslip.py +++ /dev/null @@ -1,81 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -from datetime import date - -from odoo import api, fields, models -from .rules.general import _general_rate -from .rules.ir_4ta_cat import ir_4ta_cat -from .rules.ir_5ta_cat import ir_5ta_cat - - -class HRPayslip(models.Model): - _inherit = 'hr.payslip' - - @api.model_create_multi - def create(self, vals_list): - payslips = super().create(vals_list) - draft_slips = payslips.filtered(lambda p: p.employee_id and p.state == 'draft') - if not draft_slips: - return payslips - - for slip in draft_slips.filtered(lambda s: s.struct_id.code == 'PE5GRATIF'): - slip._pe_5thcat_gratif_update_input_line() - - return payslips - - def _pe_5thcat_gratif_update_input_line(self): - full_months_type = self.env.ref('l10n_pe_hr_payroll.input_type_gratif_months', raise_if_not_found=False) - if not full_months_type: - return - for payslip in self: - # compute full months, for now I'll hard code to 6 - amount = payslip._pe_5thcat_gratif_months() - lines_to_remove = payslip.input_line_ids.filtered(lambda x: x.input_type_id == full_months_type) - input_lines_vals = [(2, line.id, False) for line in lines_to_remove] - input_lines_vals.append((0, 0, { - 'amount': amount, - 'input_type_id': full_months_type.id - })) - payslip.update({'input_line_ids': input_lines_vals}) - - def _pe_5thcat_gratif_months(self): - full_months = 0 - # are we in July or December? - # brute force, but this algorithm should be very very fast - date_hire = self.contract_id.first_contract_date - if self.date_to.month == 7: - for i in range(1, 7): - if date_hire < date(self.date_to.year, i, 15): - full_months += 1 - else: - for i in range(7, 13): - # note this is run in December, so it should look at current year - if date_hire < date(self.date_to.year, i, 15): - full_months += 1 - return full_months - - def _get_base_local_dict(self): - res = super()._get_base_local_dict() - res.update({ - 'general_rate': _general_rate, - 'ir_4ta_cat': ir_4ta_cat, - 'ir_5ta_cat': ir_5ta_cat, - }) - return res - - def _get_paid_amount(self): - if self.struct_id.code == 'PE5GRATIF': - return self._pe_5thcat_gratif() - return super()._get_paid_amount() - - def _pe_5thcat_gratif(self): - if self.contract_id.structure_type_id != self.struct_id.type_id: - return 0.0 - - # TODO hourly averages daily hours to compute from wage - basic = self.contract_id._get_contract_wage() - month_line = self.input_line_ids.filtered(lambda l: l.code == 'MONTHS') - if not basic or not month_line: - return 0.0 - # normalize to 6 months - return basic * (1.0 / 6.0) * month_line.amount diff --git a/l10n_pe_hr_payroll/models/pe_payroll_config.py b/l10n_pe_hr_payroll/models/pe_payroll_config.py deleted file mode 100644 index 5a8e4e13..00000000 --- a/l10n_pe_hr_payroll/models/pe_payroll_config.py +++ /dev/null @@ -1,43 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -from odoo import api, fields, models, _ - - -class HRContractPEPayrollConfig(models.Model): - _name = 'hr.contract.pe_payroll_config' - _description = 'Contract PE Payroll Forms' - - 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([ - ('afp', 'AFP'), - ('onp', 'ONP'), - ('retired', 'Retired'), - ], string='Retirement Type', required=True, default='afp') - - # AFP Type may actually be company specific.... - afp_type = fields.Selection([ - ('habitat', 'Habitat'), - ('integra', 'Integra'), - ('prima', 'Prima'), - ('profuturo', 'Profuturo'), - ], string='AFP Type', default='profuturo') - afp_comision_type = fields.Selection([ - ('mixta', 'Mixed'), - ('non_mixta', 'Non-Mixed'), - ], string='AFP Commission Type', default='mixta') - - comp_ss_type = fields.Selection([ - ('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.") diff --git a/l10n_pe_hr_payroll/models/rules/__init__.py b/l10n_pe_hr_payroll/models/rules/__init__.py deleted file mode 100644 index 9b5a0ca1..00000000 --- a/l10n_pe_hr_payroll/models/rules/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -from . import general -from . import ir_4ta_cat -from . import ir_5ta_cat diff --git a/l10n_pe_hr_payroll/models/rules/general.py b/l10n_pe_hr_payroll/models/rules/general.py deleted file mode 100644 index a061b934..00000000 --- a/l10n_pe_hr_payroll/models/rules/general.py +++ /dev/null @@ -1,58 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -def _general_rate(payslip, wage, ytd_wage, wage_base=None, wage_start=None, rate=None): - """ - Function parameters: - wage_base, wage_start, rate can either be strings (rule_parameters) or floats - :return: result, result_rate(wage, percent) - """ - - # Resolve parameters. On exception, return (probably missing a year, would rather not have exception) - if wage_base and isinstance(wage_base, str): - try: - wage_base = payslip.rule_parameter(wage_base) - except (KeyError, UserError): - return 0.0, 0.0 - - if wage_start and isinstance(wage_start, str): - try: - wage_start = payslip.rule_parameter(wage_start) - except (KeyError, UserError): - return 0.0, 0.0 - - if rate and isinstance(rate, str): - try: - rate = payslip.rule_parameter(rate) - except (KeyError, UserError): - return 0.0, 0.0 - - if not rate: - return 0.0, 0.0 - else: - # Rate assumed positive percentage! - rate = -rate - - if wage_base: - remaining = wage_base - ytd_wage - if remaining < 0.0: - result = 0.0 - elif remaining < wage: - result = remaining - else: - result = wage - - # _logger.warn(' wage_base method result: ' + str(result) + ' rate: ' + str(rate)) - return result, rate - if wage_start: - if ytd_wage >= wage_start: - # _logger.warn(' wage_start 1 method result: ' + str(wage) + ' rate: ' + str(rate)) - return wage, rate - if ytd_wage + wage <= wage_start: - # _logger.warn(' wage_start 2 method result: ' + str(0.0) + ' rate: ' + str(0.0)) - return 0.0, 0.0 - # _logger.warn(' wage_start 3 method result: ' + str((wage - (wage_start - ytd_wage))) + ' rate: ' + str(rate)) - return (wage - (wage_start - ytd_wage)), rate - - # If the wage doesn't have a start or a base - # _logger.warn(' basic result: ' + str(wage) + ' rate: ' + str(rate)) - return wage, rate diff --git a/l10n_pe_hr_payroll/models/rules/ir_4ta_cat.py b/l10n_pe_hr_payroll/models/rules/ir_4ta_cat.py deleted file mode 100644 index 390d4196..00000000 --- a/l10n_pe_hr_payroll/models/rules/ir_4ta_cat.py +++ /dev/null @@ -1,8 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -def ir_4ta_cat(payslip, categories, worked_days, inputs): - if payslip.contract_id.pe_payroll_ee_4ta_cat_exempt: - return 0.0, 0.0 - wage = categories.GROSS - rate = payslip.rule_parameter('ee_ir_4ta_cat') - return wage, -rate diff --git a/l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py b/l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py deleted file mode 100644 index 8164f6b0..00000000 --- a/l10n_pe_hr_payroll/models/rules/ir_5ta_cat.py +++ /dev/null @@ -1,108 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -from datetime import date -from pprint import pformat - -import logging -_logger = logging.getLogger(__name__) - - -def ir_5ta_cat(payslip, categories, worked_days, inputs): - if inputs.EE_PE_IR_5TA_CAT: - # cannot look for amount because it could be forced to zero - return inputs.EE_PE_IR_5TA_CAT.amount, 100.0 - - basic_wage = categories.BASIC - 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 - - # IF this is the last payroll in June or December - # THEN we need to 'true up' the last two quarters of withholding (e.g. give a refund) - last_payslip_june = payslip_date_end.month == 6 and payslip_date_end.day == 30 - # NOTE we do NOT currently support 'catch up' in June. Our formula genearlly already catches up. - last_payslip_june = False - last_payslip_december = payslip_date_end.month == 12 and payslip_date_end.day == 31 - - wage_period = categories.GROSS - if not any((basic_wage, wage_period, last_payslip_june, last_payslip_december)): - return 0.0, 0.0 - - period_additional_wage = max(wage_period - basic_wage, 0.0) # 0.0 or positive - - year = payslip_date_end.year - next_year = date(year+1, 1, 1) - prior_wage_year = payslip.sum_category('GROSS', str(year) + '-01-01', str(year+1) + '-01-01') - pay_periods_at_current = round(((next_year - payslip_date_end).days / 365) * pay_periods_in_year) + 1.0 - - wage_year = (basic_wage * pay_periods_at_current) + prior_wage_year - - # IF employee's `first_contract_date` is in current year - # THEN we can pro-rate the period (reduce withholding) - # TODO replace with just date_from on contract or something - # we are told that every year new contracts will be needed - date_hired = payslip.dict.contract_id.first_contract_date - payslip_date_end = payslip.dict.date_to - hired_in_year = date_hired.year == payslip_date_end.year - periods_in_year_eligible = pay_periods_in_year - if hired_in_year: - periods_in_year_eligible = round(((next_year - date_hired).days / 365) * pay_periods_in_year) - - # normalize 1era Gratification - if hired_in_year and date_hired.month > 6: - wage_gratif_1 = 0.0 - elif hired_in_year: - wage_gratif_1 = basic_wage / 6 * (6 - date_hired.month + 1) - else: - wage_gratif_1 = basic_wage - - # normalize 2da Gratification - if hired_in_year and date_hired.month > 6: - wage_gratif_2 = basic_wage / 6 * (12 - date_hired.month + 1) - else: - wage_gratif_2 = basic_wage - - wage_year += wage_gratif_1 + wage_gratif_2 - cat_ley = (wage_gratif_1 + wage_gratif_2) * (payslip.rule_parameter('ee_ir_5ta_cat_ley_29351') / 100.0) - wage_year += cat_ley - wage_year += period_additional_wage - - over_7uit = wage_year - (7.0 * uit) - total_tax = 0.0 - if over_7uit > 0.0: - total_tax = 0.0 - last_uit = 0.0 - for _uit, rate in payslip.rule_parameter('ee_ir_5ta_cat'): - # marginal brackets - _uit = float(_uit) - if over_7uit > (last_uit * uit): - eligible_wage = min(over_7uit, _uit * uit) - (last_uit * uit) - if eligible_wage > 0.0: - total_tax += eligible_wage * (rate / 100.0) - else: - break - else: - break - last_uit = _uit - - # if total_tax: - ytd_tax = -payslip.sum_category('EE_PE_IR_5TA_CAT', str(year) + '-01-01', str(year+1) + '-01-01') - - if last_payslip_june or last_payslip_december: - if last_payslip_june: - # does not work right because the gratif_2 is already there - total_tax /= 2 - # remaining_tax may flip signs - remaining_tax = -(total_tax - ytd_tax) - if not wage_period: - # to give refund, cannot normalize to wage - return remaining_tax, 100.0 - return wage_period, (remaining_tax / wage_period * 100.0) - - tax = -(total_tax - ytd_tax) / pay_periods_at_current - # uncomment to see a lot of detail - # _logger.info('ir_5ta_cat locals: ' + str(pformat(locals()))) - return wage_period, (tax / wage_period * 100.0) diff --git a/l10n_pe_hr_payroll/models/update.py b/l10n_pe_hr_payroll/models/update.py deleted file mode 100644 index b901db8a..00000000 --- a/l10n_pe_hr_payroll/models/update.py +++ /dev/null @@ -1,32 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -import datetime -from odoo import api, fields, models - - -class PublisherWarrantyContract(models.AbstractModel): - _inherit = 'publisher_warranty.contract' - - def _get_hibou_modules(self): - modules = super(PublisherWarrantyContract, self)._get_hibou_modules() - try: - today_date = fields.Date.today() - last_thirty_date = today_date - datetime.timedelta(days=30) - today = fields.Date.to_string(today_date + datetime.timedelta(days=1)) # Dates vs Datetimes, pad out a day - last_thirty = fields.Date.to_string(last_thirty_date) - self.env.cr.execute( - 'SELECT COUNT(DISTINCT(employee_id)) FROM hr_payslip WHERE create_date BETWEEN %s AND %s', - (last_thirty, today)) - employee_count = self.env.cr.fetchone()[0] or 0 - modules.update({ - 'l10n_pe_hr_payroll': employee_count, - }) - except: - pass - return modules - - @api.model - def hibou_payroll_modules_to_update(self): - res = super().hibou_payroll_modules_to_update() - res.append('l10n_pe_hr_payroll') - return res diff --git a/l10n_pe_hr_payroll/security/ir.model.access.csv b/l10n_pe_hr_payroll/security/ir.model.access.csv deleted file mode 100644 index 2ccba490..00000000 --- a/l10n_pe_hr_payroll/security/ir.model.access.csv +++ /dev/null @@ -1,2 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_hr_contract_pe_payroll_config,hr.contract.pe_payroll_config,model_hr_contract_pe_payroll_config,hr_payroll.group_hr_payroll_manager,1,1,1,1 diff --git a/l10n_pe_hr_payroll/static/description/icon.png b/l10n_pe_hr_payroll/static/description/icon.png deleted file mode 100644 index 586dd9e83651c9d9a5bb9b0ab08e1a4dcf033034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8221 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 diff --git a/l10n_pe_hr_payroll/tests/__init__.py b/l10n_pe_hr_payroll/tests/__init__.py deleted file mode 100644 index 7a934474..00000000 --- a/l10n_pe_hr_payroll/tests/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -# Tests moved to `l10n_pe_hr_payroll_params` -# common remains for site specific tests - -from . import common diff --git a/l10n_pe_hr_payroll/tests/common.py b/l10n_pe_hr_payroll/tests/common.py deleted file mode 100755 index f6f45697..00000000 --- a/l10n_pe_hr_payroll/tests/common.py +++ /dev/null @@ -1,64 +0,0 @@ -# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. - -from odoo.addons.hr_payroll_hibou.tests import common - - -process_payslip = common.process_payslip - - -class TestPePayslip(common.TestPayslip): - - def setUp(self): - super().setUp() - self.structure_type = self.env.ref('l10n_pe_hr_payroll.structure_type_employee') - self.structure = self.env.ref('l10n_pe_hr_payroll.hr_payroll_structure') - self.structure_gratif = self.env.ref('l10n_pe_hr_payroll.hr_payroll_structure_gratif') - self.structure_type.default_struct_id = self.structure - # self.debug = True - self._log('PE structue_type %s %s and structure %s %s' % (self.structure_type, self.structure_type.name, self.structure, self.structure.name)) - self.country_pe = self.env.ref('base.pe') - - def _createEmployee(self): - employee = super()._createEmployee() - employee.country_id = self.country_pe - return employee - - def _createContract(self, employee, **kwargs): - if not 'schedule_pay' in kwargs: - kwargs['schedule_pay'] = 'monthly' - - config_model = self.env['hr.contract.pe_payroll_config'] - schedule_pay = kwargs['schedule_pay'] - config_values = { - 'name': 'Test Config Values', - 'employee_id': employee.id, - } - contract_values = { - 'name': 'Test Contract', - 'employee_id': employee.id, - } - - for key, val in kwargs.items(): - # Assume any Odoo object is in a Many2one - if hasattr(val, 'id'): - val = val.id - found = False - if hasattr(config_model, key): - config_values[key] = val - found = True - if hasattr(self.contract_model, key): - contract_values[key] = val - found = True - if not found: - self._logger.warning('cannot locate attribute names "%s" on hr.contract().' % (key, )) - - # PE Payroll Config Defaults Should be set on the Model - config = config_model.create(config_values) - contract_values['pe_payroll_config_id'] = config.id - - self._get_contract_defaults(contract_values) - contract = self.contract_model.create(contract_values) - - # Compatibility with Odoo 14 - contract.structure_type_id.default_struct_id.schedule_pay = schedule_pay - return contract diff --git a/l10n_pe_hr_payroll/views/hr_contract_views.xml b/l10n_pe_hr_payroll/views/hr_contract_views.xml deleted file mode 100644 index a3aa7a7f..00000000 --- a/l10n_pe_hr_payroll/views/hr_contract_views.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - hr.contract.form.inherit - hr.contract - - - - - - - - - - \ No newline at end of file diff --git a/l10n_pe_hr_payroll/views/pe_payroll_config_views.xml b/l10n_pe_hr_payroll/views/pe_payroll_config_views.xml deleted file mode 100644 index 6be79864..00000000 --- a/l10n_pe_hr_payroll/views/pe_payroll_config_views.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - hr.contract.pe_payroll_config.tree - hr.contract.pe_payroll_config - - - - - - - - - - - - - hr.contract.pe_payroll_config.form - hr.contract.pe_payroll_config - -
- - - - - - - - - - - - - - - -

Not supported. Specify rule.

- - -
-
-
-
-
-
- - - hr.contract.pe_payroll_config.search - hr.contract.pe_payroll_config - - - - - - - - - - Peru Employee Payroll Forms - hr.contract.pe_payroll_config - tree,form - -

- No Forms -

-
-
- - -