HR base reports(Attendance Report)

This commit is contained in:
eman 2024-08-05 03:19:55 +03:00
parent 0fb5b2d716
commit 94fca4d5c7
1 changed files with 40 additions and 18 deletions

View File

@ -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