Lewati ke konten utama

Cuti

Di bagian cuti inilah Anda menentukan jenis waktu istirahat apa saja yang diberikan perusahaan, membagikan jatah hari setahun kepada setiap karyawan, dan menyetujui atau menolak pengajuan yang masuk. Staf HR yang mengerjakan penyiapannya; setiap karyawan mengajukan cutinya sendiri dan dapat melihat sisa jatahnya. Semuanya berada di workspace Leaves (cuti) pada /app/leaves.

Begitu sebuah pengajuan disetujui, GARP menandai absensi untuk hari-hari itu dengan sendirinya. Hari-hari tersebut baru berpengaruh pada gaji bila leave type-nya disetel sebagai cuti tanpa gaji atau cuti yang dibayar sebagian.

Workspace Leaves.

Workspace Leaves.

Yang mungkin ingin Anda kerjakan​

Sebelum Anda mulai​

Siapkan hal-hal berikut sebelum pengajuan cuti pertama masuk.

  • Satu Holiday List untuk tiap pola kerja, dipasang pada Employee atau pada perusahaannya. Perhitungan hari, validasi cuti pengganti dan pelewatan hari libur saat menandai absensi semuanya membaca daftar ini.
  • Leave type, dengan Include holidays within leaves as leaves tidak dicentang kecuali Anda memang menghendakinya.
  • Satu Leave Period yang aktif untuk tahun berjalan, ditambah satu holiday list untuk hari libur opsional bila Anda memakai cuti jenis itu.
  • Satu Leave Policy yang sudah disubmit, satu penetapan untuk setiap karyawan, dan satu Leave Approver pada tiap Employee atau Department.
  • Leave Encashment Amount Per Day pada Salary Structure atau Salary Structure Assignment bila Anda mengizinkan pencairan cuti.
  • HR Settings (/app/hr-settings, tab Leaves): approver wajib atau tidak, pencegahan persetujuan atas pengajuan sendiri, Send Leave Notification beserta dua template-nya, Restrict Backdated Leave Application beserta role yang boleh menerobosnya, dan Auto Leave Encashment.

Menyiapkan jenis cuti Anda​

Leave type adalah jenis cutinya — Annual Leave, Sick Leave, Unpaid Leave. Setiap aturan yang mengatur sebuah cuti tersimpan di sana.

  1. Buka /app/leave-type lalu klik Add Leave Type.
  2. Beri nama, kemudian atur opsi yang Anda perlukan. Masing-masing dijelaskan di Opsi Leave Type yang mengubah perilaku sistem.
  3. Ulangi untuk setiap jenis cuti yang ditawarkan PT Maju Jaya — Annual Leave dengan Carry Forward, Sick Leave tanpa carry forward, Unpaid Leave dengan Is Leave Without Pay.

Memasang aplikasi HR akan membuatkan lima jenis cuti untuk Anda: Casual Leave (Carry Forward, Allow Encashment, Maximum Consecutive Leaves Allowed 3), Compensatory Off (Is Compensatory), Sick Leave, Privilege Leave dan Leave Without Pay (Is Leave Without Pay).

peringatan

Kelima jenis bawaan itu sudah mencentang Include holidays within leaves as leaves, sehingga pengajuan dari Jumat sampai Senin memakan empat hari saldo, bukan dua. Praktik di Indonesia menghitung hari kerja — hapus centangnya pada setiap jenis cuti yang Anda pakai. Casual Leave juga sudah menyalakan Allow Encashment tetapi tanpa mengisi Earning Component, sehingga pencairannya gagal saat disubmit dengan pesan Please set Earning Component for Leave type: Casual Leave.

Membuat periode cuti untuk tahun baru​

Leave period adalah tahun cuti Anda — biasanya 1 Januari sampai 31 Desember, satu untuk tiap perusahaan.

  1. Buka /app/leave-period.
  2. Isi From Date 01-01-2026 dan To Date 31-12-2026.
  3. Pilih Company-nya lalu centang Is Active.
  4. Isi Holiday List for Optional Leave bila Anda memakai cuti pada hari libur opsional. Tanpa itu, pengajuan semacam itu akan gagal.

To Date harus setelah From Date, dan dua periode milik satu perusahaan tidak boleh saling tumpang tindih.

peringatan

Tidak ada yang membuatkan periode cuti tahun berikutnya untuk Anda. Buat periode 2027 sebelum permintaan cuti pengganti pertama tahun 2027 diajukan, kalau tidak dokumennya menolak disubmit dengan judul No Leave Period Found. Leave Policy Assignment dan Leave Control Panel juga membutuhkan periode ini bila Assignment based on atau Dates Based On diisi Leave Period; Leave Allocation biasa tidak membutuhkannya.

Memberikan saldo cuti setahun kepada karyawan​

Sebuah leave policy menyatakan berapa hari yang diberikan tiap jenis cuti dalam setahun. Menetapkan kebijakan itu kepada seorang karyawan itulah yang benar-benar memberikan hari-harinya.

