Skip to content
Snippets Groups Projects
Commit d2291a4f authored by Yannick Tivisse's avatar Yannick Tivisse
Browse files

[FIX] hr_work_entry_holidays: Fix work entry generation on company time off


closes odoo/odoo#98058

X-original-commit: 6fd3c6640c3bb15ce181b14119aec7c2d851cf1d
Signed-off-by: default avatarYannick Tivisse (yti) <yti@odoo.com>
parent d2ad74f8
No related branches found
No related tags found
No related merge requests found
......@@ -9,6 +9,7 @@ from odoo.exceptions import ValidationError
from odoo.osv.expression import AND
from odoo.tools import format_date
class HrLeaveType(models.Model):
_inherit = 'hr.leave.type'
......@@ -190,8 +191,8 @@ Contracts:
return super()._get_leaves_on_public_holiday().filtered(
lambda l: l.holiday_status_id.work_entry_type_id.code not in ['LEAVE110', 'LEAVE280'])
def action_validate(self):
super(HrLeave, self).action_validate()
def _validate_leave_request(self):
super(HrLeave, self)._validate_leave_request()
self.sudo()._cancel_work_entry_conflict() # delete preexisting conflicting work_entries
return True
......
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime
from datetime import datetime, date
from dateutil.relativedelta import relativedelta
from freezegun import freeze_time
from odoo import SUPERUSER_ID
from odoo.addons.hr_work_entry_holidays.tests.common import TestWorkEntryHolidaysBase
from odoo.tests import tagged
@tagged('test_leave')
class TestWorkEntryLeave(TestWorkEntryHolidaysBase):
def test_resource_leave_has_work_entry_type(self):
......@@ -171,3 +172,34 @@ class TestWorkEntryLeave(TestWorkEntryHolidaysBase):
leave.invalidate_recordset(['can_cancel'])
# Work entries locked
self.assertFalse(leave.can_cancel, "The leave should not be cancellable")
def test_work_entry_generation_company_time_off(self):
existing_leaves = self.env['hr.leave'].search([])
existing_leaves.action_refuse()
existing_leaves.action_draft()
existing_leaves.unlink()
start = date(2022, 8, 1)
end = date(2022, 8, 31)
self.contract_cdi._generate_work_entries(start, end)
work_entries = self.env['hr.work.entry'].search([
('employee_id', '=', self.jules_emp.id),
('date_start', '>=', start),
('date_stop', '<=', end),
])
self.assertEqual(len(work_entries.work_entry_type_id), 1)
leave = self.env['hr.leave'].create({
'name': 'Holiday !!!',
'holiday_type': 'company',
'mode_company_id': self.env.company.id,
'holiday_status_id': self.leave_type.id,
'date_from': datetime(2022, 8, 8, 9, 0),
'date_to': datetime(2022, 8, 8, 18, 0),
'number_of_days': 1,
})
leave.action_validate()
work_entries = self.env['hr.work.entry'].search([
('employee_id', '=', self.jules_emp.id),
('date_start', '>=', start),
('date_stop', '<=', end),
])
self.assertEqual(len(work_entries.work_entry_type_id), 2)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment