diff --git a/l10n_pe_hr_payroll/data/base.xml b/l10n_pe_hr_payroll/data/base.xml
index e4416df3..09d6d494 100644
--- a/l10n_pe_hr_payroll/data/base.xml
+++ b/l10n_pe_hr_payroll/data/base.xml
@@ -16,6 +16,10 @@
]"/>
+
+
+
+
Peru Employee (4ta Cat.)
@@ -28,6 +32,10 @@
+
+
+
+
EE: AFP
diff --git a/l10n_pe_hr_payroll/tests/common.py b/l10n_pe_hr_payroll/tests/common.py
index 5b0a35aa..e8b128f1 100755
--- a/l10n_pe_hr_payroll/tests/common.py
+++ b/l10n_pe_hr_payroll/tests/common.py
@@ -1,65 +1,33 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
-from logging import getLogger
-from sys import float_info as sys_float_info
-from collections import defaultdict
-from datetime import timedelta
-
-from odoo.tests import common
-from odoo.tools.float_utils import float_round as odoo_float_round
+from odoo.addons.hr_payroll_hibou.tests import common
-def process_payslip(payslip):
- try:
- payslip.action_payslip_done()
- except AttributeError:
- # v9
- payslip.process_sheet()
+process_payslip = common.process_payslip
-class TestPePayslip(common.TransactionCase):
- debug = False
- _logger = getLogger(__name__)
+class TestPePayslip(common.TestPayslip):
def setUp(self):
super().setUp()
- # TODO Question, is this the correct summing behavior for Peru?
- self.env['ir.config_parameter'].set_param('hr_payroll.payslip.sum_behavior', 'date_to')
- self.structure_type_id = self.ref('l10n_pe_hr_payroll.structure_type_employee')
- self.resource_calendar_id = self.ref('resource.resource_calendar_std')
-
- float_info = sys_float_info
-
- def float_round(self, value, digits):
- return odoo_float_round(value, digits)
-
- _payroll_digits = -1
-
- @property
- def payroll_digits(self):
- if self._payroll_digits == -1:
- self._payroll_digits = self.env['decimal.precision'].precision_get('Payroll')
- return self._payroll_digits
-
- def _log(self, message):
- if self.debug:
- self._logger.warn(message)
-
+ 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_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):
- return self.env['hr.employee'].create({
- 'birthday': '1985-03-14',
- 'country_id': self.ref('base.pe'),
- 'department_id': self.ref('hr.dep_rd'),
- 'gender': 'male',
- 'name': 'Jared'
- })
+ 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'
- schedule_pay = kwargs['schedule_pay']
+
config_model = self.env['hr.contract.pe_payroll_config']
- contract_model = self.env['hr.contract']
+ schedule_pay = kwargs['schedule_pay']
config_values = {
'name': 'Test Config Values',
'employee_id': employee.id,
@@ -77,11 +45,11 @@ class TestPePayslip(common.TransactionCase):
if hasattr(config_model, key):
config_values[key] = val
found = True
- if hasattr(contract_model, key):
+ if hasattr(self.contract_model, key):
contract_values[key] = val
found = True
if not found:
- self._logger.warn('cannot locate attribute names "%s" on contract' % (key, ))
+ self._logger.warning('cannot locate attribute names "%s" on hr.contract().' % (key, ))
# PE Payroll Config Defaults Should be set on the Model
if 'date_hired' not in config_values:
@@ -89,68 +57,9 @@ class TestPePayslip(common.TransactionCase):
config = config_model.create(config_values)
contract_values['pe_payroll_config_id'] = config.id
- # Some Basic Defaults
- if not contract_values.get('state'):
- contract_values['state'] = 'open' # Running
- if not contract_values.get('structure_type_id'):
- contract_values['structure_type_id'] = self.structure_type_id
- if not contract_values.get('date_start'):
- contract_values['date_start'] = '2016-01-01'
- if not contract_values.get('date_end'):
- contract_values['date_end'] = '2030-12-31'
- if not contract_values.get('resource_calendar_id'):
- contract_values['resource_calendar_id'] = self.resource_calendar_id
+ self._get_contract_defaults(contract_values)
+ contract = self.contract_model.create(contract_values)
- # Compatibility with earlier Odoo versions
- if not contract_values.get('journal_id') and hasattr(contract_model, 'journal_id'):
- try:
- contract_values['journal_id'] = self.env['account.journal'].search([('type', '=', 'general')], limit=1).id
- except KeyError:
- # Accounting not installed
- pass
-
- contract = contract_model.create(contract_values)
-
- # Compatibility with Odoo 13
+ # Compatibility with Odoo 14
contract.structure_type_id.default_struct_id.schedule_pay = schedule_pay
return contract
-
- def _createPayslip(self, employee, date_from, date_to):
- slip = self.env['hr.payslip'].create({
- 'name': 'Test %s From: %s To: %s' % (employee.name, date_from, date_to),
- 'employee_id': employee.id,
- 'date_from': date_from,
- 'date_to': date_to
- })
- slip._onchange_employee()
- slip._onchange_worked_days_inputs()
- self.assertTrue(slip.contract_id)
- return slip
-
- def _getCategories(self, payslip):
- categories = defaultdict(float)
- for line in payslip.line_ids:
- self._log(' line code: ' + str(line.code) +
- ' category code: ' + line.category_id.code +
- ' total: ' + str(line.total) +
- ' rate: ' + str(line.rate) +
- ' amount: ' + str(line.amount))
- category_id = line.category_id
- category_code = line.category_id.code
- while category_code:
- categories[category_code] += line.total
- category_id = category_id.parent_id
- category_code = category_id.code
- return categories
-
- def _getRules(self, payslip):
- rules = defaultdict(float)
- for line in payslip.line_ids:
- rules[line.code] += line.total
- return rules
-
- def assertPayrollEqual(self, first, second):
- self.assertAlmostEqual(first, second, self.payroll_digits)
-
- def assertPayrollAlmostEqual(self, first, second):
- self.assertAlmostEqual(first, second, self.payroll_digits-1)