Menyusun dan menetapkan kebijakan cuti​

  1. Di /app/leave-policy, tambahkan satu baris per leave type beserta Annual Allocation-nya, isi Title kebijakannya, lalu submit. Baris yang melebihi batas maksimum per periode milik jenis cuti tersebut akan ditolak.
  2. Di /app/leave-policy-assignment, pilih karyawannya (Sari Dewi) dan kebijakannya. Hanya kebijakan yang sudah disubmit yang ditawarkan.
  3. Isi Assignment based on:
    • Leave Period mengisi Effective From dan Effective To dari periodenya.
    • Joining Date mengisinya dengan Date of Joining dan hari terakhir bulan yang jatuh dua belas bulan kemudian.
    • Bila dikosongkan, Anda mengetik sendiri kedua tanggalnya.
  4. Centang Add unused leaves from previous allocations bila saldo tahun lalu memang perlu dibawa. Jenis cuti tanpa Carry Forward akan dilewati, disertai peringatan yang menyebutkan satu per satu.
  5. Submit. Alokasi dibuat untuk setiap jenis cuti kecuali jenis leave without pay, dan Leaves Allocated ikut tercentang.

Penetapan yang tumpang tindih untuk satu karyawan akan ditolak. Mengirim ulang penetapan yang sudah pernah membuat alokasi memunculkan Leave already have been assigned for this Leave Policy Assignment.

Mengalokasikan untuk satu perusahaan sekaligus​

Buka Leave Control Panel, lalu:

  1. Saring karyawan berdasarkan company, branch, department, designation, grade atau employment type.
  2. Pilih Dates Based On — Leave Period, Joining Date atau Custom Range.
  3. Tentukan satu leave policy, atau satu leave type ditambah New Leaves Allocated (In Days).
  4. Klik Allocate Leave. Carry Forward tercentang secara bawaan.
catatan

Daftar itu hanya menampilkan karyawan yang belum memiliki alokasi tersubmit yang bertumpang tindih dengan tanggal dan jenis cuti yang dipilih, jadi karyawan yang tidak muncul biasanya sudah pernah dialokasikan. Kegagalan di-rollback per karyawan dan dilaporkan disertai tautan ke Error Log.

Berapa hari yang didapat karyawan yang masuk di tengah tahun​

Untuk jenis cuti yang bukan earned leave, alokasinya adalah angka tahunan dikali proporsi periode yang dijalani, dibulatkan ke hari penuh. Sari Dewi bergabung pada 15 Juli 2026, alokasi tahunan Annual Leave adalah 12, dan periodenya adalah tahun kalender 2026.

days from 15 Jul to 31 Dec inclusive = 170
days in the leave period = 365
12 x 170 / 365 = 5.589
rounded = 6 days

Ia mendapat 6 hari, bukan 12 dan bukan pula 5,5. Bergabung pada atau sebelum awal periode memberikan angka penuh, dan hasilnya selalu dibatasi pada alokasi tahunan.

Bagaimana earned leave dikreditkan​

Jenis earned leave langsung mengkreditkan seluruh periode yang sudah lewat sekaligus, lalu menjadwalkan sisanya. Budi Santoso, bekerja sejak 2025, pada Annual Leave yang disetel Monthly, Allocate on Day Last Day, Rounding 0.5, alokasi tahunan 12, ditetapkan pada 20 Juni 2026:

per-period accrual = 12 / 12 = 1.0 day
current period counted? = no (20 Jun is not the last day of June)
periods passed Jan-May = 5
credited immediately = 5.0 days
schedule rows created = 30 Jun, 31 Jul, 31 Aug, 30 Sep, 31 Oct, 30 Nov, 31 Dec (1.0 each)
total by 31 Dec 2026 = 12 days

Baris pertama bagi karyawan yang bergabung di tengah periode dihitung proporsional untuk bulan tersebut sebelum dibulatkan: karyawan yang bergabung 10 Maret memperoleh 22/31 hari untuk bulan Maret, yang oleh Rounding 0.5 diubah menjadi 0,5.

Mengajukan cuti dan menyetujuinya​

  1. Karyawan membuka /app/leave-application atau aplikasi mobile di /hrms, memilih jenis cuti dan tanggalnya, mencentang Half Day beserta Half Day Date bila perlu, lalu mengisi Reason.
  2. Leave Balance Before Application dan tabel dashboard — Total Allocated Leaves, Expired Leaves, Used Leaves, Leaves Pending Approval, Available Leaves — menunjukkan berapa yang tersedia.
  3. Leave Approver terisi otomatis dari Leave Approver pada record Employee, dan bila kosong diambil dari baris pertama tabel Leave Approver milik department. Leave Approver Mandatory In Leave Application di HR Settings menentukan wajib atau tidaknya, dan aktif secara bawaan.
  4. Approver mengubah Status menjadi Approved atau Rejected lalu submit. Status lain tidak bisa disubmit, dan Prevent self approval for leaves even if user has permissions di HR Settings mencegah karyawan menyetujui pengajuannya sendiri.
  5. Attendance (absensi) dituliskan per hari dengan status On Leave, atau Half Day pada tanggal setengah hari. Hari yang ada di holiday list dilewati, kecuali jenis cutinya memakai Include holidays within leaves as leaves.

Sebuah Leave Application yang sudah disubmit.

Sebuah Leave Application yang sudah disubmit.

Dua hal tentang dropdown-nya:

  • Dropdown Leave Type hanya memuat jenis cuti yang alokasinya dimiliki karyawan tersebut, ditambah semua jenis leave without pay. Jenis cuti yang tidak muncul berarti alokasinya belum ada.
  • Dropdown Leave Approver menambahkan isi tabel Leave Approver pada department karyawan itu dan seluruh department induknya.

