diff options
| -rw-r--r-- | addons/hr_holidays/models/hr_leave.py | 10 | ||||
| -rw-r--r-- | addons/hr_holidays/tests/test_automatic_leave_dates.py | 84 |
2 files changed, 44 insertions, 50 deletions
diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 5ac1c0b456d..0b0da2d6407 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -549,12 +549,6 @@ class HolidaysRequest(models.Model): else: holiday.can_approve = True - @api.constrains('date_from', 'date_to') - def _check_number_of_days(self): - leaves = self.filtered(lambda l: l.employee_id and not l.number_of_days) - if leaves: - raise ValidationError(_('The following employees are not supposed to work during that period:\n %s') % ','.join(leaves.mapped('employee_id.name'))) - @api.constrains('date_from', 'date_to', 'employee_id') def _check_date(self): for holiday in self.filtered('employee_id'): @@ -985,6 +979,10 @@ class HolidaysRequest(models.Model): def action_validate(self): current_employee = self.env.user.employee_id + leaves = self.filtered(lambda l: l.employee_id and not l.number_of_days) + if leaves: + raise ValidationError(_('The following employees are not supposed to work during that period:\n %s') % ','.join(leaves.mapped('employee_id.name'))) + if any(holiday.state not in ['confirm', 'validate1'] and holiday.validation_type != 'no_validation' for holiday in self): raise UserError(_('Time off request must be confirmed in order to approve it.')) diff --git a/addons/hr_holidays/tests/test_automatic_leave_dates.py b/addons/hr_holidays/tests/test_automatic_leave_dates.py index c19bf449ccc..a79453be2c2 100644 --- a/addons/hr_holidays/tests/test_automatic_leave_dates.py +++ b/addons/hr_holidays/tests/test_automatic_leave_dates.py @@ -26,16 +26,15 @@ class TestAutomaticLeaveDates(TestHrHolidaysCommon): employee = self.employee_emp employee.resource_calendar_id = calendar - with self.assertRaises(ValidationError): - with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: - leave_form.holiday_status_id = self.leave_type - leave_form.request_date_from = date(2019, 9, 2) - leave_form.request_date_to = date(2019, 9, 2) - leave_form.request_unit_half = True - leave_form.request_date_from_period = 'am' + with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: + leave_form.holiday_status_id = self.leave_type + leave_form.request_date_from = date(2019, 9, 2) + leave_form.request_date_to = date(2019, 9, 2) + leave_form.request_unit_half = True + leave_form.request_date_from_period = 'am' - self.assertEqual(leave_form.number_of_days_display, 0) - self.assertEqual(leave_form.number_of_hours_text, '0.0 Hours') + self.assertEqual(leave_form.number_of_days_display, 0) + self.assertEqual(leave_form.number_of_hours_text, '0.0 Hours') def test_single_attendance_on_morning_and_afternoon(self): calendar = self.env['resource.calendar'].create({ @@ -166,19 +165,18 @@ class TestAutomaticLeaveDates(TestHrHolidaysCommon): employee = self.employee_emp employee.resource_calendar_id = calendar - with self.assertRaises(ValidationError): - with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: - leave_form.holiday_status_id = self.leave_type - leave_form.request_date_from = date(2019, 9, 2) - leave_form.request_date_to = date(2019, 9, 2) - leave_form.request_unit_half = True - leave_form.request_date_from_period = 'am' + with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: + leave_form.holiday_status_id = self.leave_type + leave_form.request_date_from = date(2019, 9, 2) + leave_form.request_date_to = date(2019, 9, 2) + leave_form.request_unit_half = True + leave_form.request_date_from_period = 'am' - self.assertEqual(leave_form.number_of_days_display, 0) - self.assertEqual(leave_form.number_of_hours_text, '0.0 Hours') - self.assertEqual(leave_form.date_from, datetime(2019, 9, 2, 6, 0, 0)) - self.assertEqual(leave_form.date_to, datetime(2019, 9, 2, 10, 0, 0)) + self.assertEqual(leave_form.number_of_days_display, 0) + self.assertEqual(leave_form.number_of_hours_text, '0.0 Hours') + self.assertEqual(leave_form.date_from, datetime(2019, 9, 2, 6, 0, 0)) + self.assertEqual(leave_form.date_to, datetime(2019, 9, 2, 10, 0, 0)) def test_attendance_previous_day(self): self.env.user.tz = 'Europe/Brussels' @@ -196,19 +194,18 @@ class TestAutomaticLeaveDates(TestHrHolidaysCommon): employee = self.employee_emp employee.resource_calendar_id = calendar - with self.assertRaises(ValidationError): - with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: - leave_form.holiday_status_id = self.leave_type - leave_form.request_date_from = date(2019, 9, 3) - leave_form.request_date_to = date(2019, 9, 3) - leave_form.request_unit_half = True - leave_form.request_date_from_period = 'am' + with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: + leave_form.holiday_status_id = self.leave_type + leave_form.request_date_from = date(2019, 9, 3) + leave_form.request_date_to = date(2019, 9, 3) + leave_form.request_unit_half = True + leave_form.request_date_from_period = 'am' - self.assertEqual(leave_form.number_of_days_display, 0) - self.assertEqual(leave_form.number_of_hours_text, '0.0 Hours') - self.assertEqual(leave_form.date_from, datetime(2019, 9, 3, 6, 0, 0)) - self.assertEqual(leave_form.date_to, datetime(2019, 9, 3, 10, 0, 0)) + self.assertEqual(leave_form.number_of_days_display, 0) + self.assertEqual(leave_form.number_of_hours_text, '0.0 Hours') + self.assertEqual(leave_form.date_from, datetime(2019, 9, 3, 6, 0, 0)) + self.assertEqual(leave_form.date_to, datetime(2019, 9, 3, 10, 0, 0)) def test_2weeks_calendar(self): self.env.user.tz = 'Europe/Brussels' @@ -280,16 +277,15 @@ class TestAutomaticLeaveDates(TestHrHolidaysCommon): employee = self.employee_emp employee.resource_calendar_id = calendar - with self.assertRaises(ValidationError): - with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: - leave_form.holiday_status_id = self.leave_type - # even week, does not work - leave_form.request_date_from = date(2019, 9, 2) - leave_form.request_date_to = date(2019, 9, 2) - leave_form.request_unit_half = True - leave_form.request_date_from_period = 'am' - - self.assertEqual(leave_form.number_of_days_display, 0) - self.assertEqual(leave_form.number_of_hours_text, '0.0 Hours') - self.assertEqual(leave_form.date_from, datetime(2019, 9, 2, 6, 0, 0)) - self.assertEqual(leave_form.date_to, datetime(2019, 9, 2, 10, 0, 0)) + with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: + leave_form.holiday_status_id = self.leave_type + # even week, does not work + leave_form.request_date_from = date(2019, 9, 2) + leave_form.request_date_to = date(2019, 9, 2) + leave_form.request_unit_half = True + leave_form.request_date_from_period = 'am' + + self.assertEqual(leave_form.number_of_days_display, 0) + self.assertEqual(leave_form.number_of_hours_text, '0.0 Hours') + self.assertEqual(leave_form.date_from, datetime(2019, 9, 2, 6, 0, 0)) + self.assertEqual(leave_form.date_to, datetime(2019, 9, 2, 10, 0, 0)) |
