Lewati ke konten utama

Absensi dan Shift

Absensi di GARP ERP adalah satu baris per karyawan per hari, dan baris itu membawa sebuah status: Present (hadir), Absent (mangkir), On Leave (cuti), Half Day (setengah hari) atau Work From Home (bekerja dari rumah). Di sinilah Anda menyiapkan shift kerja yang diikuti orang, mengumpulkan check-in mereka, menandai hari-harinya, dan memperbaiki hari yang tercatat keliru. Penggajian menghitung hari-hari ini, jadi apa yang Anda catat di sini itulah yang dibayarkan kepada karyawan.

Absensi satu hari bisa masuk lewat lima jalur: diketik manual, ditandai secara massal, dibuat dari permintaan yang diajukan karyawan, dihasilkan dari check-in, atau dituliskan untuk Anda saat sebuah Leave Application (pengajuan cuti) yang disetujui disubmit. Halaman ini membahas empat jalur pertama berikut penyiapan shift di baliknya; cuti dibahas di Cuti.

Buka Shift & Attendance lewat namanya di sidebar HR — nama workspace ini mengandung tanda ampersand, jadi gunakan sidebar dan jangan mengetik URL-nya.

Yang mungkin ingin Anda kerjakan​

Menyiapkan absensi untuk pertama kali​

Kerjakan daftar berikut satu kali saja, per perusahaan. Penandaan absensi dan penggajian sama-sama berhenti dengan error sampai daftar ini tuntas.

  1. Satu Holiday List untuk tahun berjalan, dan satu Holiday List Assignment yang sudah disubmit per perusahaan, ditambah penetapan per karyawan bagi orang yang hari liburnya berbeda. Cocokkan daftar yang dihasilkan dengan kalender resmi Indonesia termasuk cuti bersama, dan tetapkan sendiri Weekly Off-nya.
  2. Minimal satu Shift Type. Tambahkan pengaturan auto attendance hanya bila check-in memang benar-benar akan masuk. Kedua dropdown — Determine Check-in and Check-out dan Working Hours Calculation Based On — wajib diisi, jangan dibiarkan kosong.
  3. Shift Assignment, atau sebuah Default Shift pada tiap Employee.
  4. Attendance Device ID pada data karyawan, bila Anda memakai biometrik. Pastikan nomor yang dihasilkan otomatis cocok dengan yang tersimpan di perangkat.
  5. HR Settings (/app/hr-settings, tab Shift and Attendance) untuk penugasan ganda, check-in lewat aplikasi mobile, dan geolokasi.
  6. Shift Request Approver pada data Employee atau pada Department, bila karyawan akan mengajukan permintaan.
  7. Payroll Settings, Calculate Payroll Working Days Based On. Putuskan ini sebelum penggajian pertama dijalankan, karena pengaturan tersebut mengubah seberapa mahal sebuah catatan Absent.

Untuk memeriksa hasilnya setelah itu, jalankan Monthly Attendance Sheet, Shift Attendance, atau Employees working on a holiday — lihat Laporan yang bisa Anda jalankan.

peringatan

Field Holiday List pada form Employee disembunyikan oleh GARP HR dan bukan tempat hari libur dibaca. Hari libur diambil dari Holiday List Assignment: penetapan milik karyawan itu sendiri lebih dulu, baru penetapan milik perusahaannya, masing-masing diambil dari penetapan terbaru yang Assignment Starts From-nya jatuh pada atau sebelum tanggal yang sedang diperiksa. Tanggal Assignment Starts From harus berada di dalam rentang From Date dan To Date milik daftar itu sendiri, atau Anda akan mendapat "Assignment start date cannot be outside holiday list dates". Tanpa penetapan sama sekali, Anda akan menemui "No Holiday List was found for Employee X or their company Y for date Z. Please assign through Holiday List Assignment" saat menandai absensi atau menjalankan penggajian.

Sebuah Holiday List berisi hari libur mingguan dan hari libur nasional Indonesia.

Sebuah Holiday List berisi hari libur mingguan dan hari libur nasional Indonesia.

Membuat sebuah shift​

Sebuah Shift Type dengan auto attendance yang sudah diaktifkan.

Sebuah Shift Type dengan auto attendance yang sudah diaktifkan.

  1. Buka /app/shift-type lalu klik Add Shift Type. Beri nama sesuai sebutan sehari-hari orang, misalnya Shift Pagi.
  2. Isi Start Time dan End Time. Shift lintas hari bisa dipakai, tetapi rentang waktunya, termasuk kedua field buffer, harus tetap di bawah 24 jam atau dokumen gagal disimpan.
  3. Holiday List yang diisi di sini menimpa daftar milik karyawan untuk shift ini.
  4. Untuk penandaan otomatis, centang Enable Auto Attendance, lalu pilih kedua dropdown dan isi Process Attendance After, kedua ambang batas, serta Last Sync of Checkin.
  5. Simpan. Allow Overtime dan Overtime Type berada lebih ke bawah pada form yang sama — lihat Lembur.

Setiap field pada form ini, berikut tiga keadaan yang membuat GARP menolak menyimpan, dirinci di Referensi field Shift Type.

catatan

Periksa /app/shift-type sebelum Anda membuat shift sendiri. Sebuah update bawaan membuat shift bernama office_hour dari 08:00 sampai 16:00 dengan auto attendance sudah aktif, buffer dua jam di kedua sisi, dan ambang batas 4 dan 1 jam. Kalaupun shift itu ada di site Anda, ia tetap tidak menandai apa pun: Last Sync of Checkin dibiarkan kosong, sehingga tidak ada yang pernah diproses. Update itu juga menuliskan nilai yang tidak valid ke Determine Check-in and Check-out, jadi pilih ulang field tersebut sebelum mengisi Last Sync of Checkin.