Saat disimpan, dokumen dibagikan kepada approver pada level Submit bila tanpa itu ia tidak akan bisa men-submit-nya.

Restrict Backdated Leave Application di HR Settings memblokir semua From Date sebelum hari ini. Bila Anda mencentangnya tanpa sekaligus mengisi Role Allowed to Create Backdated Leave Application, tidak seorang pun bisa membuatnya sama sekali.

Bila form-nya menolak disimpan atau disubmit, bunyi pesannya yang persis ada di Apa yang ditolak form Leave Application, beserta pesannya. Apa yang dikerjakan GARP di balik layar saat disubmit dan saat dibatalkan ada di Apa yang terjadi saat pengajuan yang disetujui disubmit.

Melihat sisa cuti seseorang​

  • Karyawan melihat saldonya sendiri per jenis cuti di tab Leaves pada aplikasi di /hrms/dashboard/leaves, dan pada form Leave Application itu sendiri.
  • HR melihatnya di Employee Leave Balance (Opening Balance, New Leave(s) Allocated, Leave(s) Taken, Leave(s) Expired, Closing Balance, dengan From Date, To Date dan Company wajib diisi).
  • Employee Leave Balance Summary adalah potret pada satu tanggal, dan juga terbuka bagi role Leave Approver.
  • Keduanya berada di bawah Reports pada sidebar Leaves, bersama Employees working on a holiday.
  • Leave Ledger menampilkan entri mentah di balik saldonya. Laporan ini tidak ada di sidebar, jadi carilah berdasarkan namanya.

Bila sebuah saldo terlihat keliru, bacalah dulu Dari mana saldo cuti berasal sebelum Anda mengubah apa pun — angkanya dihitung, dan tanggal kedaluwarsa bisa membuat saldo yang bisa dipakai lebih kecil daripada yang tampak.

Melarang pengambilan cuti pada tanggal tertentu​

Leave Block List adalah kumpulan tanggal yang pengajuan cutinya tidak boleh disetujui. Isinya:

  • sebuah Company, dan Leave Type yang bersifat opsional — bila Anda menyebutkan satu jenis, larangannya hanya berlaku untuk jenis itu;
  • tabel wajib berisi Block Date beserta Reason. Tombol Add Day-wise Dates membangkitkan tanggal berulang dari tanggal awal, tanggal akhir, hari dalam minggu dan alasannya;
  • tabel Allow Users berisi orang-orang yang tetap boleh menyetujui.

Daftar ini berlaku untuk seluruh perusahaan bila Applies to Company dicentang, atau hanya untuk satu departemen lewat field Leave Block List pada Department tersebut. Mengajukan cuti pada tanggal yang diblokir memunculkan peringatan saat disimpan, dan ditolak saat disetujui kecuali approver-nya terdaftar di Allow Users.

Mencairkan saldo cuti yang tidak terpakai​

Pencairan membayarkan hari cuti yang tidak terpakai sebagai uang, alih-alih diambil sebagai cuti.

  1. Pada leave type, aktifkan Allow Encashment dan isi Earning Component-nya. Isi Leave Encashment Amount Per Day di Salary Structure atau di Salary Structure Assignment karyawan tersebut — tanpa itu, nilainya terhitung nol dan dokumennya tidak bisa disubmit.
  2. Di /app/leave-encashment, pilih karyawan, leave period dan leave type. Hanya jenis cuti yang bisa dicairkan dan periode yang aktif yang ditawarkan.
  3. Actual Encashable Days adalah saldo dikurangi Non-Encashable Leaves, dibatasi oleh Maximum Encashable Leaves, dan tidak menghitung hari yang sudah dibawa ke alokasi berikutnya. Isi Encashment Days dengan jumlah yang tidak melebihi angka tersebut; Encashment Amount adalah jumlah itu dikali tarif per hari. Submit.
  4. Sebuah Additional Salary dibuat dan disubmit terhadap earning component tadi, bertanggal Encashment Date, sehingga pembayarannya masuk ke salary slip berikutnya. Centang Pay Via Payment Entry bila Anda justru ingin membukukannya ke sebuah Payable Account; tombol Create > Payment kemudian muncul sampai statusnya menjadi Paid.

Alokasi Annual Leave 2026 milik Sari Dewi adalah 12 hari; ia mengambil 4 hari dan 2 hari dibawa ke 2027. Jenis cutinya memiliki Non-Encashable Leaves 4 dan Maximum Encashable Leaves 6, sedangkan Salary Structure Assignment-nya mencantumkan IDR 450.000 per hari.

Leave Balance = 12 allocated - 2 carried forward - 4 taken = 6
less Non-Encashable = 6 - 4 = 2
capped at Maximum = min(2, 6) = 2 -> Actual Encashable Days
Encashment Amount = 2 x IDR 450,000 = IDR 900,000

Submit juga menambahkan 2 ke Total Leaves Encashed pada alokasinya dan menuliskan entri ledger negatif. Pembatalan membalik semuanya, termasuk Additional Salary dan entri GL apa pun.

Anda akan melihat pesan You can only submit Leave Encashment for a valid encashment amount bila tarif per harinya belum diisi, serta Leave Type ... is not encashable atau No Leaves Allocated to Employee: ... for Leave Type: ... bila jenis cuti atau alokasinya keliru.

