From 2717c41eb4e8dec13c5f2da7b4831add06efbf9b Mon Sep 17 00:00:00 2001 From: Kevin Baptiste Date: Tue, 25 Apr 2023 13:53:04 +0000 Subject: [PATCH] [FIX] hr_holidays: check allocation status opw-3289147 closes odoo/odoo#120082 X-original-commit: 3fb278caabfb5dc5f92d79e2fb3aee9433bf0d94 Related: odoo/enterprise#40508 Signed-off-by: Xavier Bol (xbo) Signed-off-by: Kevin Baptiste --- addons/hr_holidays/data/hr_holidays_demo.xml | 38 +++++++++++-------- .../hr_holidays/models/hr_leave_allocation.py | 2 + .../tests/test_accrual_allocations.py | 5 ++- .../hr_holidays/tests/test_holidays_flow.py | 10 ++--- .../hr_holidays/tests/test_leave_requests.py | 3 +- .../data/l10n_fr_hr_holidays_demo.xml | 5 ++- 6 files changed, 38 insertions(+), 25 deletions(-) diff --git a/addons/hr_holidays/data/hr_holidays_demo.xml b/addons/hr_holidays/data/hr_holidays_demo.xml index b13de138ef8..4d35fb33fd6 100644 --- a/addons/hr_holidays/data/hr_holidays_demo.xml +++ b/addons/hr_holidays/data/hr_holidays_demo.xml @@ -62,7 +62,7 @@ 20 - validate + confirm @@ -77,9 +77,6 @@ - - - Functional Training @@ -98,10 +95,13 @@ 12 - validate + confirm + + + @@ -155,7 +155,7 @@ 20 - validate + confirm @@ -166,7 +166,7 @@ 10 - validate + confirm @@ -177,10 +177,13 @@ 12 - validate + confirm + + + @@ -220,10 +223,13 @@ 20 - validate + confirm + + + Compliance Training @@ -274,7 +280,7 @@ 20 - validate + confirm @@ -290,7 +296,7 @@ - + @@ -332,10 +338,13 @@ 20 - validate + confirm + + + Consulting Training @@ -356,7 +365,7 @@ 20 - validate + confirm @@ -372,10 +381,9 @@ - + - Trip to London diff --git a/addons/hr_holidays/models/hr_leave_allocation.py b/addons/hr_holidays/models/hr_leave_allocation.py index 40ee1d1b2ba..262b6f746e9 100644 --- a/addons/hr_holidays/models/hr_leave_allocation.py +++ b/addons/hr_holidays/models/hr_leave_allocation.py @@ -561,6 +561,8 @@ class HolidaysAllocation(models.Model): def create(self, vals_list): """ Override to avoid automatic logging of creation """ for values in vals_list: + if 'state' in values and values['state'] not in ('draft', 'confirm'): + raise UserError(_('Incorrect state for new allocation')) employee_id = values.get('employee_id', False) if not values.get('department_id'): values.update({'department_id': self.env['hr.employee'].browse(employee_id).department_id.id}) diff --git a/addons/hr_holidays/tests/test_accrual_allocations.py b/addons/hr_holidays/tests/test_accrual_allocations.py index 898ec4b835f..f9b86ec853d 100644 --- a/addons/hr_holidays/tests/test_accrual_allocations.py +++ b/addons/hr_holidays/tests/test_accrual_allocations.py @@ -346,7 +346,7 @@ class TestAccrualAllocations(TestHrHolidaysCommon): 'holiday_status_id': self.leave_type.id, 'number_of_days': 0, 'allocation_type': 'accrual', - 'state': 'validate', + 'state': 'confirm', }) allocation_worked_time = self.env['hr.leave.allocation'].with_user(self.user_hrmanager_id).with_context(tracking_disable=True).create({ 'name': 'Accrual allocation for employee', @@ -355,8 +355,9 @@ class TestAccrualAllocations(TestHrHolidaysCommon): 'holiday_status_id': self.leave_type.id, 'number_of_days': 0, 'allocation_type': 'accrual', - 'state': 'validate', + 'state': 'confirm', }) + (allocation_not_worked_time | allocation_worked_time).action_validate() self.setAllocationCreateDate(allocation_not_worked_time.id, '2021-08-01 00:00:00') self.setAllocationCreateDate(allocation_worked_time.id, '2021-08-01 00:00:00') holiday_type = self.env['hr.leave.type'].create({ diff --git a/addons/hr_holidays/tests/test_holidays_flow.py b/addons/hr_holidays/tests/test_holidays_flow.py index d613f9c3f46..e625f036da3 100644 --- a/addons/hr_holidays/tests/test_holidays_flow.py +++ b/addons/hr_holidays/tests/test_holidays_flow.py @@ -99,17 +99,17 @@ class TestHolidaysFlow(TestHrHolidaysCommon): 'holiday_status_id': holiday_status_paid_time_off.id, 'number_of_days': 20, 'employee_id': self.employee_emp_id, - 'state': 'validate', + 'state': 'confirm', 'date_from': time.strftime('%Y-%m-01'), }, { 'name': 'Paid Time off for David', 'holiday_status_id': holiday_status_paid_time_off.id, 'number_of_days': 20, 'employee_id': self.ref('hr.employee_admin'), - 'state': 'validate', + 'state': 'confirm', 'date_from': time.strftime('%Y-%m-01'), } - ]) + ]).action_validate() def _check_holidays_status(holiday_status, ml, lt, rl, vrl): self.assertEqual(holiday_status.max_leaves, ml, @@ -252,10 +252,10 @@ class TestHolidaysFlow(TestHrHolidaysCommon): 'holiday_status_id': holiday_status_paid_time_off.id, 'number_of_days': 20, 'employee_id': self.ref('hr.employee_admin'), - 'state': 'validate', + 'state': 'confirm', 'date_from': time.strftime('%Y-%m-01'), 'date_to': time.strftime('%Y-12-31'), - }) + }).action_validate() leave_vals = { 'name': 'Sick Time Off', diff --git a/addons/hr_holidays/tests/test_leave_requests.py b/addons/hr_holidays/tests/test_leave_requests.py index e738e607d02..ad8cc846985 100644 --- a/addons/hr_holidays/tests/test_leave_requests.py +++ b/addons/hr_holidays/tests/test_leave_requests.py @@ -171,8 +171,7 @@ class TestLeaveRequests(TestHrHolidaysCommon): 'date_from': fields.Datetime.from_string('2017-01-01 00:00:00'), 'date_to': fields.Datetime.from_string('2017-06-01 00:00:00'), 'number_of_days': 10, - 'state': 'validate', - }) + }).action_validate() self.env['hr.leave'].with_user(self.user_employee_id).create({ 'name': 'Valid time period', diff --git a/addons/l10n_fr_hr_holidays/data/l10n_fr_hr_holidays_demo.xml b/addons/l10n_fr_hr_holidays/data/l10n_fr_hr_holidays_demo.xml index 4d0b1067a23..02cc207af1a 100644 --- a/addons/l10n_fr_hr_holidays/data/l10n_fr_hr_holidays_demo.xml +++ b/addons/l10n_fr_hr_holidays/data/l10n_fr_hr_holidays_demo.xml @@ -43,7 +43,7 @@ Paid Time Off allocation - validate + confirm 20 @@ -51,4 +51,7 @@ + + +