Mengaktifkan absensi otomatis​

Tidak ada satu pun yang berjalan otomatis sampai Anda mengaktifkannya pada satu Shift Type tertentu. GARP hanya memproses check-in bila ketiga syarat berikut terpenuhi pada shift itu:

  • Enable Auto Attendance dicentang.
  • Process Attendance After terisi tanggal.
  • Last Sync of Checkin terisi tanggal dan waktu.

Bila salah satu saja kosong, sama sekali tidak ada yang terjadi — tidak ada absensi, dan tidak ada pesan error yang memberi tahu Anda alasannya.

Menjaga agar Last Sync of Checkin terus maju adalah hambatan yang paling sering ditemui. Centanglah Automatically update Last Sync of Checkin, yang membuat GARP memajukan nilainya sendiri ke satu menit setelah tiap akhir shift yang sudah selesai, atau minta siapa pun yang membangun integrasi perangkat Anda menuliskan nilai itu setiap kali selesai menarik data dari mesin.

peringatan

Mencentang Automatically update Last Sync of Checkin langsung mengosongkan Last Sync of Checkin pada form. Sampai GARP mengisinya kembali setelah shift berikutnya berakhir, tombol Mark Attendance menolak berjalan dan pemrosesan otomatis melewati shift tersebut.

Untuk memproses data yang sudah masuk tanpa menunggu, gunakan tombol Mark Attendance pada Shift Type yang sudah tersimpan. Tombol itu menjalankan rutinnya saat itu juga, dan menolak dengan "Please Enable Auto Attendance and complete the setup first.", "Please set Process Attendance After." atau "Please set Last Sync of Checkin." bila penyiapannya belum lengkap. Bila check-in yang memenuhi syarat lebih dari 1.000, prosesnya berjalan di latar belakang dan Anda diberi tautan untuk memantau pekerjaannya. Form yang sama punya grup Shift Tools yang memuat Shift Assignment Tool, yang sudah terisi shift ini, dan Roster.

Untuk mengetahui persis rekaman absen mana yang diambil, bagaimana working hours berubah menjadi sebuah status, dan apa yang terjadi pada hari-hari yang tidak ada rekamannya, lihat Bagaimana check-in menjadi absensi.

Menugaskan shift​

  • Satu karyawan: buat Shift Assignment untuk, misalnya, Budi Santoso dengan Shift Type dan tanggalnya, lalu klik Submit.
  • Banyak karyawan: buka /app/shift-assignment-tool dengan Action diisi Assign Shift, tentukan Shift Type dan tanggalnya, persempit berdasarkan company, branch, department, designation, grade atau employment type, centang barisnya lalu klik Assign Shift. Tool ini hanya menampilkan karyawan Active yang tanggal bergabungnya pada atau sebelum Start Date dan yang relieving date-nya, bila ada, mencakup seluruh periode itu. Orang yang punya penugasan Active tumpang tindih dikecualikan; mengaktifkan Allow Multiple Shift Assignments for Same Date di HR Settings mempersempit pengecualian itu hanya kepada orang yang jam shift lamanya benar-benar beririsan dengan shift yang sedang Anda tugaskan. Mengisi Status pada tool dengan Inactive menghapus pengecualian itu sepenuhnya. Sampai 30 karyawan diproses langsung; lebih dari itu berjalan di latar belakang.
  • Roster berulang: buat Shift Schedule dengan Frequency dari Every Week sampai Every 4 Weeks berikut hari-hari pengulangannya, lalu jalankan tool dengan Action diisi Assign Shift Schedule. GARP memperpanjang sendiri penugasan yang dihasilkan sampai sekitar 90 hari ke depan.
  • Secara visual: buka Roster dari sidebar, atau /hr/roster. Karyawan menjadi baris, hari menjadi kolom, dan Anda harus memilih sebuah company atau grid-nya menampilkan "Please select a company." Arahkan kursor ke sebuah sel untuk menambahkan shift, dan seret bloknya untuk memindahkan; hari libur serta cuti yang sudah disetujui ikut tampil di sel. Saat ini hanya tersedia tampilan bulanan.
  • Dari permintaan: karyawan mengajukan Shift Request dengan menyebutkan seorang Approver. Ubah statusnya menjadi Approved lalu submit, atau proses sekaligus dengan Process Shift Requests, yang hanya menampilkan permintaan berstatus Draft.

Default Shift pada data Employee menutup tanggal-tanggal yang tidak tersentuh penugasan mana pun, dan tidak seorang pun boleh mengajukan shift yang sudah menjadi default-nya sendiri. Sebuah penugasan tidak bisa dibatalkan begitu ada check-in atau catatan absensi yang mengacu padanya.

peringatan

Bila Anda mengisi End Date pada Shift Assignment Tool saat menugaskan sebuah Shift Schedule, Shift Schedule Assignment yang dihasilkan dibuat dengan Enabled nonaktif. Ia menghasilkan penugasan untuk periode yang Anda minta lalu tidak pernah memperpanjangnya lagi. Kosongkan End Date bila Anda ingin roster yang terus berjalan.