peringatan

Auto Leave Encashment di HR Settings dimaksudkan untuk membuat draf pencairan setiap malam bagi alokasi yang kedaluwarsa kemarin. Kenyataannya, field Leave Period pada Leave Allocation bersifat read-only dan tidak ada yang mengisinya, sementara Leave Encashment mensyaratkan Leave Period — jadi job malam itu tidak punya apa pun untuk disalin dan tidak dapat menghasilkan draf tersebut. Buat dokumen pencairan secara manual.

Mengubah kerja di hari libur menjadi cuti​

Jika Budi Santoso bekerja pada hari libur nasional, buatkan Compensatory Leave Request agar harinya dikembalikan kepadanya dalam bentuk cuti.

Setiap hari di antara Work From Date dan Work End Date harus merupakan hari libur pada holiday list miliknya, dan harus punya Attendance tersubmit berstatus Present, Work From Home atau Half Day.

Saat Anda men-submit permintaannya, hari-hari tersebut ditambahkan ke alokasi yang sudah ada untuk jenis cuti compensatory itu. Bila ia belum punya alokasi, dibuatkan alokasi baru yang berlaku sejak sehari setelah pekerjaannya berakhir sampai akhir periode cuti — jadi harus ada periode cuti aktif yang mencakup tanggal itu, kalau tidak submit-nya ditolak dengan judul No Leave Period Found.

Budi bekerja pada Sabtu 15 dan Minggu 16 Agustus 2026, keduanya hari libur, keduanya memiliki attendance Present yang sudah disubmit:

date difference = 2 days (less 0.5 if Half Day is ticked)
compensatory leave valid = 17 Aug 2026
new Leave Allocation = 17 Aug 2026 to 31 Dec 2026, New Leaves Allocated 2

Permintaan berikutnya akan menemukan alokasi tersebut dan menambahnya.

Permintaan ini ditolak bila:

  • ada hari dalam rentangnya yang bukan hari libur;
  • ada hari yang tidak punya attendance tersubmit — You are not present all day(s) between compensatory leave request days;
  • yang dikerjakan hanya setengah hari;
  • tanggalnya berada di masa depan — Future dates not allowed;
  • Leave Type dikosongkan. Form-nya tidak menandai field itu wajib, tetapi GARP tetap menolaknya.

Cuti pengganti dan upah lembur adalah dua jalur yang terpisah. Tidak ada field yang menghubungkan Compensatory Leave Request dengan Overtime Slip, sehingga apakah kerja di hari libur dibayar sebagai lembur atau dikonversi menjadi cuti sepenuhnya merupakan keputusan kebijakan Anda, bukan aturan sistem. Lihat Lembur.

peringatan

Dari empat role yang punya izin atas Compensatory Leave Request, HR User dan HR Manager dapat men-submit dokumennya, tetapi hanya HR Manager yang dapat membatalkannya. System Manager dan Employee dapat membuat serta menyimpan drafnya, tetapi tidak dapat men-submit. Tambahkan izin Cancel lewat Role Permissions Manager bila HR User memang perlu dapat membalik dokumen ini.

Memperbaiki atau menyesuaikan alokasi​

Sebuah Leave Allocation. Dari sinilah asal saldo yang diperiksa oleh Leave Application.

Sebuah Leave Allocation. Dari sinilah asal saldo yang diperiksa oleh Leave Application.

Pada alokasi tersubmit yang masih berada di dalam rentang tanggalnya, menu Actions menyediakan dua hal:

  • Expire Allocation mengakhiri alokasinya hari ini.
  • Adjust Allocation meminta Adjustment Type (Allocate atau Reduce), Leaves To Adjust, Posting Date dan Reason for Adjustment, lalu membuat dokumen Leave Adjustment.

Hanya satu penyesuaian per alokasi yang diizinkan. GARP menolak nilai nol, penyesuaian Allocate yang melanggar batas maksimum jenis cutinya, dan penyesuaian Reduce yang lebih besar daripada saldo saat ini. Saat Anda men-submit penyesuaiannya, sistem menuliskan satu entri ledger sepanjang From Date dan To Date milik alokasi itu sendiri. Leave Adjustment tidak ada di sidebar Leaves — akses lewat tombol tersebut, atau dari /app/leave-adjustment.

peringatan

Pesan penyesuaian ganda menyuruh Anda melakukan amend atas dokumen yang sudah ada, padahal tidak ada satu pun role bawaan yang punya izin Amend pada Leave Adjustment — HR User dan HR Manager hanya memperoleh create, write, submit, cancel dan delete. Berikan dulu izin Amend lewat Role Permissions Manager, atau batalkan dan hapus penyesuaian lama lalu buat yang baru.

Jalur lainnya adalah mengubah New Leaves Allocated pada alokasi yang sudah disubmit. Sistem menghitung ulang totalnya dan menuliskan entri ledger penambah sebesar selisihnya. Cara ini diblokir untuk jenis earned leave yang dibuat oleh sebuah policy assignment (Cannot update allocation for Earned Leaves after submission), dan bila total barunya akan jatuh di bawah jumlah cuti yang sudah disetujui.

