diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py
index 4f34666cc7f..ac8b991c77d 100644
--- a/addons/hr_holidays/models/hr_leave.py
+++ b/addons/hr_holidays/models/hr_leave.py
@@ -266,6 +266,11 @@ class HolidaysRequest(models.Model):
self.request_unit_hours = False
self.request_unit_custom = False
+ @api.onchange('user_id')
+ def _onchange_user_id(self):
+ if not self.out_of_office_message:
+ self.out_of_office_message = self.user_id.out_of_office_message
+
@api.onchange('request_date_from_period', 'request_hour_from', 'request_hour_to',
'request_date_from', 'request_date_to',
'employee_id')
diff --git a/addons/hr_holidays/tests/test_out_of_office.py b/addons/hr_holidays/tests/test_out_of_office.py
index 05e3e480cc0..4c97f465ce1 100644
--- a/addons/hr_holidays/tests/test_out_of_office.py
+++ b/addons/hr_holidays/tests/test_out_of_office.py
@@ -4,26 +4,29 @@
from datetime import datetime
from dateutil.relativedelta import relativedelta
-from odoo.tests.common import tagged, users, warmup
+from odoo.tests.common import tagged, users, warmup, Form
from odoo.addons.hr_holidays.tests.common import TestHrHolidaysBase
@tagged('out_of_office')
class TestOutOfOffice(TestHrHolidaysBase):
- def test_leave_ooo(self):
- leave_type = self.env['hr.leave.type'].create({
+ def setUp(self):
+ super().setUp()
+ self.leave_type = self.env['hr.leave.type'].create({
'name': 'Legal Leaves',
'time_type': 'leave',
'allocation_type': 'no',
})
+
+ def test_leave_ooo(self):
self.assertNotEqual(self.employee_hruser.user_id.im_status, 'leave_offline', 'user should not be on leave')
self.assertNotEqual(self.employee_hruser.user_id.partner_id.im_status, 'leave_offline', 'user should not be on leave')
leave_date_end = (datetime.today() + relativedelta(days=3))
leave = self.env['hr.leave'].create({
'name': 'Christmas',
'employee_id': self.employee_hruser.id,
- 'holiday_status_id': leave_type.id,
+ 'holiday_status_id': self.leave_type.id,
'date_from': (datetime.today() - relativedelta(days=1)),
'date_to': leave_date_end,
'out_of_office_message': 'contact tde in case of problems',
@@ -51,6 +54,29 @@ class TestOutOfOffice(TestHrHolidaysBase):
self.assertEqual(infos[0]['direct_partner'][0]['out_of_office_date_end'], leave_date_end)
self.assertEqual(infos[0]['direct_partner'][0]['out_of_office_message'], 'contact tde in case of problems')
+ def test_leave_ooo_use_default(self):
+ """ Out of office message from Preferences should be used as default value """
+ self.user_hruser.out_of_office_message = 'contact xdo in case of problems'
+
+ leave_form = Form(self.env['hr.leave'].sudo(self.user_hruser), view='hr_holidays.hr_leave_view_form')
+ leave_form.date_from = datetime.today() - relativedelta(days=1)
+ leave_form.date_to = datetime.today()
+ leave_form.holiday_status_id = self.leave_type
+ leave = leave_form.save()
+ self.assertEqual(leave.out_of_office_message, 'contact xdo in case of problems')
+
+ def test_leave_ooo_overwrite_default(self):
+ """ Out of office message default value should be overwrittable """
+ self.user_hruser.out_of_office_message = 'contact xdo in case of problems'
+
+ leave_form = Form(self.env['hr.leave'].sudo(self.user_hruser), view='hr_holidays.hr_leave_view_form')
+ leave_form.date_from = datetime.today() - relativedelta(days=1)
+ leave_form.date_to = datetime.today()
+ leave_form.holiday_status_id = self.leave_type
+ leave_form.out_of_office_message = 'contact tde in case of problems'
+ leave = leave_form.save()
+ self.assertEqual(leave.out_of_office_message, 'contact tde in case of problems')
+
@tagged('out_of_office')
class TestOutOfOfficePerformance(TestHrHolidaysBase):
diff --git a/addons/hr_holidays/views/hr_leave_views.xml b/addons/hr_holidays/views/hr_leave_views.xml
index e3596770217..7defea25e40 100644
--- a/addons/hr_holidays/views/hr_leave_views.xml
+++ b/addons/hr_holidays/views/hr_leave_views.xml
@@ -246,6 +246,7 @@
+