Mengimpor atau merekam check-in​

  1. Attendance Device ID (Biometric/RF tag ID) pada data Employee terisi otomatis saat karyawan dibuat: device ID numerik tertinggi yang sudah dipakai di perusahaan itu, ditambah satu. Isi sendiri hanya bila perangkat menyimpan nomor yang berbeda, dan lakukan sebelum menyimpan karyawan baru tersebut, karena nilai yang sudah ada tidak akan diubah.
  2. Perangkat atau middleware Anda sendirilah yang harus mengirim setiap rekaman absen ke GARP. Tidak ada driver bawaan untuk merek biometrik mana pun, jadi sistem di sisi Anda yang harus melakukan pengirimannya. Siapa pun yang menyiapkannya memerlukan alamat ini — hrms.hr.doctype.employee_checkin.employee_checkin.add_log_based_on_employee_field — dan mengirimkan nilai device, timestamp, serta secara opsional log type, device id, latitude dan longitude. Alamat ini menjawab "'employee_field_value' and 'timestamp' are required." atau "No Employee found for the given employee field value." bila pencariannya gagal.
  3. Untuk pengisian data lama, buka daftar Employee Checkin lalu gunakan Import dari menu.
  4. Karyawan bisa merekam absen dari aplikasi self-service bila Allow Employee Checkin from Mobile App aktif — pengaturan ini aktif secara bawaan. Aplikasi selalu mengisi Log Type, bergantian IN dan OUT berdasarkan rekaman terakhir orang tersebut, dan membiarkan Location / Device ID kosong. Allow Geolocation Tracking kemudian membuat koordinat menjadi wajib serta memunculkan Latitude, Longitude, Geolocation dan Fetch Geolocation pada form desk. Kedua pengaturan itu ada di HR Settings, tab Shift and Attendance, yang hanya memuat keduanya ditambah Allow Multiple Shift Assignments for Same Date.
catatan

Checkin Radius hanya diberlakukan bila Shift Assignment aktif milik karyawan menyebut sebuah Shift Location yang Checkin Radius-nya di atas nol. Dengan geolokasi aktif tetapi tanpa Shift Location pada penugasannya, koordinat tetap wajib diisi namun koordinat apa pun akan diterima. Berada di luar jangkauan memunculkan "You must be within N meters of your shift location to check in."

Menandai absensi secara massal​

Employee Attendance Tool menandai satu kelompok karyawan hadir atau tidak hadir untuk satu tanggal.

Employee Attendance Tool menandai satu kelompok karyawan hadir atau tidak hadir untuk satu tanggal.

  • Satu tanggal, banyak orang: buka /app/employee-attendance-tool, isi Date dan filternya, klik Get Employees, centang nama-nama di bawah Unmarked Employees, pilih sebuah Status lalu klik Mark Attendance. Hanya Present, Absent, Half Day dan Work From Home yang tersedia; On Leave datang dari cuti yang sudah disetujui. Daftar kedua, Employees on Half Day, mengisi Status for Other Half bagi orang yang sudah mengambil cuti setengah hari. Hanya HR Manager yang bisa membuka tool ini.
  • Satu orang, banyak tanggal: dari daftar Attendance klik Mark Attendance di toolbar, pilih karyawannya, rentang tanggalnya, sebuah status dan bila perlu sebuah Shift, centang Exclude Holidays, lalu konfirmasi tanggal-tanggalnya. Start berisi tanggal 1 bulan berjalan secara bawaan, End berisi hari ini, dan pemilih End tidak bisa melewati hari ini. Lebih dari sepuluh tanggal akan berjalan di latar belakang, dan Half Day yang ditandai di sini selalu mengisi Status for Other Half dengan Absent.
  • Lewat spreadsheet: buka /app/upload-attendance, isi kedua tanggal, klik Get Template untuk mendapatkan CSV yang sudah terisi karyawan dan tanggal, lengkapi kolom Status lalu unggah kembali. Pertahankan kolom ID bila Anda menimpa catatan yang sudah ada. Baris yang dicap Holiday oleh template akan dibuang saat impor. Berkas di bawah 200 baris diimpor sambil Anda menunggu.
peringatan

Unggahan absensi bersifat semua-atau-tidak-sama-sekali. Bila ada satu baris saja yang memunculkan error, seluruh impor di-rollback dan Anda mendapat daftar error per baris, bukan impor sebagian.

Memperbaiki catatan satu hari​

Catatan Attendance selama satu bulan, satu baris per karyawan per hari.

Catatan Attendance selama satu bulan, satu baris per karyawan per hari.

  • Sebenarnya mereka bekerja, bukan mangkir: ajukan Attendance Request dengan Reason diisi Work From Home atau On Duty. Saat Anda menyubmitnya, GARP membuat Attendance yang belum ada dan menimpa status pada catatan yang sudah ada, melewati hari libur kecuali Include Holidays dicentang, serta selalu melewati hari-hari yang sudah tercatat sebagai cuti disetujui. Dari sebuah catatan Absent, Create > Attendance Request akan terisi otomatis. Draf yang sudah disimpan menampilkan panel Attendance Warnings yang mencantumkan, per tanggal, apakah permintaan itu akan Skip atau Overwrite dan apa alasannya.
  • Statusnya salah: batalkan Attendance tersebut lalu buat catatan baru untuk tanggal yang sama — catatan yang sudah dibatalkan tidak lagi dihitung sebagai duplikat. Tidak ada role bawaan yang punya hak Amend pada Attendance, jadi tombol Amend memang tidak ada. Pembatalan melepaskan kaitan check-in-nya, disertai pesan "Unlinked logs" yang menyebut masing-masing check-in, sehingga check-in itu kembali memenuhi syarat.
  • Jam check-in-nya salah: waktu itu tidak bisa diedit selama masih ada Attendance yang terhubung. Batalkan dulu Attendance-nya, atau Anda akan mendapat "Cannot Modify Time — An attendance record is linked to this checkin. Please cancel the attendance before modifying time."
  • Rekaman absennya diabaikan: periksa apakah statusnya Off-shift atau ditandai Skip Auto Attendance, perlebar rentang shift-nya, lalu jalankan Fetch Shift.
  • Harinya tampil sebagai On Leave: itu memang disengaja. Cuti disetujui yang mencakup tanggal tersebut memaksa status On Leave, atau Half Day pada tanggal setengah harinya, serta mencap Leave Type dan Leave Application pada catatan itu. Perbaiki catatan cutinya, bukan absensinya.

