From 94fca4d5c7d6b1a0a8c447905e01aa680f87475e Mon Sep 17 00:00:00 2001 From: eman Date: Mon, 5 Aug 2024 03:19:55 +0300 Subject: [PATCH] HR base reports(Attendance Report) --- .../report/attendance_report.py | 58 +++++++++++++------ 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/odex25_hr/hr_base_reports/report/attendance_report.py b/odex25_hr/hr_base_reports/report/attendance_report.py index 3656084a2..a1bd948b1 100644 --- a/odex25_hr/hr_base_reports/report/attendance_report.py +++ b/odex25_hr/hr_base_reports/report/attendance_report.py @@ -66,19 +66,33 @@ class EmployeeAttendanceReportXlsx(models.AbstractModel): 'bold': True, 'bg_color': '#0f80d6', 'font_color': 'white'}) format2.set_align('center') - sheet.merge_range('A9:Q9', (_("Employee Attendance Transaction")) + " " + data['form']['date_from'] + ' - ' + + sheet.merge_range('A9:V9', (_("Employee Attendance Transaction")) + " " + data['form']['date_from'] + ' - ' + data['form']['date_to'], format2) sheet.set_column('B:D', 15) sheet.set_column('E:Q', 10) row = 9 clm = 0 - for res in [ - (_('#')), (_('Date')), (_('Employee ID')), (_('Employee Name')), (_('Department')), (_('Job Title')), - (_('Swap In Time')), (_('Swap Out Time')), (_('Lateness Hours')), (_('Extra Hour')), (_('Leave Name')) - , (_('Excuse Start Time')), (_('Excuse End Time')), - (_('Total Employee Late Hours')), (_('Total Late Department')), (_('Total Cost'))]: - sheet.write(row, clm, res, format0) - clm += 1 + if self.env.user.lang == 'ar_001': + for res in [ + (_('م')), (_('التاريخ')), (_('رقم الموظف')), (_('اسم الموظف')), (_('اسم القسم')), (_('الوظيفة')), + (_('زمن الدخول')), (_('زمن الخروج')), (_('التأخيرات')), (_('خروج مبكر')), + (_('إجمالي ساعات الإذن')) + , (_('ساعات الحضور')), (_('ساعات إضافية')), (_('اسم الأجازة')) + , (_('بداية وقت الإذن')), (_('نهاية وقت الإذن')), + (_('مجموع ساعات التأخير للموظف')), (_('مجموع ساعات تأخير الهيكل الإداري')), (_('إجمالي التكلفة')), + (_('عطل رسمية')), (_('مهام العمل')), (_('غياب'))]: + sheet.write(row, clm, res, format0) + clm += 1 + if self.env.user.lang == 'en_US': + for res in [ + (_('#')), (_('Date')), (_('Employee ID')), (_('Employee Name')), (_('Department')), (_('Job Title')), + (_('Sign In Time')), (_('Sign Out Time')), (_('Lateness Hours')),(_('Early Exit')),(_('Total Permission Hours')) + ,(_('Office Hours')), (_('Extra Hour')), (_('Leave Name')) + , (_('Excuse Start Time')), (_('Excuse End Time')), + (_('Total Employee Late Hours')), (_('Total Late Department')), (_('Total Cost')), + (_('Public Holiday')),(_('Is Official')),(_('Is Absent'))]: + sheet.write(row, clm, res, format0) + clm += 1 row = 10 seq = 0 for rec in docs[0]: @@ -89,24 +103,32 @@ class EmployeeAttendanceReportXlsx(models.AbstractModel): extra = rec.official_hours - rec.office_hours late = rec.break_duration + rec.lateness + rec.approve_exit_out sheet.write(row, clm, seq, format1) - sheet.write(row, clm + 1, rec.date, format1) - sheet.write(row, clm + 2, rec.employee_id.emp_no, format1) + sheet.write(row, clm + 1, str(rec.date), format1) + if rec.employee_id.saudi_number: + sheet.write(row, clm + 2, rec.employee_id.saudi_number.saudi_id, format1) + if rec.employee_id.iqama_number: + sheet.write(row, clm + 2, rec.employee_id.iqama_number.iqama_id, format1) sheet.write(row, clm + 3, rec.employee_id.name, format1) sheet.write(row, clm + 4, rec.employee_id.department_id.name, format1) sheet.write(row, clm + 5, rec.employee_id.job_id.name, format1) sheet.write(row, clm + 6, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(rec.sign_in) * 60, 60)), format1) sheet.write(row, clm + 7, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(rec.sign_out) * 60, 60)), format1) sheet.write(row, clm + 8, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(rec.lateness) * 60, 60)), format1) - sheet.write(row, clm + 9, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(rec.additional_hours) * 60, 60)), + sheet.write(row, clm + 9, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(rec.early_exit) * 60, 60)), format1) + sheet.write(row, clm + 10, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(rec.total_permission_hours) * 60, 60)), format1) + sheet.write(row, clm + 11, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(rec.office_hours) * 60, 60)), format1) + sheet.write(row, clm + 12, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(rec.additional_hours) * 60, 60)),format1) + sheet.write(row, clm + 13, rec.holiday_name.name if rec.holiday_name else " ", format1) + sheet.write(row, clm + 14, str(start[0]), format1) + sheet.write(row, clm + 15, str(start[1]), format1) + sheet.write(row, clm + 16, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(late) * 60, 60)), format1) + sheet.write(row, clm + 17, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(attendance_value[1]) * 60, 60)), format1) - sheet.write(row, clm + 10, rec.holiday_name.name if rec.holiday_name else " ", format1) - sheet.write(row, clm + 11, str(start[0]), format1) - sheet.write(row, clm + 12, str(start[1]), format1) - sheet.write(row, clm + 13, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(late) * 60, 60)), format1) - sheet.write(row, clm + 14, '{0:02.0f}:{1:02.0f}'.format(*divmod(float(attendance_value[1]) * 60, 60)), - format1) - sheet.write(row, clm + 15, + sheet.write(row, clm + 18, round((rec.break_duration + rec.lateness + rec.approve_exit_out) * attendance_value[0]), format1) + sheet.write(row, clm + 19, rec.public_holiday, format1) + sheet.write(row, clm + 20,rec.is_official, format1) + sheet.write(row, clm + 21,rec.is_absent, format1) row += 1