[FIX] hr_holidays: modify validated leave
- Create and validate a leave - Go to Time Off > Everyone - In the Gantt view, move the leave Nothing prevents the modification of the leave while is it validated. opw-2179839 closes odoo/odoo#44214 X-original-commit: 05257fc75211ea4b34b35c94eeb42ee5b55bfd5b Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
This commit is contained in:
@@ -2442,6 +2442,12 @@ msgstr ""
|
||||
msgid "This indicates if it is still possible to use this type of leave"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/models/hr_leave.py:0
|
||||
#, python-format
|
||||
msgid "This modification is not allowed in the current state."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.model.fields,help:hr_holidays.field_hr_leave_type__responsible_id
|
||||
msgid ""
|
||||
|
||||
@@ -550,6 +550,12 @@ class HolidaysRequest(models.Model):
|
||||
raise ValidationError(_('The number of remaining time off is not sufficient for this time off type.\n'
|
||||
'Please also check the time off waiting for validation.'))
|
||||
|
||||
@api.constrains('date_from', 'date_to', 'employee_id')
|
||||
def _check_date_state(self):
|
||||
for holiday in self:
|
||||
if holiday.state in ['cancel', 'refuse', 'validate1', 'validate']:
|
||||
raise ValidationError(_("This modification is not allowed in the current state."))
|
||||
|
||||
def _get_number_of_days(self, date_from, date_to, employee_id):
|
||||
""" Returns a float equals to the timedelta between two dates given as string."""
|
||||
if employee_id:
|
||||
|
||||
@@ -6,7 +6,7 @@ from dateutil.relativedelta import relativedelta
|
||||
|
||||
from odoo import tests
|
||||
from odoo.addons.hr_holidays.tests.common import TestHrHolidaysCommon
|
||||
from odoo.exceptions import AccessError, UserError
|
||||
from odoo.exceptions import AccessError, UserError, ValidationError
|
||||
from odoo.tools import mute_logger
|
||||
|
||||
|
||||
@@ -184,9 +184,9 @@ class TestAcessRightsStates(TestHrHolidaysAccessRightsCommon):
|
||||
'name': 'Random Leave',
|
||||
'employee_id': self.employee_emp.id,
|
||||
'holiday_status_id': status.id,
|
||||
'state': 'refuse',
|
||||
}
|
||||
leave = self.request_leave(1, datetime.today() + relativedelta(days=5 + i), 1, values)
|
||||
leave.action_refuse()
|
||||
with self.assertRaises(UserError):
|
||||
leave.with_user(self.user_employee.id).action_draft()
|
||||
|
||||
@@ -275,9 +275,9 @@ class TestAcessRightsStates(TestHrHolidaysAccessRightsCommon):
|
||||
'name': 'Random Leave',
|
||||
'employee_id': self.employee_hruser.id,
|
||||
'holiday_status_id': status.id,
|
||||
'state': 'refuse',
|
||||
}
|
||||
leave = self.request_leave(1, datetime.today() + relativedelta(days=5 + i), 1, values)
|
||||
leave.action_refuse()
|
||||
with self.assertRaises(UserError):
|
||||
leave.with_user(self.user_hruser.id).action_draft()
|
||||
|
||||
@@ -358,9 +358,9 @@ class TestAcessRightsStates(TestHrHolidaysAccessRightsCommon):
|
||||
'name': 'Random Leave',
|
||||
'employee_id': self.employee_hruser.id,
|
||||
'holiday_status_id': status.id,
|
||||
'state': 'refuse',
|
||||
}
|
||||
leave = self.request_leave(1, datetime.today() + relativedelta(days=5 + i), 1, values)
|
||||
leave.action_refuse()
|
||||
leave.with_user(self.user_hrmanager.id).action_draft()
|
||||
|
||||
def test_holiday_manager_draft_current_leave(self):
|
||||
@@ -408,7 +408,7 @@ class TestAccessRightsCreate(TestHrHolidaysAccessRightsCommon):
|
||||
'holiday_status_id': self.leave_type.id,
|
||||
'state': 'validate',
|
||||
}
|
||||
with self.assertRaises(AccessError):
|
||||
with self.assertRaises(ValidationError):
|
||||
self.request_leave(self.user_employee_id, datetime.today() + relativedelta(days=5), 1, values)
|
||||
|
||||
@mute_logger('odoo.models.unlink', 'odoo.addons.mail.models.mail_mail')
|
||||
@@ -447,17 +447,19 @@ class TestAccessRightsCreate(TestHrHolidaysAccessRightsCommon):
|
||||
|
||||
@mute_logger('odoo.models.unlink', 'odoo.addons.mail.models.mail_mail')
|
||||
def test_holidays_user_create_validate(self):
|
||||
""" A holidays user can create a leave in validate state but not for himself """
|
||||
""" A holidays user cannot create a leave in validate state """
|
||||
values = {
|
||||
'name': 'Hol10',
|
||||
'employee_id': self.employee_emp_id,
|
||||
'holiday_status_id': self.leave_type.id,
|
||||
'state': 'validate',
|
||||
}
|
||||
self.request_leave(self.user_hruser_id, datetime.today() + relativedelta(days=5), 1, values)
|
||||
values.update(employee_id=self.employee_hruser_id)
|
||||
with self.assertRaises(AccessError):
|
||||
with self.assertRaises(ValidationError):
|
||||
self.request_leave(self.user_hruser_id, datetime.today() + relativedelta(days=5), 1, values)
|
||||
values.update(employee_id=self.employee_hruser_id)
|
||||
with self.assertRaises(ValidationError):
|
||||
self.request_leave(self.user_hruser_id, datetime.today() + relativedelta(days=5), 1, values)
|
||||
|
||||
|
||||
@mute_logger('odoo.models.unlink', 'odoo.addons.mail.models.mail_mail')
|
||||
def test_holidays_user_create_batch(self):
|
||||
@@ -495,16 +497,18 @@ class TestAccessRightsCreate(TestHrHolidaysAccessRightsCommon):
|
||||
|
||||
@mute_logger('odoo.models.unlink', 'odoo.addons.mail.models.mail_mail')
|
||||
def test_holidays_manager_create_validate(self):
|
||||
""" A holidays manager can? create a leave in validate state even for himself """
|
||||
""" A holidays manager cannot create a leave in validate state """
|
||||
values = {
|
||||
'name': 'Hol10',
|
||||
'employee_id': self.employee_emp_id,
|
||||
'holiday_status_id': self.leave_type.id,
|
||||
'state': 'validate',
|
||||
}
|
||||
self.request_leave(self.user_hrmanager_id, datetime.today() + relativedelta(days=5), 1, values)
|
||||
with self.assertRaises(ValidationError):
|
||||
self.request_leave(self.user_hrmanager_id, datetime.today() + relativedelta(days=5), 1, values)
|
||||
values.update(employee_id=self.employee_hruser_id)
|
||||
self.request_leave(self.user_hrmanager_id, datetime.today() + relativedelta(days=5), 1, values)
|
||||
with self.assertRaises(ValidationError):
|
||||
self.request_leave(self.user_hrmanager_id, datetime.today() + relativedelta(days=5), 1, values)
|
||||
|
||||
@mute_logger('odoo.models.unlink', 'odoo.addons.mail.models.mail_mail')
|
||||
def test_holidays_manager_create_batch(self):
|
||||
|
||||
Reference in New Issue
Block a user