[IMP] hr_work_entry_contract: Add method to ease inheritance

This commit is contained in:
Yannick Tivisse
2023-02-03 10:25:00 +01:00
parent 5b6b1e0b18
commit 2e4f399e90
@@ -90,6 +90,16 @@ class HrContract(models.Model):
))
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]:
return interval[2].work_entry_type_id[:1]
return self._get_default_work_entry_type()
def _get_valid_leave_intervals(self, attendances, interval):
self.ensure_one()
return [interval]
def _get_contract_work_entries_values(self, date_start, date_stop):
start_dt = pytz.utc.localize(date_start) if not date_start.tzinfo else date_start
end_dt = pytz.utc.localize(date_stop) if not date_stop.tzinfo else date_stop
@@ -138,7 +148,12 @@ class HrContract(models.Model):
tz_dates[(tz, end_dt)] = end
dt0 = string_to_datetime(leave.date_from).astimezone(tz)
dt1 = string_to_datetime(leave.date_to).astimezone(tz)
result[resource.id].append((max(start, dt0), min(end, dt1), leave))
leave_start_dt = max(start, dt0)
leave_end_dt = min(end, dt1)
leave_interval = (leave_start_dt, leave_end_dt, leave)
leave_interval = contract._get_valid_leave_intervals(attendances, leave_interval)
if leave_interval:
result[resource.id] += leave_interval
mapped_leaves = {r.id: Intervals(result[r.id]) for r in resources_list}
leaves = mapped_leaves[resource.id]
@@ -175,10 +190,8 @@ class HrContract(models.Model):
leaves = split_leaves
# Attendances
default_work_entry_type = contract._get_default_work_entry_type()
for interval in real_attendances:
work_entry_type = 'work_entry_type_id' in interval[2] and interval[2].work_entry_type_id[:1]\
or default_work_entry_type
work_entry_type = contract._get_interval_work_entry_type(interval)
# All benefits generated here are using datetimes converted from the employee's timezone
contract_vals += [dict([
('name', "%s: %s" % (work_entry_type.name, employee.name)),