Untuk earned leave, tabel Earned Leave Schedule di dalam alokasinya memuat seluruh rencana akrual — Allocation Date, Number of Leaves, Allocated Via (Scheduler, Leave Policy Assignment, Manually) dan Failure Reason bila ada — berwarna hijau untuk yang berhasil dialokasikan, merah untuk yang gagal. Retry Failed Allocations hanya muncul bila ada baris yang gagal dan Anda memiliki izin write.

Leave Allocation, Leave Application, Leave Encashment dan Leave Adjustment masing-masing memiliki tombol View Ledger setelah disubmit.

Praktik di Indonesia​

Direktori hrms/regional hanya berisi dua folder, india dan united_arab_emirates, dan satu-satunya override regional yang terdaftar adalah pembebasan HRA serta marginal relief untuk India. Tidak ada modul regional Indonesia, sehingga tidak ada satu pun hal di halaman ini yang sudah disetel mengikuti hukum Indonesia.

  • Cuti tahunan. Ketentuan minimum 12 hari setelah dua belas bulan masa kerja terus-menerus tidak dimodelkan. Buat sebuah leave type, isi Annual Allocation 12 di kebijakannya, dan tegakkan masa kualifikasinya lewat Allow Leave Application After (Working Days) atau dengan memulai penetapannya dari tanggal ulang tahun masa kerja. Tidak ada mekanisme yang memeriksa masa kerja dengan sendirinya.
  • Hari kerja versus hari kalender. Cuti menurut undang-undang dihitung dalam hari kerja, dan itu hanya berlaku di sini bila Include holidays within leaves as leaves nonaktif serta Holiday List memuat hari libur mingguan dan hari libur nasional.
  • Cuti besar, cuti melahirkan dan cuti keguguran. Tidak ada jenis cuti bawaan, tidak ada durasi bawaan. Bangun semuanya sebagai leave type biasa dengan alokasi Anda sendiri, dan biarkan penanda pembayarannya nonaktif agar payment days tidak terganggu.
  • Cuti bersama. Ajukan sebagai pengajuan cuti biasa terhadap cuti tahunan, atau letakkan tanggalnya pada Holiday List agar tidak ada yang dipotong saldonya.
  • BPJS Kesehatan, BPJS Ketenagakerjaan, PPh 21 dan THR. Tidak ada satu pun bagian modul cuti yang menyentuh keempatnya. Cuti sampai ke penggajian hanya sebagai payment days dan, untuk pencairan, sebagai satu baris Additional Salary atas komponen yang Anda tunjuk; apakah baris itu kena pajak atau menjadi dasar iuran bergantung pada konfigurasi komponen itu sendiri. Lihat Pajak dan tunjangan.
  • PKWT dan PKWTT. Jenis kontrak tersimpan pada record Employee sebagai Employment Type, dan tidak ada aturan cuti yang membacanya. Bila karyawan kontrak memperoleh hak yang berbeda, berikan mereka Leave Policy yang berbeda pula.
peringatan

Aturan-aturan ini bersifat konfigurasi, bukan bawaan. GARP ERP sama sekali tidak menyediakan hak cuti menurut peraturan perundang-undangan Indonesia — cuti tahunan minimum, istirahat panjang dan cuti melahirkan adalah leave type yang Anda definisikan sendiri, dengan alokasi sesuai kebijakan Anda sendiri.

Rincian, batasan dan kasus khusus​

Semua yang ada di bawah ini bersifat rujukan. Carilah sesuatu saat Anda membutuhkannya; Anda tidak perlu membacanya sampai habis.

Dokumen-dokumen penyusun modul cuti​

  • Leave Type (/app/leave-type) — jenis cutinya: Annual Leave, Sick Leave, Unpaid Leave. Semua aturan yang mengatur sebuah cuti tersimpan di sini.
  • Leave Period (/app/leave-period) — tahun cuti, biasanya 1 Januari sampai 31 Desember, per perusahaan. Centang Is Active pada periode yang sedang berjalan.
  • Leave Policy (/app/leave-policy) — daftar Leave Type beserta Annual Allocation yang Anda submit: Annual Leave 12, Sick Leave 12.
  • Leave Policy Assignment (/app/leave-policy-assignment) — menempelkan satu kebijakan ke satu karyawan untuk satu periode. Saat Anda men-submit-nya, GARP membuat alokasinya.
  • Leave Allocation (/app/leave-allocation) — satu karyawan, satu jenis cuti, satu rentang tanggal: New Leaves Allocated, Unused leaves yang dibawa masuk, dan Total Leaves Allocated.
  • Leave Application (/app/leave-application) — dokumen pengajuannya. Dokumen ini baru dapat disubmit setelah Status-nya Approved atau Rejected.
  • Leave Ledger Entry (/app/leave-ledger-entry) — buku besar tempat setiap dokumen cuti mencatat pergerakannya. Saldo dibaca dari sini, bukan disimpan.
  • Compensatory Leave Request (/app/compensatory-leave-request) — mengubah kerja di hari libur menjadi hari cuti.
  • Leave Encashment (/app/leave-encashment) — mencairkan saldo yang tidak terpakai lewat penggajian atau payment entry.
  • Leave Block List (/app/leave-block-list) — tanggal-tanggal yang pengajuan cutinya tidak boleh disetujui.
  • Leave Adjustment (/app/leave-adjustment) — koreksi atas sebuah alokasi, yang harus disubmit.
  • Leave Control Panel (/app/leave-control-panel) — alokasi massal. Berupa satu form pengaturan tunggal, bukan sebuah daftar dokumen.

