68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
from datetime import date
|
||
|
from freezegun import freeze_time
|
||
|
|
||
|
from odoo.tests import tagged
|
||
|
|
||
|
from odoo.addons.hr_holidays.tests.common import TestHrHolidaysCommon
|
||
|
|
||
|
|
||
|
@tagged('post_install', '-at_install', 'accruals')
|
||
|
class TestAccrualAllocations(TestHrHolidaysCommon):
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
super(TestAccrualAllocations, cls).setUpClass()
|
||
|
cls.leave_type = cls.env['hr.leave.type'].create({
|
||
|
'name': 'Accrual Time Off',
|
||
|
'time_type': 'leave',
|
||
|
'requires_allocation': 'yes',
|
||
|
'allocation_validation_type': 'no',
|
||
|
})
|
||
|
cls.accrual_plan = cls.env['hr.leave.accrual.plan'].with_context(tracking_disable=True).create({
|
||
|
'name': 'Test Seniority Plan',
|
||
|
'level_ids': [
|
||
|
(0, 0, {
|
||
|
'start_count': 1,
|
||
|
'start_type': 'day',
|
||
|
'added_value': 1,
|
||
|
'added_value_type': 'day',
|
||
|
'frequency': 'yearly',
|
||
|
'cap_accrued_time': True,
|
||
|
'maximum_leave': 10000,
|
||
|
}),
|
||
|
(0, 0, {
|
||
|
'start_count': 4,
|
||
|
'start_type': 'year',
|
||
|
'added_value': 1,
|
||
|
'added_value_type': 'day',
|
||
|
'frequency': 'yearly',
|
||
|
'cap_accrued_time': True,
|
||
|
'maximum_leave': 10000,
|
||
|
}),
|
||
|
(0, 0, {
|
||
|
'start_count': 8,
|
||
|
'start_type': 'year',
|
||
|
'added_value': 1,
|
||
|
'added_value_type': 'day',
|
||
|
'frequency': 'yearly',
|
||
|
'cap_accrued_time': True,
|
||
|
'maximum_leave': 10000,
|
||
|
}),
|
||
|
]
|
||
|
})
|
||
|
|
||
|
def _test_past_accrual(self):
|
||
|
with freeze_time("2023-12-01"):
|
||
|
allocation = self.env['hr.leave.allocation'].create({
|
||
|
'employee_id': self.employee_emp_id,
|
||
|
'allocation_type': 'accrual',
|
||
|
'accrual_plan_id': self.accrual_plan.id,
|
||
|
'holiday_status_id': self.leave_type.id,
|
||
|
'date_from': date(2000, 1, 1),
|
||
|
'number_of_days': 0,
|
||
|
})
|
||
|
|
||
|
allocation._process_accrual_plans()
|
||
|
|
||
|
self.assertEqual(allocation.number_of_days, 0)
|