Laporan yang bisa Anda jalankan​

LaporanRoleCatatan
Monthly Attendance SheetHR User, HR Manager, System ManagerCompany wajib diisi. Filter Based On bisa Month atau Date Range; rentang yang lebih lebar dari 90 hari ditolak. Sel harian memakai P, A, HD/P, HD/A, WFH, L, H dan WO. Summarized View mengganti grid harian dengan total ditambah satu kolom per Leave Type.
Shift AttendanceHR User, HR Manager, System Manager, Employee, Employee Self ServiceCompany dan tanggal wajib diisi, secara bawaan berisi bulan berjalan. Laporan ini menggabungkan Attendance dengan Employee Checkin, sehingga hari tanpa check-in tidak muncul sampai Anda mencentang Include Shift Attendance Without Checkins. Hapus centang Consider Grace Period untuk melihat setiap menit keterlambatan, bukan hanya hari yang tertandai.
Employees working on a holidayHR User, HR Manager, System ManagerCompany wajib diisi; tanggalnya secara bawaan berisi awal dan akhir tahun kalender.
Fingerprint Machine ExportHR User, HR ManagerMenampilkan karyawan Active beserta PIN Fingerprint dan Status Mesin Absensi untuk dimuat ke sebuah perangkat.
peringatan

Fingerprint Machine Export membaca dua custom field pada Employee, PIN Fingerprint dan Status Mesin Absensi, yang dibuat oleh sebuah update yang tidak terdaftar untuk dijalankan — di site yang belum ada orang menambahkannya secara manual, laporan ini tidak punya apa pun untuk dibaca. Nomor yang dihasilkan otomatis seperti dijelaskan di atas masuk ke Attendance Device ID, yaitu field yang berbeda; ekspor field itu dari list view Employee sebagai gantinya.

Praktik di Indonesia​

Tidak ada modul regional Indonesia di dalam aplikasi HR: folder regional-nya hanya berisi India dan United Arab Emirates. Yang ada untuk Indonesia adalah sekumpulan update bawaan, dan penting untuk tahu persis apa yang mereka lakukan terhadap area ini.

  • Hari libur. Holiday List menyediakan Country dan Subdivision ditambah tombol Add to Holidays yang menarik data dari sebuah pustaka hari libur nasional yang bersifat umum. Cocokkan hasilnya dengan kalender SKB resmi — cuti bersama adalah keputusan kebijakan, bukan hari libur nasional yang tetap, jadi tambahkan sendiri baris-barisnya. Isi Weekly Off lalu tekan tombol Add to Holidays yang satunya untuk menghasilkan hari Minggu, dan centang Is Half Day lebih dulu bila Anda menginginkan baris setengah hari. Baris setengah hari sama sekali tidak diperlakukan sebagai hari libur; ia membagi dua ambang batasnya, bukan melewati harinya.
  • Lembur pada hari libur. Update lembur Indonesia mencentang Mark Auto Attendance on Holidays pada setiap Shift Type yang auto attendance-nya aktif, berikut Allow Overtime dan Overtime Type Lembur GARP. Pada site yang sudah menjalankan update itu, hari libur tidak lagi dilewati dan siapa pun yang merekam absen pada libur nasional mendapat catatan Present — tepat untuk perhitungan lembur, keliru bila Anda mengharapkan hari libur tetap kosong. Periksa field itu pada tiap shift.
  • Ketidakhadiran dan gaji. Menandai seseorang Absent dengan sendirinya tidak memotong gaji. Payroll Settings > Calculate Payroll Working Days Based On secara bawaan berisi Leave; hanya dengan Attendance hari Absent mengurangi Payment Days, dan Consider Unmarked Attendance As kemudian menentukan arti sebuah hari yang tidak ditandai. Komponen Potongan bawaan tetap memotong satu per dua puluh lima dari Gaji Pokok untuk setiap hari mangkir, apa pun pengaturan itu. Pilih satu mekanisme saja, jangan keduanya.
  • BPJS, PPh 21 dan THR. Tidak ada satu pun di halaman ini yang menyentuh ketiganya. Absensi hanya memasok jumlah hari ke formula gaji, tidak lebih; komponen iuran dan pajak dikonfigurasi di Pajak dan tunjangan.
  • PKWT dan PKWTT. Jenis kontrak tersimpan pada data Employee sebagai Employment Type dan tidak berpengaruh apa pun terhadap shift, check-in maupun penandaan absensi.

Detail, batasan dan kasus khusus​

Semua yang ada di bawah ini bersifat referensi. Anda tidak memerlukannya untuk menjalankan absensi sehari-hari — datanglah ke sini ketika ada field, aturan, pesan error atau hak akses yang perlu dicari.

