diff --git a/verdigado_attendance/models/hr_leave_type.py b/verdigado_attendance/models/hr_leave_type.py index 86cb760..0e29e54 100644 --- a/verdigado_attendance/models/hr_leave_type.py +++ b/verdigado_attendance/models/hr_leave_type.py @@ -12,7 +12,13 @@ class HrLeaveType(models.Model): def _get_days_request(self): """Add a formatted version for every field used in calendar header""" result = super()._get_days_request() - for key in ("virtual_leaves_taken", "virtual_remaining_leaves"): + for key in ( + "virtual_leaves_taken", + "virtual_remaining_leaves", + "usable_remaining_leaves", + ): + if key not in result[1]: + continue if result[1]["request_unit"] == "hour": formatted = self.env["ir.qweb.field.float_time"].value_to_html( float(result[1][key]), {} @@ -21,6 +27,13 @@ def _get_days_request(self): formatted = result[1][key] result[1]["%s_formatted" % key] = formatted result[1]["dashboard_action_id"] = self.dashboard_action_id.id + if ( + "usable_remaining_leaves_formatted" in result[1] + and "virtual_remaining_leaves_formatted" not in result[1] + ): + result[1]["virtual_remaining_leaves_formatted"] = result[1][ + "virtual_usable_leaves_formatted" + ] return result @api.model diff --git a/verdigado_attendance/static/src/js/systray.esm.js b/verdigado_attendance/static/src/js/systray.esm.js index f326da7..3e8a0e1 100644 --- a/verdigado_attendance/static/src/js/systray.esm.js +++ b/verdigado_attendance/static/src/js/systray.esm.js @@ -23,7 +23,7 @@ var OvertimeSystray = Widget.extend({ args: [], kwargs: {context: session.user_context}, }).then(function (data) { - self.$("a").text(data[1].virtual_remaining_leaves_formatted); + self.$("a").text(data[1].usable_remaining_leaves_formatted); }); }, }); diff --git a/verdigado_attendance/static/src/xml/hr_holidays.xml b/verdigado_attendance/static/src/xml/hr_holidays.xml index f08df79..1bfbf32 100644 --- a/verdigado_attendance/static/src/xml/hr_holidays.xml +++ b/verdigado_attendance/static/src/xml/hr_holidays.xml @@ -15,19 +15,19 @@ and we replace all of them with the formatted version /--> - timeoff[1]['virtual_remaining_leaves_formatted'] + timeoff[1]['usable_remaining_leaves_formatted'] - timeoff[1]['virtual_remaining_leaves_formatted'] + timeoff[1]['usable_remaining_leaves_formatted'] diff --git a/verdigado_attendance/tests/test_holidays.py b/verdigado_attendance/tests/test_holidays.py index e9e0158..b0a0b14 100644 --- a/verdigado_attendance/tests/test_holidays.py +++ b/verdigado_attendance/tests/test_holidays.py @@ -1,12 +1,20 @@ # Copyright 2023 Hunki Enterprises BV # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from datetime import date + from odoo import exceptions from .hr_case import HrCase class TestHolidays(HrCase): + def _at_date(self, status, date, field): + """Return value of some holiday status field at a time""" + return status.get_employees_days( + self.verdigado_user.employee_id.ids, date=date + )[self.verdigado_user.employee_id.id][status.id][field] + def test_standard_flow_past(self): """Test that employees can request holidays for the past""" holiday = ( @@ -32,7 +40,9 @@ def test_standard_flow_past(self): holiday_as_officer = holiday.with_user(self.verdigado_officer) holiday_as_officer.action_validate() self.assertEqual(holiday.number_of_days, 3) - self.assertEqual(holiday_status.remaining_leaves, 27) + self.assertEqual( + self._at_date(holiday_status, date(2023, 12, 31), "remaining_leaves"), 27 + ) resource_leave = self.env["resource.calendar.leaves"].search( [("holiday_id", "in", holiday.ids)] ) @@ -44,7 +54,9 @@ def test_standard_flow_past(self): holiday.unlink() holiday_as_officer.unlink() self.assertFalse(resource_leave.exists()) - self.assertEqual(holiday_status.remaining_leaves, 30) + self.assertEqual( + self._at_date(holiday_status, date(2023, 12, 31), "remaining_leaves"), 30 + ) def test_standard_flow_future(self): """Test that employees can request holidays for the future""" @@ -73,5 +85,10 @@ def test_standard_flow_future(self): [("holiday_id", "in", holiday.ids)] ) self.assertTrue(resource_leave) + self.assertEqual( + self._at_date(holiday_status, date(2042, 12, 31), "remaining_leaves"), 27 + ) holiday.unlink() - self.assertEqual(holiday_status.remaining_leaves, 30) + self.assertEqual( + self._at_date(holiday_status, date(2042, 12, 31), "remaining_leaves"), 30 + )