[IMP] hr_work_entry_contract: Add method to retrieve lunch intervals
This commit is contained in:
@@ -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]:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user