Bagaimana semuanya terhubung​

Leave Type + Leave Period
-> Leave Policy (annual allocation per type)
-> Leave Policy Assignment (employee + period)
-> Leave Allocation -> Leave Ledger Entry (+ new, + carry forward)
-> Leave Application -> Leave Ledger Entry (- days) + Attendance (On Leave / Half Day)
-> Leave Encashment -> Leave Ledger Entry (- days) + Additional Salary or GL Entries
-> Leave Adjustment -> Leave Ledger Entry (+/- days)

Opsi Leave Type yang mengubah perilaku sistem​

Perilaku pembayaran, carry forward, pencairan dan earned leave berada di tab pertama; sedangkan batasannya ada di tab Limits.

FieldTipeBawaanPengaruhnya, dan arti bila dikosongkan
Is Leave Without PayChecknonaktifHari-hari tersebut dikurangkan dari payment days pada salary slip.
Is Partially Paid LeaveChecknonaktifMembayar sebagian dari hari itu. Keduanya saling menyembunyikan.
Fraction of Daily Salary per LeaveFloat, wajib bila memakai partial pay—0.50 agar setengah gaji harian tetap dibayar. Nilainya harus antara 0 dan 1.
Is CompensatoryChecknonaktifHanya jenis seperti ini yang muncul pada Compensatory Leave Request.
Leave for optional holidayChecknonaktifMembatasi pengajuan hanya pada Holiday List for Optional Leave milik periode tersebut.
Allow Negative BalanceChecknonaktifSaldo yang kurang hanya memunculkan peringatan alih-alih menggagalkan, dan pengajuan boleh melintasi dua alokasi.
Include holidays within leaves as leavesChecknonaktifHari libur ikut dihitung sebagai hari cuti. Bila kosong, hari libur dilewati dan Attendance pada hari itu dihapus.
Allow Over AllocationChecknonaktifMengubah kelebihan alokasi dari error menjadi sekadar peringatan.
Carry ForwardChecknonaktifSaldo bergulir ke alokasi berikutnya yang mencentang Add unused leaves from previous allocations.
Maximum Carry Forwarded LeavesFloatkosongMembatasi jumlah yang bergulir. Bila kosong, seluruhnya dibawa.
Expire Carry Forwarded Leaves (Days)IntkosongHari yang dibawa dari periode sebelumnya hangus setelah sekian hari berjalan. Bila kosong, hari itu berlaku sampai alokasinya berakhir.
Allow EncashmentChecknonaktifHanya jenis seperti ini yang muncul pada Leave Encashment.
Earning ComponentLink ke Salary ComponentkosongTempat pembayarannya dibukukan. Bila kosong, pencairan lewat penggajian terhalang.
Maximum Encashable Leaves, Non-Encashable LeavesIntkosongBatas atas hari yang boleh dicairkan, dan hari yang lebih dahulu dipotong dari saldo.
Is Earned LeaveChecknonaktifAlokasi terkumpul bertahap mengikuti jadwal, bukan diberikan penuh di muka.
Earned Leave FrequencyMonthly, Quarterly, Half-Yearly, YearlykosongMembagi alokasi tahunan dengan 12, 4, 2 atau 1.
Allocate on DayFirst Day, Last Day, Date of JoiningLast DayHari jatuhnya setiap akrual. Date of Joining hanya tersedia untuk frekuensi Monthly.
Rounding0.25, 0.5, 1.0kosongMembulatkan setiap akrual. Bila kosong, pecahan mentahnya dibiarkan apa adanya.
Maximum Leave Allocation Allowed per Leave PeriodFloatkosongMembatasi total satu periode, termasuk hari yang dibawa dari periode sebelumnya.
Maximum Consecutive Leaves AllowedIntkosongDihitung lintas pengajuan yang bersebelahan, bukan hanya pengajuan ini saja.
Allow Leave Application After (Working Days)IntkosongJumlah hari kerja sejak Date of Joining sebelum jenis cuti ini bisa dipakai.

GARP menolak menyimpan sebuah leave type yang:

  • sekaligus compensatory dan earned — Leave Type can either be compensatory or earned leave.
  • sekaligus tanpa gaji dan dibayar sebagian — Leave Type can either be without pay or partial pay
  • memuat pecahan di luar rentang 0 sampai 1;
  • diubah menjadi leave without pay padahal ada alokasi yang mencakup hari ini.
catatan

Maximum Consecutive Leaves Allowed menelusuri mundur dan maju melintasi pengajuan yang bersebelahan: tiga pengajuan terpisah masing-masing dua hari pada tanggal berurutan dihitung sebagai satu rangkaian enam hari, dan pesan errornya menyebutkan pengajuan-pengajuan lain itu di bawah judul Maximum Consecutive Leaves Exceeded.

Apa yang ditolak form Leave Application, beserta pesannya​