Dokumen yang terlibat​

  • Shift Type (/app/shift-type) — rentang jam kerja yang diberi nama: Start Time, End Time, Holiday List opsional, dan pengaturan auto attendance. Namanya Anda ketik sendiri.
  • Shift Assignment (/app/shift-assignment) — Anda menyubmitnya; dokumen ini menempatkan satu karyawan pada satu Shift Type mulai Start Date, bila perlu sampai End Date, dengan Status Active atau Inactive, sebuah Shift Location dan sebuah Overtime Type.
  • Shift Schedule beserta Shift Schedule Assignment (/app/shift-schedule) — pola mingguan berulang yang menghasilkan Shift Assignment. Shift Location (/app/shift-location) menyimpan sebuah titik koordinat dan sebuah Checkin Radius.
  • Shift Request (/app/shift-request) — karyawan mengajukan shift yang berbeda; menyubmitnya dengan status Approved akan membuat Shift Assignment. Shift Assignment Tool (/app/shift-assignment-tool) menjalankan Assign Shift, Assign Shift Schedule atau Process Shift Requests secara massal.
  • Employee Checkin (/app/employee-checkin) — satu rekaman absen: Time, Log Type opsional berupa IN atau OUT, serta Location / Device ID.
  • Attendance (/app/attendance) — catatan harian: Present, Absent, On Leave, Half Day atau Work From Home, dengan Working Hours, In Time, Out Time, Late Entry, Early Exit dan Status for Other Half.
  • Attendance Request (/app/attendance-request) — Work From Home atau On Duty untuk satu rentang tanggal; saat disubmit, dokumen ini menuliskan Attendance.
  • Employee Attendance Tool (/app/employee-attendance-tool) — menandai banyak karyawan sekaligus untuk satu tanggal.
  • Holiday List (/app/holiday-list) dan Holiday List Assignment (/app/holiday-list-assignment) — hari non-kerja, dan siapa saja yang terkena. Keduanya berada di bawah Setup pada sidebar workspace Leaves; Holiday List juga punya kartu tautan di workspace itu sendiri.

Bagaimana semuanya terhubung​

Shift Type ─▶ Shift Assignment ─▶ Employee Checkin ─▶ Attendance
│ ▲ ▲
│ └── Shift Request / Shift Schedule │
└── auto attendance settings ────────────────────────┘

Attendance Request ─▶ Attendance Employee Attendance Tool ─▶ Attendance

Referensi field Shift Type​

Start Time dan End Time selalu wajib diisi. Process Attendance After menjadi wajib begitu Enable Auto Attendance dicentang, dan Overtime Type menjadi wajib begitu Allow Overtime dicentang. Setiap field lain punya nilai default yang menentukan apa yang terjadi bila Anda membiarkannya apa adanya.

FieldMenerimaDefaultApa yang bergantung padanya
Start Time, End TimeSebuah jamtidak ada, keduanya wajibMenentukan rentang shift. End yang lebih awal daripada start berarti shift lintas hari.
Holiday ListPilih sebuah Holiday ListkosongMenimpa daftar milik karyawan pada setiap pemeriksaan hari libur yang dilakukan shift ini. Bila kosong, sistem kembali memakai Holiday List Assignment.
Roster ColorSalah satu dari sepuluh warnaBlueWarna blok di Roster. Tidak berpengaruh pada hal lain.
Enable Auto AttendanceKotak centangnonaktifSaklar utama. Bila nonaktif, check-in tetap direkam dan dicocokkan ke shift, tetapi tidak pernah menjadi Attendance.
Determine Check-in and Check-outAlternating entries as IN and OUT during the same shift / Strictly based on Log Type in Employee CheckinkosongNilai kosong tidak cocok dengan cabang mana pun sehingga working hours menjadi nol. Wajib Anda isi.
Working Hours Calculation Based OnFirst Check-in and Last Check-out / Every Valid Check-in and Check-outkosongDengan First/Last, jam istirahat ikut terhitung sebagai waktu yang dibayar. Dengan Every Valid, rekaman yang tidak berpasangan dibuang.
Begin check-in before shift start time (in minutes)Bilangan bulat menit60Memperlebar jendela rekaman absen ke belakang. Rekaman di luar batas itu disimpan sebagai Off-shift.
Allow check-out after shift end time (in minutes)Bilangan bulat menit60Memperlebarnya ke depan, sekaligus menetapkan batas yang dibandingkan terhadap Last Sync of Checkin.
Working Hours Threshold for Half DayJam, boleh desimal0Di bawah nilai ini, statusnya Half Day. Nol menonaktifkannya.
Working Hours Threshold for AbsentJam, boleh desimal0Di bawah nilai ini, statusnya Absent — diperiksa lebih dulu, jadi mengalahkan Half Day. Nol menonaktifkannya.
Process Attendance AfterSebuah tanggalHari iniTidak ada apa pun sebelum tanggal ini yang pernah diproses.
Last Sync of CheckinTanggal dan waktukosongHanya shift yang waktu berakhirnya benar-benar lebih awal daripada nilai ini yang memenuhi syarat.
Automatically update Last Sync of CheckinKotak centangnonaktifMembiarkan GARP memajukan sendiri nilainya setiap kali sebuah shift berakhir.
Mark Auto Attendance on HolidaysKotak centangnonaktifBila aktif, pemeriksaan hari libur dilewati dan absensi tetap ditandai pada hari apa pun yang ada check-in-nya.
Enable Late Entry Marking / Late Entry Grace PeriodKotak centang / menitnonaktif / kosongGrace period yang kosong dihitung nol menit.
Enable Early Exit Marking / Early Exit Grace PeriodKotak centang / menitnonaktif / kosongSama.
Allow Overtime, Overtime TypeKotak centang, lalu pilih sebuah Overtime TypenonaktifMenuliskan Standard Working Hours dan Actual Overtime Duration ke Attendance. Lihat Lembur.

GARP menolak menyimpan shift dalam tiga keadaan:

  • Start Time dan End Time yang identik memunculkan "Invalid Shift Times — Start time and end time cannot be same."
  • Rentang yang mencapai 24 jam setelah kedua buffer ditambahkan memunculkan "Please reduce X to avoid shift time overlapping with itself", dengan menyebut field buffer mana pun yang nilainya lebih besar.
  • Mengubah Start Time selagi masih ada check-in belum terhubung yang menunjuk ke shift itu memunculkan "Unmarked Check-in Logs Found — Mark attendance for existing check-in/out logs before changing shift settings". Sebuah rekaman absen dianggap belum terhubung bila tidak punya Attendance, tidak punya Skip Auto Attendance dan tidak bertanda Off-shift.

