mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
IMP hr_payroll_attendance_holidays,hr_payroll_timesheet_holidays Use the working calendar's "hours per day" when computing leaves.
This commit is contained in:
@@ -11,18 +11,19 @@ class HrPayslip(models.Model):
|
|||||||
leaves = {}
|
leaves = {}
|
||||||
|
|
||||||
for contract in contracts.filtered(lambda c: c.paid_hourly_attendance):
|
for contract in contracts.filtered(lambda c: c.paid_hourly_attendance):
|
||||||
|
hours_per_day = contract.resource_calendar_id.hours_per_day or HOURS_PER_DAY
|
||||||
for leave in self._fetch_valid_leaves(contract.employee_id.id, date_from, date_to):
|
for leave in self._fetch_valid_leaves(contract.employee_id.id, date_from, date_to):
|
||||||
leave_code = self._create_leave_code(leave.holiday_status_id.name)
|
leave_code = self._create_leave_code(leave.holiday_status_id.name)
|
||||||
if leave_code in leaves:
|
if leave_code in leaves:
|
||||||
leaves[leave_code]['number_of_days'] += leave.number_of_days
|
leaves[leave_code]['number_of_days'] += leave.number_of_days
|
||||||
leaves[leave_code]['number_of_hours'] += leave.number_of_days * HOURS_PER_DAY
|
leaves[leave_code]['number_of_hours'] += leave.number_of_days * hours_per_day
|
||||||
else:
|
else:
|
||||||
leaves[leave_code] = {
|
leaves[leave_code] = {
|
||||||
'name': leave.holiday_status_id.name,
|
'name': leave.holiday_status_id.name,
|
||||||
'sequence': 15,
|
'sequence': 15,
|
||||||
'code': leave_code,
|
'code': leave_code,
|
||||||
'number_of_days': leave.number_of_days,
|
'number_of_days': leave.number_of_days,
|
||||||
'number_of_hours': leave.number_of_days * HOURS_PER_DAY,
|
'number_of_hours': leave.number_of_days * hours_per_day,
|
||||||
'contract_id': contract.id,
|
'contract_id': contract.id,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,13 +61,14 @@ class HrPayslip(models.Model):
|
|||||||
"""
|
"""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
if code.startswith('L_'):
|
if code.startswith('L_'):
|
||||||
|
hours_per_day = self.contract_id.resource_calendar_id.hours_per_day or HOURS_PER_DAY
|
||||||
leaves = self._fetch_valid_leaves(self.employee_id.id, self.date_from, self.date_to)
|
leaves = self._fetch_valid_leaves(self.employee_id.id, self.date_from, self.date_to)
|
||||||
day_values = defaultdict(float)
|
day_values = defaultdict(float)
|
||||||
for leave in leaves:
|
for leave in leaves:
|
||||||
leave_code = self._create_leave_code(leave.holiday_status_id.name)
|
leave_code = self._create_leave_code(leave.holiday_status_id.name)
|
||||||
if leave_code == code:
|
if leave_code == code:
|
||||||
leave_iso = leave.date_from.isocalendar()
|
leave_iso = leave.date_from.isocalendar()
|
||||||
day_values[leave_iso] += leave.number_of_days * HOURS_PER_DAY
|
day_values[leave_iso] += leave.number_of_days * hours_per_day
|
||||||
return day_values
|
return day_values
|
||||||
elif hasattr(super(HrPayslip, self), 'hour_break_down'):
|
elif hasattr(super(HrPayslip, self), 'hour_break_down'):
|
||||||
return super(HrPayslip, self).hour_break_down(code)
|
return super(HrPayslip, self).hour_break_down(code)
|
||||||
|
|||||||
@@ -11,18 +11,19 @@ class HrPayslip(models.Model):
|
|||||||
leaves = {}
|
leaves = {}
|
||||||
|
|
||||||
for contract in contracts.filtered(lambda c: c.paid_hourly_timesheet):
|
for contract in contracts.filtered(lambda c: c.paid_hourly_timesheet):
|
||||||
|
hours_per_day = contract.resource_calendar_id.hours_per_day or HOURS_PER_DAY
|
||||||
for leave in self._fetch_valid_leaves_timesheet(contract.employee_id.id, date_from, date_to):
|
for leave in self._fetch_valid_leaves_timesheet(contract.employee_id.id, date_from, date_to):
|
||||||
leave_code = self._create_leave_code(leave.holiday_status_id.name)
|
leave_code = self._create_leave_code(leave.holiday_status_id.name)
|
||||||
if leave_code in leaves:
|
if leave_code in leaves:
|
||||||
leaves[leave_code]['number_of_days'] += leave.number_of_days
|
leaves[leave_code]['number_of_days'] += leave.number_of_days
|
||||||
leaves[leave_code]['number_of_hours'] += leave.number_of_days * HOURS_PER_DAY
|
leaves[leave_code]['number_of_hours'] += leave.number_of_days * hours_per_day
|
||||||
else:
|
else:
|
||||||
leaves[leave_code] = {
|
leaves[leave_code] = {
|
||||||
'name': leave.holiday_status_id.name,
|
'name': leave.holiday_status_id.name,
|
||||||
'sequence': 15,
|
'sequence': 15,
|
||||||
'code': leave_code,
|
'code': leave_code,
|
||||||
'number_of_days': leave.number_of_days,
|
'number_of_days': leave.number_of_days,
|
||||||
'number_of_hours': leave.number_of_days * HOURS_PER_DAY,
|
'number_of_hours': leave.number_of_days * hours_per_day,
|
||||||
'contract_id': contract.id,
|
'contract_id': contract.id,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,13 +62,14 @@ class HrPayslip(models.Model):
|
|||||||
"""
|
"""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
if code.startswith('L_'):
|
if code.startswith('L_'):
|
||||||
|
hours_per_day = self.contract_id.resource_calendar_id.hours_per_day or HOURS_PER_DAY
|
||||||
leaves = self._fetch_valid_leaves(self.employee_id.id, self.date_from, self.date_to)
|
leaves = self._fetch_valid_leaves(self.employee_id.id, self.date_from, self.date_to)
|
||||||
day_values = defaultdict(float)
|
day_values = defaultdict(float)
|
||||||
for leave in leaves:
|
for leave in leaves:
|
||||||
leave_code = self._create_leave_code(leave.holiday_status_id.name)
|
leave_code = self._create_leave_code(leave.holiday_status_id.name)
|
||||||
if leave_code == code:
|
if leave_code == code:
|
||||||
leave_iso = leave.date_from.isocalendar()
|
leave_iso = leave.date_from.isocalendar()
|
||||||
day_values[leave_iso] += leave.number_of_days * HOURS_PER_DAY
|
day_values[leave_iso] += leave.number_of_days * hours_per_day
|
||||||
return day_values
|
return day_values
|
||||||
elif hasattr(super(HrPayslip, self), 'hour_break_down'):
|
elif hasattr(super(HrPayslip, self), 'hour_break_down'):
|
||||||
return super(HrPayslip, self).hour_break_down(code)
|
return super(HrPayslip, self).hour_break_down(code)
|
||||||
Reference in New Issue
Block a user