diff --git a/addons/hr_holidays_attendance/models/hr_leave.py b/addons/hr_holidays_attendance/models/hr_leave.py
index ace82ae56c6..6468917212a 100644
--- a/addons/hr_holidays_attendance/models/hr_leave.py
+++ b/addons/hr_holidays_attendance/models/hr_leave.py
@@ -105,3 +105,7 @@ class HRLeave(models.Model):
# TODO master change to ondelete
self.sudo().overtime_id.unlink()
return super().unlink()
+
+ def _force_cancel(self, *args, **kwargs):
+ super()._force_cancel(*args, **kwargs)
+ self.sudo().overtime_id.unlink()
diff --git a/addons/hr_holidays_attendance/static/src/xml/time_off_calendar.xml b/addons/hr_holidays_attendance/static/src/xml/time_off_calendar.xml
index 93ae859d66a..6296e428f9c 100644
--- a/addons/hr_holidays_attendance/static/src/xml/time_off_calendar.xml
+++ b/addons/hr_holidays_attendance/static/src/xml/time_off_calendar.xml
@@ -8,6 +8,9 @@
+
+ props.data.request_unit == 'hour' || props.data['overtime_deductible']
+
props.requires_allocation || props.data['overtime_deductible']
diff --git a/addons/hr_holidays_attendance/tests/test_holidays_overtime.py b/addons/hr_holidays_attendance/tests/test_holidays_overtime.py
index 1cd68613bac..e3a3e02edc1 100644
--- a/addons/hr_holidays_attendance/tests/test_holidays_overtime.py
+++ b/addons/hr_holidays_attendance/tests/test_holidays_overtime.py
@@ -6,6 +6,8 @@ from odoo.tests import new_test_user
from odoo.tests.common import TransactionCase, tagged
from odoo.exceptions import AccessError, ValidationError
+
+from freezegun import freeze_time
import time
@tagged('post_install', '-at_install', 'holidays_attendance')
@@ -226,3 +228,26 @@ class TestHolidaysOvertime(TransactionCase):
alloc.number_of_days = 2
self.assertEqual(self.employee.total_overtime, 0)
+
+ @freeze_time('2022-1-1')
+ def test_leave_check_cancel(self):
+ self.new_attendance(check_in=datetime(2021, 1, 2, 8), check_out=datetime(2021, 1, 2, 16))
+ self.new_attendance(check_in=datetime(2021, 1, 3, 8), check_out=datetime(2021, 1, 3, 16))
+ self.assertEqual(self.employee.total_overtime, 16)
+
+ leave = self.env['hr.leave'].create({
+ 'name': 'no overtime',
+ 'employee_id': self.employee.id,
+ 'holiday_status_id': self.leave_type_no_alloc.id,
+ 'number_of_days': 1,
+ 'date_from': datetime(2022, 1, 6),
+ 'date_to': datetime(2022, 1, 6),
+ })
+ leave.with_user(self.user_manager).action_validate()
+ self.assertEqual(self.employee.total_overtime, 8)
+
+ self.assertTrue(leave.with_user(self.user).can_cancel)
+ self.env['hr.holidays.cancel.leave'].with_user(self.user).with_context(default_leave_id=leave.id) \
+ .new({'reason': 'Test remove holiday'}) \
+ .action_cancel_leave()
+ self.assertFalse(leave.overtime_id.exists())
diff --git a/addons/hr_holidays_attendance/views/hr_leave_views.xml b/addons/hr_holidays_attendance/views/hr_leave_views.xml
index 46b31a3dc2b..3b970a9850e 100644
--- a/addons/hr_holidays_attendance/views/hr_leave_views.xml
+++ b/addons/hr_holidays_attendance/views/hr_leave_views.xml
@@ -8,7 +8,21 @@
- Extra Hours Available
+ Extra Hours Available
+
+
+
+
+
+
+ hr.leave
+
+
+
+
+
+
+ Extra Hours Available