Bagaimana check-in menjadi absensi​

Check-in mana yang memenuhi syarat​

Sekali dalam satu jam, GARP mengambil check-in yang belum terhubung ke Attendance mana pun, tidak ditandai Skip Auto Attendance, tidak berstatus Off-shift, bertanggal pada atau setelah Process Attendance After, membawa Shift ini, dan yang akhir shift-nya ditambah buffer check-out benar-benar lebih awal daripada Last Sync of Checkin.

Syarat terakhir itulah yang biasanya menjadi titik kegagalan: bila Last Sync of Checkin tidak pernah maju, tidak ada satu pun rekaman absen yang memenuhi syarat. Centanglah Automatically update Last Sync of Checkin, yang membuat GARP memajukan nilainya tiap jam ke satu menit setelah setiap akhir shift yang sudah selesai, atau minta integrasi Anda menuliskan nilai itu setiap kali selesai menarik data dari perangkat.

Rekaman absen yang memenuhi syarat dikelompokkan per karyawan dan per waktu mulai shift, sehingga semua rekaman satu orang untuk satu shift dievaluasi bersama-sama.

Bagaimana working hours menjadi sebuah status​

Working hours dihitung dari kedua dropdown tersebut, lalu dibandingkan terhadap ambang batasnya:

  • Alternating entries ditambah First Check-in and Last Check-out: rekaman terakhir dikurangi rekaman pertama, apa pun isi Log Type-nya. Satu rekaman saja menghasilkan nol jam.
  • Alternating entries ditambah Every Valid Check-in and Check-out: rekaman dipasangkan 1-2, 3-4 dan seterusnya; rekaman ganjil di ujung dibuang.
  • Strictly based on Log Type ditambah First Check-in and Last Check-out: IN pertama sampai OUT terakhir. Bila salah satunya tidak ada, hasilnya nol.
  • Strictly based on Log Type ditambah Every Valid Check-in and Check-out: setiap IN dipasangkan dengan OUT berikutnya, lalu dijumlahkan.

Setiap hasil dibulatkan ke dua desimal. Di bawah Working Hours Threshold for Absent menghasilkan Absent, di bawah Working Hours Threshold for Half Day menghasilkan Half Day, selebihnya Present. Nilai nol menonaktifkan sebuah ambang batas, dan keduanya dibagi dua pada tanggal yang ditandai Is Half Day oleh holiday list.

Late Entry dan Early Exit hanya dicap bila Anda mencentang Enable Late Entry Marking atau Enable Early Exit Marking. Keduanya diukur terhadap jam mulai dan jam selesai terjadwal ditambah atau dikurangi grace period, bukan terhadap rentang yang sudah diperlebar buffer.

Attendance dibuat sekaligus disubmit dalam satu langkah dengan Working Hours, In Time, Out Time, Late Entry, Early Exit dan Shift terisi, dan setiap check-in yang berkontribusi mendapat Attendance Marked yang menunjuk ke catatan itu. Absent yang dihasilkan lewat jalur ini membawa komentar "Employee was marked Absent for not meeting the working hours threshold."

Penandaan Absent, dan jeda satu hari​

Setelah rekaman absen diproses, rutin ini menyapu karyawan yang ditugaskan — siapa pun yang punya penugasan Active tersubmit ke shift ini yang belum berakhir, ditambah siapa pun yang data Employee-nya menyebut shift ini sebagai Default Shift, dikurangi karyawan yang statusnya Inactive — dan menandai Absent pada hari kerja yang sama sekali tidak punya absensi, dengan komentar "Employee was marked Absent due to missing Employee Checkins."

Penyapuan dimulai dari yang lebih akhir antara Process Attendance After dan tanggal bergabung, lalu berhenti pada shift yang mulai satu hari sebelum Last Sync of Checkin — sengaja, agar tersisa satu hari untuk entri manual. Hari libur dan tanggal yang sudah punya Attendance yang belum dibatalkan akan dilewati. Satu tahap terakhir mengisi Status for Other Half dengan Absent pada catatan cuti setengah hari yang belum terselesaikan.

Ketika rutin ini menyerah pada sebuah rekaman absen​

Bila GARP menolak membuat Attendance — paling sering karena sudah ada Attendance untuk karyawan dan tanggal tersebut — percobaan itu di-rollback, setiap rekaman absen dalam kelompoknya ditandai Skip Auto Attendance, dan masing-masing mendapat komentar yang diawali "Reason for skipping auto attendance:" berikut teks error-nya. Rekaman-rekaman itu kini dikecualikan secara permanen; hapus centang tandanya untuk memberi mereka kesempatan sekali lagi.

Rekaman absen Off-shift​

Rekaman absen di luar rentang yang ditentukan Begin check-in before shift start time dan Allow check-out after shift end time disimpan dengan Off-shift tercentang, menampilkan indikator Off-Shift berwarna kuning di daftar serta headline pada form, dan diabaikan. Perlebar rentang shift-nya, lalu gunakan Fetch Shift pada form — yang tersembunyi begitu ada Attendance terhubung — atau Actions > Fetch Shifts pada daftar untuk memproses sekaligus.

Bila Determine Check-in and Check-out diisi "Strictly based on Log Type in Employee Checkin", menyimpan check-in yang jatuh di dalam shift itu tanpa Log Type akan ditolak dengan "Log Type is required for check-ins falling in the shift: X." Skip Auto Attendance melewati pemeriksaan tersebut.

Apa yang dijalankan GARP sendiri​

Tiga yang pertama berjalan di antrean latar belakang yang sama, dengan urutan seperti ini, sehingga Last Sync of Checkin sudah dimajukan sebelum absensi diproses pada putaran yang sama.

