[MIG]allow_negative_leave_and_allocation:v14

This commit is contained in:
2025-01-02 14:23:16 +01:00
parent 141ad6bfcd
commit 87dd45a49f
13 changed files with 958 additions and 0 deletions

View File

@@ -0,0 +1 @@
from . import hr_leave_type, hr_leave, hr_leave_allocation

View File

@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2005-2006 Axelor SARL. (http://www.axelor.com)
from odoo import api, models
class HrLeave(models.Model):
_inherit = "hr.leave"
@api.constrains("state", "number_of_days", "holiday_status_id")
def _check_holidays(self):
for holiday in self:
if holiday.holiday_status_id.allows_negative:
continue
super()._check_holidays()

View File

@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2005-2006 Axelor SARL. (http://www.axelor.com)
from odoo import models
class HrLeaveAllocation(models.Model):
_inherit = "hr.leave.allocation"
_sql_constraints = [
('type_value',
"CHECK( (holiday_type='employee' AND (employee_id IS NOT NULL OR multi_employee IS TRUE)) or "
"(holiday_type='category' AND category_id IS NOT NULL) or "
"(holiday_type='department' AND department_id IS NOT NULL) or "
"(holiday_type='company' AND mode_company_id IS NOT NULL))",
"The employee, department, company or employee category of this request is missing. Please make sure that your user login is linked to an employee."),
('duration_check', "CHECK((allocation_type != 'regular'))", "The duration must be greater than 0."),
]

View File

@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class HolidaysType(models.Model):
_inherit = "hr.leave.type"
# negative time off
allows_negative = fields.Boolean(string='Allow Negative Leaves',
help="If checked, users request can exceed the allocated days and balance can go in negative.")
@api.depends('validity_start', 'validity_stop')
def _compute_valid(self):
res = super()._compute_valid()
for holiday_type in res:
if not holiday_type.valid:
holiday_type.valid = holiday_type.allows_negative