SituasiPesan
Semua hari dalam rentangnya adalah hari liburThe day(s) on which you are applying for leave are holidays. You need not apply for leave.
Saldo kurang, sementara saldo negatif tidak diizinkanInsufficient leave balance for Leave Type ..., berjudul Insufficient Balance
Tidak ada alokasi yang mencakup tanggalnya, atau tanggalnya melintasi dua alokasiApplication period cannot be outside leave allocation period / Application period cannot be across two allocation records
Bertumpang tindih dengan pengajuan berstatus Open atau ApprovedEmployee ... has already applied for ... between ... and ...
Attendance berstatus Present atau Work From Home sudah tersubmitAttendance for employee ... is already marked for the following dates: ...
Batas hari berturut-turut terlampaui, atau syarat masa kerja belum terpenuhiLeave of type ... cannot be longer than ... / ... applicable after ... working days
Cuti tanpa gaji di dalam periode yang gajinya sudah diprosesSalary already processed for period between ... and ..., Leave application period cannot be between this date range.
Karyawan menyetujui pengajuannya sendiriSelf-approval for leaves is not allowed
Disubmit dengan status Open atau CancelledOnly Leave Applications with status 'Approved' and 'Rejected' can be submitted
Menyetujui pada tanggal yang diblokir tanpa berada di daftar yang diizinkanYou are not authorized to approve leaves on Block Dates

Apa yang terjadi saat pengajuan yang disetujui disubmit​

Saat sebuah pengajuan yang sudah disetujui disubmit, GARP menuliskan Attendance untuk setiap tanggal non-hari libur dalam rentang tersebut — On Leave, atau Half Day dengan Status for Other Half Present pada tanggal setengah hari. Catatan Absent yang sudah ada dikonversi di tempat; catatan baru disisipkan dan langsung disubmit tanpa menjalankan validasi record cuti milik Attendance sendiri. Attendance pada tanggal hari libur dibatalkan dan dihapus bila jenis cutinya tidak menyertakan hari libur.

Setelah itu sistem menuliskan Leave Ledger Entry negatif sejumlah total hari cuti, membawa serta holiday list dan penanda leave without pay. Hari-hari itu terpecah menjadi dua entri bila bagian carry forward-nya hangus di tengah masa pengajuan, atau bila jenis cutinya mengizinkan saldo negatif dan tanggalnya melintasi dua alokasi yang berurutan. Alokasi yang tidak berurutan ditolak.

Sistem lalu mengirim email ke karyawan memakai Leave Status Notification Template bila Send Leave Notification dan Follow via Email sama-sama aktif, serta memunculkan notifikasi di dalam aplikasi. Menyimpan draf berstatus Open akan memberi tahu approver memakai Leave Approval Notification Template.

Pembatalan memaksa statusnya menjadi Cancelled, menghapus entri ledger-nya, membatalkan Attendance berstatus On Leave atau Half Day dalam rentang itu, dan memberi tahu karyawannya.

Dari mana saldo cuti berasal​

Saldo dihitung, bukan disimpan: total cuti yang dialokasikan, ditambah cuti yang sudah diambil (tercatat negatif di ledger), ditambah apa pun yang dihanguskan secara manual, semuanya dibaca dari Leave Ledger Entry untuk alokasi yang mencakup tanggal tersebut. Ada angka kedua, yaitu saldo yang benar-benar bisa dipakai, yang dibatasi oleh sisa hari sampai alokasinya atau masa berlaku carry forward-nya berakhir — jadi seseorang bisa saja memegang 10 hari tetapi hanya dapat memesan 3 hari kalau alokasinya berakhir 3 hari lagi.

Hari bawaan dari periode sebelumnya dan hari baru adalah entri ledger yang terpisah, dan dipakai dalam urutan itu bila ada masa kedaluwarsa. Annual Leave milik Rina Halim memakai Carry Forward, Maximum Carry Forwarded Leaves 6 dan Expire Carry Forwarded Leaves (Days) 90:

2026 allocation 12, taken 4 -> 8 unused at 31 Dec 2026
2027 allocation, carry forward on:
Unused leaves = min(8, 6) = 6
New Leaves Allocated = 12
Total Leaves Allocated = 18
ledger entries written on submit:
+6 valid 01 Jan 2027 - 31 Mar 2027 (90 days from the start)
+12 valid 01 Jan 2027 - 31 Dec 2027

Pada 1 April 2027, sisa dari 6 hari itu hangus. Seandainya jenis cuti tersebut juga memiliki Maximum Leave Allocation Allowed per Leave Period 15, totalnya akan dipangkas menjadi 15 dan Unused leaves diturunkan secara diam-diam menjadi 3. Men-submit alokasi carry forward juga langsung menghanguskan alokasi sebelumnya; bila jendela waktunya sudah tertutup, sebuah dialog Leaves Expired menawarkan tombol Expire Leaves.

Sebuah alokasi menolak disubmit bila:

  • To Date tidak berada setelah From Date, sehingga alokasi satu hari ditolak;
  • ada alokasi tersubmit lain untuk karyawan dan jenis cuti yang sama yang bertumpang tindih;
  • jenis cutinya adalah leave without pay;
  • totalnya melebihi jumlah hari dalam periode sementara Allow Over Allocation nonaktif, atau melebihi batas maksimum per periode milik jenis cuti itu;
  • nilainya nol untuk jenis cuti yang bukan earned maupun compensatory.

Bagaimana cuti memengaruhi gaji​

Jenis cuti yang bukan unpaid maupun partially paid tidak berpengaruh sama sekali pada gaji. Payment days hanya bergeser untuk jenis Is Leave Without Pay dan Is Partially Paid Leave, dan Calculate Payroll Working Days Based On di Payroll Settings (/app/payroll-settings) menentukan catatan mana yang menjadi dasarnya: Leave (bawaan) atau Attendance.