Yang berjalanSeberapa seringFungsinya
Memajukan Last Sync of Checkin (update_last_sync_of_checkin)per jamUntuk setiap Shift Type yang punya Enable Auto Attendance sekaligus Automatically update Last Sync of Checkin, mengisi Last Sync of Checkin dengan satu menit setelah akhir shift terakhir yang sudah selesai.
Memproses absensi otomatis (process_auto_attendance_for_all_shifts)per jamMenjalankan rutin di atas untuk setiap Shift Type yang Enable Auto Attendance-nya dicentang.
Membuat shift dari jadwal (process_auto_shift_creation)per jamUntuk setiap Shift Schedule Assignment yang Enabled-nya aktif dan Create Shifts After-nya hari ini atau lebih awal, menghasilkan Shift Assignment untuk 90 hari ke depan dan mencatat komentar pada penetapan tersebut.
Menonaktifkan penugasan kedaluwarsa (mark_expired_shift_assignments_as_inactive)harianMengubah Status menjadi Inactive pada Shift Assignment Active tersubmit yang End Date-nya lebih awal daripada kemarin.

Apa yang ditolak tiap form, dan apa yang terjadi saat disubmit​

Attendance menolak empat hal saat Anda menyimpan:

  • tanggal sebelum tanggal bergabung karyawan ("Attendance date X can not be less than employee Y's joining date: Z");
  • catatan kedua untuk karyawan dan tanggal yang sama, kecuali catatan yang ada berupa setengah hari yang belum terselesaikan ("Duplicate Attendance");
  • catatan yang Shift-nya beririsan jam dengan shift lain yang sudah ditandai pada hari itu ("Overlapping Shift Attendance");
  • karyawan yang statusnya Inactive ("Transactions cannot be created for an Inactive Employee X.").

Menyubmit sebuah Attendance tidak membuat dokumen lain apa pun dan tidak memposting entri buku besar — catatan ini semata-mata bahan bacaan Monthly Attendance Sheet, Shift Attendance dan Salary Slip. Pembatalan melepaskan kaitan check-in-nya. Tidak ada apa pun pada catatan ini yang menghalangi tanggal di masa depan; hanya dialog massal yang membatasi Anda sampai hari ini.

Employee Checkin menolak rekaman kedua dengan karyawan, timestamp dan Log Type yang sama, menolak perubahan waktu selagi ada Attendance terhubung, dan menentukan ulang shift-nya pada setiap penyimpanan. Time dilindungi: HR User, HR Manager dan System Manager boleh mengubahnya, sedangkan orang yang hanya punya role Employee bisa membacanya tetapi tidak bisa menulisnya, sehingga rekaman absen yang dibuat karyawan selalu dicap pada saat penyimpanan dan tidak bisa dimundurkan tanggalnya oleh mereka.

Attendance Request menolak To Date yang lebih awal daripada From Date, Half Day Date di luar rentang ("Half day date should be in between from date and to date"), permintaan tumpang tindih untuk karyawan dan shift yang sama, serta permintaan yang seluruh tanggalnya akan dilewati — dokumen menampilkan tabel berisi tanggal, alasan dan tindakan, lalu berhenti. Bila hanya ada satu Shift Assignment aktif yang mencakup periode itu, Shift akan terisi otomatis; bila lebih dari satu, muncul "There are multiple shifts assigned to the employee for the same period. Please mention the shift". Saat Anda menyubmitnya, GARP menelusuri tiap tanggal dan entah membuat lalu menyubmit Attendance baru, atau memperbarui status catatan yang sudah ada di tempat disertai komentar audit, sambil menautkan keduanya kembali lewat field Attendance Request. Membatalkan permintaan ini membatalkan setiap Attendance yang dibuatnya.

Shift Request menolak approver yang bukan Shift Request Approver milik karyawan maupun yang tidak tercantum pada Department-nya ("Only Approvers can Approve this Request."), menolak Default Shift karyawan itu sendiri, dan menolak permintaan tumpang tindih untuk shift yang jamnya beririsan. Dokumen ini hanya bisa disubmit dengan Status Approved atau Rejected. Menyubmit permintaan Approved akan membuat sekaligus menyubmit sebuah Shift Assignment dan mencantumkan namanya; membatalkan permintaan akan membatalkan penugasan itu. Penyimpanan membagikan dokumen ini kepada approver dengan hak Submit dan memunculkan notifikasi di dalam aplikasi; menyetujui atau menolak akan memberi tahu karyawan dengan cara yang sama. Dokumen ini sendiri tidak mengirim email.

Shift Assignment menolak tumpang tindih dengan penugasan Active tersubmit lain yang jam shift-nya beririsan ("Overlapping Shifts"), dan memeriksanya ulang saat Anda mengubahnya setelah submit, sehingga memperlebar tanggal pada penugasan yang sudah disubmit pun masih bisa gagal.

Siapa boleh melakukan apa​

DokumenCreateSubmitCancelAmend
AttendanceHR User, HR Manager, System Managersamasamatidak ada — tidak ada role yang punya hak amend
Employee CheckinHR User, HR Manager, System Manager, Employeetidak dapat disubmit——
Attendance RequestHR User, HR Manager, System Manager, EmployeeHR User, HR Manager, System Managersamasama
Shift AssignmentHR User, HR ManagerHR User, HR ManagerHR Manager sajaHR Manager saja
Shift RequestHR User, HR Manager, EmployeeHR User, HR ManagerHR Manager sajaHR Manager saja
Shift Type, Shift LocationHR User, HR Managertidak dapat disubmit——
Shift ScheduleHR User, HR ManagerHR ManagerHR ManagerHR Manager
Holiday ListHR Manager (HR User hanya punya hak select)tidak dapat disubmit——
Holiday List AssignmentHR Manager, System Managersamasama—
Employee Attendance ToolHR Manager saja———
Upload AttendanceHR User, HR Manager———
Shift Assignment ToolHR User saja———

