diff --git a/addons/hr_holidays/models/hr_leave_type.py b/addons/hr_holidays/models/hr_leave_type.py index 8cedee4bed916..f93d621cc8a73 100644 --- a/addons/hr_holidays/models/hr_leave_type.py +++ b/addons/hr_holidays/models/hr_leave_type.py @@ -280,7 +280,7 @@ def _search_virtual_remaining_leaves(self, operator, value): leave_types = self.env['hr.leave.type'].search([]) def is_valid(leave_type): - return not leave_type.requires_allocation or op(leave_type.virtual_remaining_leaves) + return not leave_type.requires_allocation or op(leave_type.virtual_remaining_leaves, value) return [('id', 'in', leave_types.filtered(is_valid).ids)] @api.depends_context('employee_id', 'default_employee_id', 'leave_date_from', 'default_date_from') diff --git a/addons/hr_holidays/tests/test_hr_leave_type.py b/addons/hr_holidays/tests/test_hr_leave_type.py index b7732013987c5..b13b589c53ad1 100644 --- a/addons/hr_holidays/tests/test_hr_leave_type.py +++ b/addons/hr_holidays/tests/test_hr_leave_type.py @@ -114,3 +114,27 @@ def test_users_tz_shift_back(self): ).search([('has_valid_allocation', '=', True)], limit=1) self.assertFalse(leave_types, "Got valid leaves outside vaild period") + + def test_search_virtual_remaining_leaves(self): + employee_id = self.env['hr.employee'].create({'name': 'Test Employee'}) + leave_type1, leave_type2 = self.env['hr.leave.type'].create([ + { + 'name': 'Leave type 1', + 'time_type': 'leave', + 'requires_allocation': True, + }, { + 'name': 'Leave type 2', + 'time_type': 'leave', + 'requires_allocation': True, + }, + ]) + self.env['hr.leave.allocation'].create([{ + 'name': 'Leave type 1 allocation', + 'holiday_status_id': leave_type1.id, + 'number_of_days': 1, + 'employee_id': employee_id.id, + 'state': 'confirm', + }]).action_approve() + leave_type_ids = self.env['hr.leave.type'].with_context(employee_id=employee_id.id).search([('virtual_remaining_leaves', '>', 0)]) + self.assertIn(leave_type1, leave_type_ids) + self.assertNotIn(leave_type2, leave_type_ids)