calc the absent

This commit is contained in:
mohammed-alkhazrji 2025-06-01 22:20:49 +03:00
parent ee00790b82
commit c6fd39c746
1 changed files with 26 additions and 6 deletions

View File

@ -141,7 +141,17 @@ class HrAttendanceReport(models.Model):
if missed_hours < 0:
missed_hours = 0
return {'leaves': leave_hours, 'missed_hours': missed_hours, 'mission_by_days': mission_by_days_hours, 'additional_hours': 0.0,'actual_absent_hours': absent_hours,'total_permission_hours':total_permission,'missing_punch_hours':missing_punch_hours}
early_exit_hours = sum(transactions.filtered(
lambda t: t.approve_exit_out).mapped('early_exit'))
lateness_hours = sum(transactions.filtered(
lambda t: t.approve_lateness).mapped('lateness'))
break_hours = sum(transactions.filtered(
lambda t: t.break_duration and t.break_duration > 0).mapped('break_duration'))
return {'leaves': leave_hours, 'missed_hours': missed_hours, 'mission_by_days': mission_by_days_hours, 'additional_hours': 0.0,'actual_absent_hours': absent_hours,'total_permission_hours':total_permission,'missing_punch_hours':missing_punch_hours,'total_lateness':lateness_hours,'total_early_exit':early_exit_hours,'total_break_duration':break_hours}
def generate_report(self):
transaction_values = {}
@ -163,7 +173,7 @@ class HrAttendanceReport(models.Model):
if self.calendar_ids: trans_domain += [('calendar_id', 'in', self.calendar_ids.ids)]
for employee in emps:
missed_hours, wasted_hours, absent, total_mission, leaves, hours_per_day, count, \
additional_hours,actual_absent_hours,total_permission_hours,missing_punch_hours = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
additional_hours,actual_absent_hours,total_permission_hours,missing_punch_hours,lateness_hours,early_exit_hours,break_hours = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0,0
emp_trans_dom = trans_domain.copy() + [('employee_id', '=', employee.id)]
attendance_transaction = transaction_pool.search(emp_trans_dom)
if len(attendance_transaction.mapped('calendar_id')) > 1:
@ -187,6 +197,10 @@ class HrAttendanceReport(models.Model):
actual_absent_hours = hours_dict.get('actual_absent_hours', 0.0)
total_permission_hours =hours_dict.get('total_permission_hours', 0.0)
missing_punch_hours = hours_dict.get('missing_punch_hours', 0.0)
break_hours = hours_dict.get('break_hours', 0.0)
early_exit_hours = hours_dict.get('early_exit_hours', 0.0)
lateness_hours = hours_dict.get('lateness_hours', 0.0)
total_mission += hours_dict['mission_by_days']
missed_hours += hours_dict['missed_hours']
leaves += hours_dict['leaves']
@ -199,6 +213,9 @@ class HrAttendanceReport(models.Model):
current_trans = attendance_transaction.filtered(lambda t: df <= t.date <= self.date_to)
hours_dict = self.calcualte_flexible_transaction(current_trans)
actual_absent_hours = hours_dict.get('actual_absent_hours', 0.0)
break_hours = hours_dict.get('break_hours', 0.0)
early_exit_hours = hours_dict.get('early_exit_hours', 0.0)
lateness_hours = hours_dict.get('lateness_hours', 0.0)
total_permission_hours = hours_dict.get('total_permission_hours', 0.0)
missing_punch_hours = hours_dict.get('missing_punch_hours', 0.0)
total_mission += hours_dict['mission_by_days']
@ -209,6 +226,9 @@ class HrAttendanceReport(models.Model):
hours_dict = self.calcualte_flexible_transaction(attendance_transaction)
missed_hours = hours_dict['missed_hours']
actual_absent_hours = hours_dict.get('actual_absent_hours', 0.0)
break_hours = hours_dict.get('break_hours', 0.0)
early_exit_hours = hours_dict.get('early_exit_hours', 0.0)
lateness_hours = hours_dict.get('lateness_hours', 0.0)
total_permission_hours = hours_dict.get('total_permission_hours', 0.0)
leaves, total_mission = hours_dict['leaves'], hours_dict['mission_by_days']
working_hours_flexible_days = emp_calendar.total_flexible_hours
@ -219,7 +239,7 @@ class HrAttendanceReport(models.Model):
'additional_hours': 0.0,
'exists': 0.0,
'extra_break_duration': 0.0,
'absent': missed_hours,
'absent': actual_absent_hours + missing_punch_hours + break_hours + early_exit_hours + lateness_hours ,
'mission_by_days': total_mission,
'absent_days_by_hr': 0.0,
'total_hours': missed_hours,
@ -269,6 +289,7 @@ class HrAttendanceReport(models.Model):
if (attendance.sign_in and not attendance.sign_out) or (
not attendance.sign_in and attendance.sign_out):
missing_punch_hours = attendance.plan_hours - attendance.official_hours
if attendance.is_absent:
actual_absent_hours +=attendance.plan_hours
total_absent += attendance.plan_hours
@ -306,7 +327,7 @@ class HrAttendanceReport(models.Model):
'leave': total_leaves,
'exists': early_exist,
'extra_break_duration': extra_break_duration,
'absent': total_absent,
'absent': actual_absent_hours + missing_punch_hours + lateness + early_exist + extra_break_duration,
'mission_by_days': total_mission_by_day,
'absent_days_by_hr': lateness_hours_by_hr,
'total_hours': get_total_hours,
@ -336,8 +357,7 @@ class HrAttendanceReport(models.Model):
temp_dict["delay"] = sum(item["delay"] for item in grp1)
temp_dict["leave"] = sum(item1["leave"] for item1 in grp2)
temp_dict["mission_by_days"] = sum(item1["mission_by_days"] for item1 in grp14)
temp_dict["absent"] = sum(item1["absent"] for item1 in grp3) - (
temp_dict["leave"] + temp_dict["mission_by_days"])
temp_dict["absent"] = sum(item1["absent"] for item1 in grp3)
temp_dict["exists"] = sum(item1["exists"] for item1 in grp4)
temp_dict["extra_break_duration"] = sum(item1["extra_break_duration"] for item1 in grp5)
temp_dict["absent_days_by_hr"] = sum(item1["absent_days_by_hr"] for item1 in grp6)