Ada dua konsekuensi yang sering membuat orang terjebak: HR Manager tanpa HR User tidak bisa membuka Shift Assignment Tool, dan HR User tanpa HR Manager tidak bisa membatalkan Shift Assignment maupun membuka Employee Attendance Tool. Berikan kedua role itu kepada siapa pun yang mengelola roster.

Role Employee bisa membaca Attendance, Shift Assignment, Shift Type dan Shift Schedule tetapi tidak bisa menulisnya. Apa yang dilihat seorang karyawan dipersempit oleh Create User Permission pada data Employee mereka, yang aktif secara bawaan dan menambahkan User Permission pada Employee sekaligus Company untuk login mereka. Tidak ada hal lain yang mempersempit apa yang mereka lihat pada dokumen mana pun di halaman ini. Dari empat Role Profile bawaan, GTHR - KG hanya membawa role Employee, sehingga bertolak belakang dengan peruntukannya, profil itu tidak bisa membuat maupun menyubmit Shift Assignment.

Contoh kasus​

PT Maju Jaya menjalankan Shift Pagi dari 08:00 sampai 16:00, buffer dibiarkan 60 menit di kedua sisi, Determine Check-in and Check-out diisi Alternating entries as IN and OUT during the same shift, Working Hours Calculation diisi First Check-in and Last Check-out, ambang Half Day 4, ambang Absent 1, kedua grace period 15 menit dengan penandaan diaktifkan. Jendela rekaman absen yang memenuhi syarat karenanya adalah 07:00 sampai 17:00.

Sari Dewi merekam absen pukul 07:52 dan 16:34. Jam kerjanya adalah yang terakhir dikurangi yang pertama: 8 jam 42 menit, disimpan sebagai 8.7, yang melewati angka 4, jadi Present. In Time 07:52 tidak melewati 08:15, jadi tidak ada Late Entry; Out Time 16:34 tidak lebih awal dari 15:45, jadi tidak ada Early Exit.

Seandainya ia merekam absen pukul 08:00, 12:00, 13:00 dan 17:00, mode ini akan menghasilkan 9.0. Dengan Every Valid Check-in and Check-out, keempat rekaman yang sama berpasangan menjadi 08:00 sampai 12:00 dan 13:00 sampai 17:00 sehingga menghasilkan 8.0, karena jam istirahat berhenti dihitung. Tidak ada apa pun pada catatan Attendance yang memberi tahu mode mana yang menghasilkan angka itu, jadi putuskan sekali saja, per shift.

Budi Santoso merekam absen pukul 08:20 lalu lupa absen pulang. Dengan satu rekaman, In Time-nya 08:20, Out Time-nya kosong, dan jam kerjanya adalah 08:20 dikurangi 08:20, yaitu 0.0. Nol berada di bawah ambang Absent 1, jadi harinya ditandai Absent dengan Working Hours 0 — dan karena 08:20 lebih lambat daripada 08:15, Late Entry ikut tercentang pada catatan Absent itu juga. Perbaikannya adalah rekaman absen kedua atau sebuah Attendance Request.

Rina Halim bekerja pada cuti bersama yang tercatat sebagai hari libur setengah hari. Karena baris Holiday tersebut punya Is Half Day tercentang, kedua ambang batas dibagi dua untuk tanggal itu: Half Day menjadi 2 dan Absent menjadi 0.5. Ia merekam absen pukul 08:05 dan 11:30, yaitu 3.42 jam — pada hari biasa angka itu jatuh di bawah ambang 4 jam dan menghasilkan Half Day; di sini angka itu melewati 2 dan menghasilkan Present.

Berapa jumlahnya dalam sebulan. Sari punya 19 Present, 1 Half Day dan 1 Absent pada bulan Agustus. Monthly Attendance Sheet dalam Summarized View melaporkan Total Present 19.5, Total Leaves 0.5 dan Total Absent 1 — setengah hari dihitung sebagai setengah hari hadir sekaligus setengah hari cuti, pada kedua kolom. Hari Work From Home ditambahkan ke Total Present, tidak ditampilkan terpisah.

Apa yang dibaca penggajian. Bagian Hari Kehadiran pada Salary Slip diisi dari Attendance tersubmit untuk periode penggajian, dan nilai yang sama masuk ke formula gaji baik lewat nama field lengkapnya maupun singkatannya. Untuk Sari, nilainya adalah HM 20, HS 0, HI 0, HMK 1, dan HD sebesar jumlah hari yang Late Entry-nya tercentang — Hari Masuk menghitung Half Day sebagai satu hari penuh.

Dengan Gaji Pokok Rp 8.000.000 dan komponen Potongan bawaan, formula GP / 25 * (HS + HI + HMK), potongannya adalah 8.000.000 / 25 x 1 = Rp 320.000. Komponen Kehadiran bawaan, 50000 if (HS == 0 and HI == 0 and HMK == 0 and HD == 0) else 0, hanya membayar Rp 50.000 pada bulan tanpa hari sakit, tanpa izin, tanpa mangkir dan tanpa keterlambatan — satu kali telat saja membuatnya nol.

peringatan

HS dihitung dengan menguji apakah nama Leave Type mengandung kata Inggris "sick" dalam huruf kecil. Leave Type bernama Cuti Sakit tidak cocok, sehingga cuti sakit yang diambil di bawah leave type bernama Indonesia justru masuk ke HI. Beri nama leave type Anda agar mengandung "Sick", atau minta konsultan Anda mengubah formula komponennya.

Terkait​