[FIX] hr_work_entry_holidays: Fix work entry generation on company time off
closes odoo/odoo#98058 X-original-commit: 6fd3c6640c3bb15ce181b14119aec7c2d851cf1d Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
# -*- 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)
|
||||
|
||||
Reference in New Issue
Block a user