Komponen Basic milik Sari Dewi bernilai IDR 12.000.000 dengan Depends on Payment Days tercentang. Februari 2026 berisi 28 hari dan empat hari Minggu pada holiday list-nya, Include holidays in Total no. of Working Days nonaktif, dan ia mengambil tiga hari cuti tanpa gaji pada 16 sampai 18 Februari.

Total Working Days = 28 - 4 holidays = 24
Leave Without Pay = 3
Payment Days = 24 - 3 = 21
Basic = 12,000,000 x 21 / 24 = IDR 10,500,000
deduction = IDR 1,500,000

Praktisi Indonesia yang memprorata dengan pembagi 30 hari akan memotong 12.000.000 / 30 x 3 = IDR 1.200.000. GARP memotong IDR 1.500.000, karena pembaginya adalah hari kerja tanpa hari libur. Mencentang Include holidays in Total no. of Working Days memindahkan pembaginya menjadi 28 dan potongannya menjadi IDR 1.285.714,29. Tidak satu pun menghasilkan angka /30 tersebut; itu adalah formula salary component yang harus ditulis oleh seorang developer.

peringatan

Cuti yang dibayar sebagian dihitung ke arah yang berlawanan tergantung dasar penggajiannya. Di bawah Leave, Fraction of Daily Salary per Leave senilai 0.75 memakan 0,25 payment day per hari cuti, sehingga karyawan dibayar 75%. Di bawah Attendance, pecahan yang sama memakan 0,75 payment day, sehingga karyawan dibayar 25%. Hanya nilai 0.50 yang memberi hasil sama pada kedua dasar itu. Untuk empat hari cuti dalam bulan dengan 22 hari kerja atas komponen senilai IDR 8.000.000: IDR 7.636.364 di bawah Leave, IDR 6.909.091 di bawah Attendance.

Setengah hari bernilai Fraction of Daily Salary for Half Day, bawaannya 0.5, dan di bawah Attendance hari yang tidak ditandai dipotong penuh bila Consider Unmarked Attendance As diisi Absent. Lihat Penggajian.

Apa yang berjalan otomatis setiap malam​

Ada tiga job pada antrean long harian yang menyentuh cuti.

JobFungsinya
process_expired_allocationMenuliskan entri ledger is-expired untuk sisa alokasi yang To Date-nya sudah lewat. Tombol Expire Leaves menjalankan rutin yang sama dan membutuhkan izin Submit pada Leave Allocation.
allocate_earned_leavesMencari alokasi yang Earned Leave Schedule-nya memiliki baris bertanggal hari ini yang belum pernah dicoba, lalu menambah Total Leaves Allocated. Kegagalan tercatat pada Failure Reason baris itu dan dikirim lewat email.
generate_leave_encashmentHanya berjalan bila Auto Leave Encashment aktif, mencari alokasi yang bisa dicairkan dan To Date-nya kemarin. Karyawan yang tidak punya Salary Structure pada tanggal itu dilewati.

Alokasi earned leave yang gagal tidak mencoba ulang dengan sendirinya. Perbaiki dulu penyebabnya — biasanya sebuah batas maksimum pada leave type, atau alokasi tahunan pada kebijakannya — lalu gunakan Retry Failed Allocations.

Siapa boleh melakukan apa​

DokumenCreateSubmitCancelAmend
Leave TypeHR User, HR Manager———
Leave PeriodHR User, HR Manager, System Manager———
Leave PolicyHR User, HR Manager, System Managertiga role yang samatiga role yang samatiga role yang sama
Leave Policy AssignmentHR User, HR Manager, System Managertiga role yang samatiga role yang samatidak ada
Leave AllocationHR User, HR Managerkeduanyakeduanyakeduanya
Leave ApplicationEmployee, HR User, HR ManagerHR User, HR Manager, Leave Approvertiga role yang samaHR User, HR Manager
Leave AdjustmentHR User, HR Managerkeduanyakeduanyatidak ada
Leave EncashmentEmployee, HR User, HR Manager, System Managertiga role selain Employeetiga role yang samatiga role yang sama
Compensatory Leave RequestEmployee, HR User, HR Manager, System ManagerHR User, HR Managerhanya HR Managertidak ada
Leave Control PanelHR User, HR Managertidak berlakutidak berlakutidak berlaku

Karyawan tidak memiliki izin apa pun atas Leave Allocation — mereka tidak bisa membuka alokasi miliknya sendiri. Field Status pada Leave Application dilindungi di permission level 1: role Employee dapat membacanya tetapi tidak dapat menulisnya, sementara Leave Approver, HR User dan HR Manager bisa. Justru itulah yang menghentikan persetujuan atas pengajuan sendiri, bahkan sebelum Prevent self approval for leaves diperhitungkan. Role Leave Approver diberikan otomatis begitu seorang User dicantumkan sebagai Leave Approver pada Employee mana pun.

Tipe pengguna Employee Self Service memperoleh izin read, write, create dan delete pada Leave Application dan Compensatory Leave Request, izin read pada Leave Type dan Holiday List, serta user permission yang membatasinya hanya pada record Employee milik orang itu sendiri — tetapi tanpa submit, dan tanpa akses ke Leave Allocation maupun Leave Encashment. Lihat Layanan mandiri karyawan.

Terkait​