mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-26 02:52:06 +02:00
46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
# Copyright 2017-2018 Tecnativa - Pedro M. Baeza
|
|
# Copyright 2018 Brainbean Apps
|
|
# Copyright 2020 InitOS Gmbh
|
|
# Copyright 2021 Tecnativa - Víctor Martínez
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo import models
|
|
|
|
from odoo.addons.resource.models.resource import Intervals
|
|
|
|
|
|
class ResourceCalendar(models.Model):
|
|
_inherit = "resource.calendar"
|
|
|
|
def _attendance_intervals_batch_exclude_public_holidays(
|
|
self, start_dt, end_dt, intervals, resources, tz
|
|
):
|
|
list_by_dates = (
|
|
self.env["hr.holidays.public"]
|
|
.get_holidays_list(
|
|
start_dt=start_dt.date(),
|
|
end_dt=end_dt.date(),
|
|
employee_id=self.env.context.get("employee_id", False),
|
|
)
|
|
.mapped("date")
|
|
)
|
|
for resource in resources:
|
|
interval_resource = intervals[resource.id]
|
|
attendances = []
|
|
for attendance in interval_resource._items:
|
|
if attendance[0].date() not in list_by_dates:
|
|
attendances.append(attendance)
|
|
intervals[resource.id] = Intervals(attendances)
|
|
return intervals
|
|
|
|
def _attendance_intervals_batch(
|
|
self, start_dt, end_dt, resources=None, domain=None, tz=None
|
|
):
|
|
res = super()._attendance_intervals_batch(
|
|
start_dt=start_dt, end_dt=end_dt, resources=resources, domain=domain, tz=tz
|
|
)
|
|
if self.env.context.get("exclude_public_holidays") and resources:
|
|
return self._attendance_intervals_batch_exclude_public_holidays(
|
|
start_dt, end_dt, res, resources, tz
|
|
)
|
|
return res
|