Files
enterprise-addons/hr_holidays_gantt/models/resource_calendar.py
T

39 lines
1.7 KiB
Python

from odoo import models
from datetime import datetime, time
from odoo.tools import float_compare
from odoo.tools.date_utils import float_to_time
class ResourceCalendar(models.Model):
_inherit = 'resource.calendar'
def _handle_flexible_leave_interval(self, dt0, dt1, leave):
def at_time(d, hour=0, minute=0, second=0, microsecond=0):
return datetime.combine(
d.date(),
time(hour, minute, second, microsecond)
).replace(tzinfo=tz)
tz = dt0.tzinfo
if leave.sudo().holiday_id.request_unit_half:
dt0 = at_time(dt0) if leave.holiday_id.request_date_from_period == 'am' else at_time(dt0, 12)
dt1 = at_time(dt1, 12) if leave.holiday_id.request_date_to_period == 'am' else at_time(dt1, 23, 59, 59, 999999)
return dt0, dt1
if leave.holiday_id.request_unit_hours:
if float_compare(leave.holiday_id.number_of_hours, leave.calendar_id.hours_per_day, 2) == 0:
return at_time(dt0), at_time(dt1, 23, 59, 59, 999999)
if float_compare(leave.holiday_id.number_of_hours, leave.calendar_id.hours_per_day / 2, 2) == 0:
if leave.holiday_id.request_hour_to <= 12.0:
return at_time(dt0), at_time(dt1, 12)
if leave.holiday_id.request_hour_from >= 12.0:
return at_time(dt0, 12), at_time(dt1, 23, 59, 59, 999999)
return (
datetime.combine(dt0.date(), float_to_time(leave.holiday_id.request_hour_from)).replace(tzinfo=tz),
datetime.combine(dt1.date(), float_to_time(leave.holiday_id.request_hour_to)).replace(tzinfo=tz),
)
return super()._handle_flexible_leave_interval(dt0, dt1, leave)