[IMP] hr_work_entry_contract: Add method to retrieve lunch intervals

This commit is contained in:
Yannick Tivisse
2023-02-03 10:25:00 +01:00
parent 2e4f399e90
commit 394014f679
2 changed files with 18 additions and 2 deletions
@@ -90,6 +90,22 @@ class HrContract(models.Model):
))
return result
def _get_lunch_intervals(self, start_dt, end_dt):
# {resource: intervals}
employees_by_calendar = defaultdict(lambda: self.env['hr.employee'])
for contract in self:
employees_by_calendar[contract.resource_calendar_id] |= contract.employee_id
result = {}
for calendar, employees in employees_by_calendar.items():
result.update(calendar._attendance_intervals_batch(
start_dt,
end_dt,
resources=employees.resource_id,
tz=pytz.timezone(calendar.tz),
lunch=True,
))
return result
def _get_interval_work_entry_type(self, interval):
self.ensure_one()
if 'work_entry_type_id' in interval[2] and interval[2].work_entry_type_id[:1]:
+2 -2
View File
@@ -269,7 +269,7 @@ class ResourceCalendar(models.Model):
# Computation API
# --------------------------------------------------
def _attendance_intervals_batch(self, start_dt, end_dt, resources=None, domain=None, tz=None):
def _attendance_intervals_batch(self, start_dt, end_dt, resources=None, domain=None, tz=None, lunch=False):
assert start_dt.tzinfo and end_dt.tzinfo
self.ensure_one()
@@ -284,7 +284,7 @@ class ResourceCalendar(models.Model):
('calendar_id', '=', self.id),
('resource_id', 'in', resource_ids),
('display_type', '=', False),
('day_period', '!=', 'lunch'),
('day_period', '!=' if not lunch else '=', 'lunch'),
]])
attendances = self.env['resource.calendar.attendance'].search(domain)