Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m30s
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
import pytz
|
|
from odoo import models, _
|
|
from datetime import timedelta
|
|
from pytz import utc
|
|
from odoo.exceptions import UserError
|
|
|
|
class HrEmployee(models.Model):
|
|
_inherit = "hr.employee"
|
|
|
|
def _get_calendar_in_progress_during_a_time_period(self, date_start, date_end):
|
|
"""
|
|
get the ressource calendar which was used during the timesheet sheet time period
|
|
"""
|
|
self.ensure_one()
|
|
# find calendar(s) running over the duration of the timesheet
|
|
calendars = self.env["hr.employee.calendar"].search(
|
|
[
|
|
("employee_id", "=", self.id),
|
|
|
|
("date_start", "<=", date_end),
|
|
"|",
|
|
("date_end", "=", False), # pas de date de fin OU
|
|
("date_end", ">=", date_start), # date de fin après le début
|
|
],
|
|
)
|
|
if len(calendars) > 1:
|
|
raise UserError(
|
|
_("There is a calendar starting during the timesheet sheet time period for the employee %s "
|
|
"Please create a new timesheet sheet starting from the new calendar start date")
|
|
% self.display_name
|
|
)
|
|
# if hr_employee_calendar found, use its calendar_id
|
|
elif calendars and calendars[0].calendar_id:
|
|
return calendars[0].calendar_id
|
|
# if resource calendar not found, use the ressource calendar of the company linked to the employee
|
|
elif self.company_id.resource_calendar_id:
|
|
return self.company_id.resource_calendar_id
|
|
return None |