Lewati ke konten utama

Self-service karyawan

GARP HR menyediakan aplikasi tersendiri untuk semua orang yang bukan staf HR. Karyawan Anda memakainya di ponsel untuk melakukan check-in dan check-out, mengajukan cuti, melihat saldo cuti, mengklaim pengeluaran dan membaca slip gaji. Manajer memakai aplikasi yang sama ditambah satu tampilan, Team Requests (permintaan tim), dan menyetujui dokumen timnya dari sana.

Aplikasinya berada di /hrms pada alamat workspace Anda — untuk PT Maju Jaya, majujaya.garp.aiconec.com/hrms. Ini aplikasi web mobile yang bisa dipasang di ponsel. Semua yang ditulisnya adalah dokumen biasa yang juga dilihat HR di desk: tidak ada penyimpanan self-service tersendiri, dan setiap layarnya dibangun dari formulir yang sama dengan yang dipakai desk.

Jangan tertukar antara /hrms dan /hr/roster, perencana roster shift yang dibahas di Absensi dan shift. Keduanya dilayani oleh aplikasi HR, dan alamat itulah yang menentukan mana yang Anda dapatkan.

Yang mungkin ingin Anda kerjakan​

Memberi karyawan akses ke aplikasi​

  1. Buat sebuah User untuk orang tersebut — lihat Undang tim Anda. Pada record Employee yang benar-benar baru, Anda bisa menempuh jalan lain: centang Create User Automatically, yang membentuk User dari Preferred Email, Company Email atau Personal Email lalu menambahkan role Employee. Bila ketiganya kosong, ia menolak dengan "Company or Personal Email is mandatory when 'Create User Automatically' is enabled". Checkbox ini hanya muncul pada record yang belum disimpan dan belum punya User ID.
  2. Buka record Employee miliknya, isi User ID dengan user tadi, lalu simpan. Menyimpan akan menambahkan role Employee ke user itu bila belum ada.
  3. Pastikan Status pada Employee-nya Active.
  4. Kirimkan alamat /hrms kepadanya. Ia login memakai email dan password yang sama seperti untuk desk, atau lewat social login bila Anda menyediakannya.

Dua pesan bisa menghadang langkah 2:

  • User {0} does not exist — email itu belum punya record User.
  • User {0} is already assigned to Employee {1} — ada Employee Active lain yang sudah memakai login tersebut. Duplikat yang tidak aktif diperbolehkan, dan begitulah kasus rehire bekerja.

Kalau ada yang tidak bisa masuk. Bila penautannya belum dilakukan atau karyawannya tidak aktif, aplikasi berhenti pada dialog Login Failed bertuliskan "No active employee found associated with the email ID {0}. Try logging in with your employee email ID or contact your HR manager for access." lalu mengeluarkan orang tersebut. Pemeriksaannya ketat: aplikasi mencari Employee yang User ID-nya cocok dengan orang yang sedang login dan yang Status-nya Active. Siapa pun yang berstatus Suspended, Left atau Inactive akan ditolak.

peringatan

Mengubah Status pada Employee dari Active ke status lain juga menonaktifkan akun User yang tertaut, dan mengembalikannya ke Active akan mengaktifkannya lagi. Itu penguncian di seluruh workspace, bukan hanya di aplikasi self-service. Jangan gunakan Status sebagai penanda karyawan yang sedang cuti.

Apa yang dilihat karyawan di layar login​

Layarnya bertuliskan "Login to HRMS" dan menampilkan formulir email dan password, kecuali bila Disable User Pass Login dicentang di System Settings — dalam hal itu formulirnya diganti oleh social login apa pun yang Anda miliki.

  • Setiap Social Login Key yang Enable Social Login-nya dicentang serta punya client ID, base URL dan client secret akan muncul sebagai tombol "Login with ..." yang mengembalikan pengguna ke /hrms.
  • Bila password maupun social login sama-sama tidak tersedia, layarnya bertuliskan "No login methods are available. Please contact your administrator."
  • Password yang kedaluwarsa memunculkan dialog Reset Password yang menautkan keluar ke desk.
  • Login dua faktor memunculkan dialog OTP Verification di dalam aplikasi. Bila penyiapan OTP-nya belum lengkap, ia beralih ke membuka halaman login desk di tab baru.
catatan

Aplikasi ini tidak di-rebranding: layar loginnya bertuliskan "Login to HRMS", tab browsernya bertuliskan HRMS, dan ia terpasang dengan nama HRMS. Untuk memasangnya, buka /hrms di browser ponsel lalu terima prompt Install HRMS. Di iPhone, ketuk ikon share lalu Add to Home Screen — aplikasinya mengingatkan hal ini lewat banner biru, karena iOS tidak menyediakan tombol install.

Check-in dan check-out​

  1. Di Home, ketuk Check In. Tombolnya berganti-ganti dengan Check Out mengikuti satu log Anda yang paling akhir menurut waktu, dan baris di atasnya bertuliskan "Last check-in was at 8:47 am" — atau "8:47 am yesterday", atau "8:47 am on 3 Mar" untuk log yang lebih lama.
  2. Sebuah sheet menampilkan waktu saat ini, dibekukan pada saat Anda membukanya. Konfirmasikan.
  3. View List membuka Employee Checkin History, yang bisa disaring berdasarkan Log Type dan Shift. Mengetuk satu baris menampilkan ID, Log Type, Date, Time, Latitude, Longitude dan sebuah peta yang tertanam.

Tombol itu hanya muncul bila Allow Employee Checkin from Mobile App dicentang di HR Settings, tab Shift and Attendance, bagian Attendance Settings. Secara bawaan sudah aktif. Bila dimatikan, panelnya menampilkan tanggal hari ini saja dan tidak ada cara untuk melakukan punch dari ponsel.

Agar orang harus berada di kantor saat melakukannya. Centang Allow Geolocation Tracking di bagian yang sama. Sheet-nya kemudian meminta lokasi ke browser, menampilkan koordinat beserta peta Google yang tertanam, dan punch-nya membawa koordinat itu.

Tiga penolakan mengikuti dari situ:

  • Tanpa koordinat — browsernya menolak permintaan itu, atau perangkatnya belum mendapatkan titik lokasi — memunculkan "Latitude and longitude values are required for checking in."
  • Punch yang jatuh di dalam shift yang Anda punya Shift Assignment aktifnya dan Shift Assignment itu menyebut sebuah Shift Location akan memunculkan "You must be within {0} meters of your shift location to check in." bila jarak great-circle-nya melampaui Checkin Radius lokasi tersebut. Radius nol atau kurang mematikan pemeriksaan ini.
  • Dua punch dengan Log Type yang sama pada detik yang sama memunculkan "This employee already has a log with the same timestamp." beserta tautan ke log yang sudah ada.

Ada penolakan keempat yang gampang terjadi. Bila punch jatuh di dalam shift yang Determine Check-in and Check-out-nya disetel ke "Strictly based on Log Type in Employee Checkin", log tanpa tipe akan ditolak dengan "Log Type is required for check-ins falling in the shift: {0}." Aplikasi selalu mengirim IN atau OUT, jadi hal ini lebih sering menimpa integrasi ketimbang ponsel.

catatan

Pemeriksaan radius membaca Shift Location yang pertama di antara assignment aktif Anda untuk shift tersebut. Pemeriksaan itu tidak berbuat apa-apa sama sekali ketika punch jatuh di luar semua shift — punch di luar shift disimpan dengan Off-shift tercentang, tanpa shift, dan tanpa pemeriksaan jarak.

Mengajukan cuti​

  1. Ketuk Request Leave, atau buka tab Leaves lalu Request a Leave.
  2. Pilih Leave Type. Yang ditawarkan hanya jenis yang punya alokasi mencakup tanggal yang dipilih, ditambah setiap jenis yang Is Leave Without Pay-nya dicentang.
  3. Isi From Date. To Date terisi otomatis dengan tanggal yang sama; ubah bila cutinya berlangsung lebih lama.
  4. Centang Half Day bila memang berlaku. Half Day Date akan muncul, menjadi wajib, dan dibatasi pada rentang From–To; pada pengajuan satu hari, field itu mengisi dirinya sendiri.
  5. Total Leave Days dan Leave Balance Before Application dihitung sambil Anda mengetik dan bersifat read-only.
  6. Tulis Reason, pastikan Leave Approver-nya, lampirkan surat dokter, lalu simpan.

Karyawan hanya menyimpan draf, dan itulah sebabnya sebuah pengajuan bertahan di Open sampai ada yang menindaklanjutinya.

Approver mana yang ditawarkan. Leave Approver terisi bawaan dari approver pada record Employee Anda, lalu jatuh ke baris pertama tabel leave approver Department Anda. Dropdown-nya menawarkan setiap approver di departemen Anda dan departemen induknya. Field ini wajib bila Leave Approver Mandatory In Leave Application dicentang di HR Settings, dan bawaannya memang dicentang.

Apa yang disembunyikan formulirnya. Pada pengajuan baru, ia menyembunyikan Employee, Employee Name, Department, Company, Follow via Email, Posting Date dan Status, dan ia selalu menyembunyikan Series, Salary Slip, Letter Head serta bagian Other Details. Posting Date disetel ke hari ini di balik layar. Employee diisi dari siapa pun yang sedang login saat dokumen disimpan, sehingga pemohonnya selalu Anda sendiri.

Kenapa sebuah pengajuan cuti ditolak. Menyimpan akan menjalankan semua pemeriksaan yang juga dijalankan server di desk. Pesan yang benar-benar akan Anda temui di ponsel:

PesanPenyebab
"To Date cannot be before From Date"Muncul langsung di bawah From Date bahkan sebelum Anda menyimpan
"To date cannot be before from date"Kondisi yang sama, tetapi dari sisi server
"Insufficient leave balance for Leave Type {0}"Alokasinya tidak cukup, dan jenis cutinya bukan cuti tanpa gaji
"The day(s) on which you are applying for leave are holidays. You need not apply for leave."Semua hari yang diajukan adalah hari libur
"Application period cannot be outside leave allocation period"Tanggalnya jatuh di luar periode alokasi
"Application period cannot be across two allocation records"Rentangnya melintasi dua record alokasi
"Backdated Leave Application is restricted. Please set the ..."Restrict Backdated Leave Application aktif tanpa role yang disebut
"Only users with the {0} role can create backdated leave applications"Pengaturan yang sama, role-nya sudah disebut, tetapi Anda tidak memilikinya
"Salary already processed for period between {0} and {1}, Leave application period cannot be between this date range."Penggajian sudah menutup hari-hari tersebut
"Attendance for employee {0} is already marked for the following dates: ..."Sudah ada Attendance yang disubmit dengan status Present atau Work From Home

Mengklaim pengeluaran​

  1. Ketuk Claim an Expense. Formulirnya terbuka dengan tiga tab.
  2. Expenses memuat Expense Approver, sebuah bagian Currency, baris-baris pengeluaran dan tabel pajaknya. Ketuk ikon plus untuk membuka New Expense Item: Expense Date (hari ini), Expense Claim Type, Description, Amount, Sanctioned Amount, Cost Center dan Project. Tombol Add Expense tetap nonaktif sampai Expense Claim Type dan Amount terisi. Mengetik Amount akan menyalinnya ke Sanctioned Amount; memilih sebuah tipe akan menyalin deskripsi tipe itu ke Description bila Anda membiarkannya kosong.
  3. Advances menampilkan Employee Advance Anda yang masih terutang beserta jumlah yang sudah dialokasikan aplikasi terhadapnya.
  4. Totals memuat total-total yang read-only, selisih kurs, Posting Date, Bank / Cash Account, Payable Account, Project dan Cost Center.
  5. Lampirkan foto struknya lalu simpan.

Dari mana mata uang dan akunnya berasal. Currency diambil dari Salary Currency pada record Employee Anda, dan Exchange Rate dari mata uang itu ke mata uang perusahaan. Cost Center dan Payable Account terisi bawaan dari Cost Center dan Default Expense Claim Payable Account milik Company. Mengubah cost center pada klaimnya akan menuliskannya ulang ke setiap baris pengeluaran.

Bagaimana uang muka terpakai. Uang muka mengalokasikan dirinya sendiri. Aplikasi mengambil jumlah sanctioned ditambah pajak, lalu menelusuri uang muka Anda yang belum diklaim dari yang tertua, mengisi tiap baris sampai batas jumlah yang belum diklaim hingga angkanya tertutup, dan mencentang baris yang dipakainya. Hanya baris yang tercentang yang dikirim saat Anda menyimpan. Grand Total adalah sanctioned + taxes − advances, dan jumlah pada sebuah baris pajak adalah rate ÷ 100 × total sanctioned amount, ditambahkan di atasnya.

Dua penolakan datang dari server:

  • "Sanctioned Amount cannot be greater than Claim Amount in Row {0}."
  • "Total advance amount cannot be greater than total sanctioned amount"

Melampirkan struknya. Pemilih lampirannya menerima berkas apa pun, tetapi unggahannya tidak: apa pun di luar JPG, PNG, PDF, TXT dan dokumen Microsoft dikembalikan sebagai pesan bertuliskan "File upload failed for {0}. You can only upload JPG, PNG, PDF, TXT or Microsoft documents." Berkas yang diunggah bersifat private. Pada dokumen baru, berkas yang Anda pilih ditahan di browser dan baru diunggah setelah dokumennya dibuat.

catatan

Status, Delivery Trip dan Vehicle Log berada setelah Cost Center dalam tata letak formulirnya sehingga jatuh di luar ketiga tab — aplikasi tidak pernah menampilkannya. Bila Anda perlu melihat status Paid atau Unpaid sebuah klaim, lihat daftarnya, yang menampilkannya sebagai badge, atau buka klaim itu di desk.

Mengajukan uang muka​

Ketuk Request an Advance. Formulirnya meminta Posting Date (hari ini), Purpose, Advance Amount, Currency, Advance Account, Mode of Payment dan Repay Unclaimed Amount from Salary.

Currency wajib diisi dan tidak ada yang mengisikannya untuk Anda. Hanya Paid Amount yang membawa mata uang pada labelnya di sini, dan field itu read-only serta tersembunyi sampai uang mukanya benar-benar dibayarkan — label "(undefined)" yang mungkin pernah Anda lihat berasal dari tab Totals pada expense claim, tempat kelima totalnya sama-sama diberi akhiran mata uang pada labelnya.

Submit juga memerlukan advance account. Bila dokumennya tidak punya, server mengambil Default Employee Advance Account milik Company saat mata uang klaimnya sama dengan mata uang perusahaan. Selain itu, Anda mendapat salah satu dari tiga penolakan berikut:

  • "Advance Account is mandatory. Please set the Default Employee Advance Account in the Company {0} and submit this document."
  • "Advance Account {0} currency should be same as Salary Currency of Employee {1}. ..." — mata uang akunnya tidak cocok.
  • "Employee advance account {0} should be of type Receivable." — jenis akunnya salah.

Tidak ada field approver pada Employee Advance, sehingga tidak ada yang dibagikan dan tidak ada notifikasi yang dikirim. Seseorang dengan role Expense Approver harus mencarinya sendiri lalu men-submit-nya.

Mengajukan absensi atau shift​

Attendance Request adalah cara sebuah hari ditandai ketika punch-nya hilang atau keliru. Formulirnya meminta From Date, To Date, Half Day beserta Half Day Date, Reason (Work From Home atau On Duty, wajib), Explanation, Shift dan Include Holidays. Server menolak permintaan yang tumpang tindih, menolak tanggal setengah hari di luar rentangnya dengan "Half day date should be in between from date and to date", dan memilih shift Anda secara otomatis bila Anda hanya punya satu assignment aktif. Bila ada dua, ia melempar "There are multiple shifts assigned to the employee for the same period. Please mention the shift".

Shift Request meminta Shift Type, From Date, To Date dan Approver. Daftar approver-nya berasal dari field Shift Request Approver Anda, lalu tabel shift request approver pada Department Anda, lalu approver pada departemen induknya; entri pertama sudah terpilih di awal. Bila semuanya kosong, field itu kosong dan tetap wajib, dan penyimpanannya gagal dengan "Approver field is mandatory".

Kedua formulir itu tidak mengizinkan karyawan biasa men-submit. Attendance Request tidak punya field approver sama sekali, sehingga tidak ada share yang dibuat dan tidak ada notifikasi yang dikirim — HR harus mencarinya sendiri.

Menyetujui permintaan tim Anda​

  1. Di Home, alihkan panelnya ke Team Requests, atau buka salah satu daftar lalu gunakan tab Team Leaves, Team Claims, Team Requests atau Team Advances di sana.
  2. Ketuk sebuah permintaan. Sheet-nya menampilkan ringkasan field dan lampirannya, dan ikon tautan-keluar membuka formulir lengkapnya.
  3. Untuk sebuah Leave Application, ketuk Approve atau Reject. Submit menggantikan keduanya begitu statusnya menjadi Approved atau Rejected.
peringatan

Approve dan Reject di sheet permintaan hanya pernah muncul untuk Leave Application. Untuk Expense Claim, Shift Request dan Attendance Request, aplikasi menanyakan hak "approval" ke server yang sebenarnya tidak ada, sehingga tombolnya tidak pernah muncul. Setujui dokumen-dokumen itu dengan mengetuk ikon tautan-keluar di header sheet, menetapkan Approval Status (Expense Claim) atau Status (Shift Request) pada formulir lengkapnya, menyimpan, lalu mengetuk Submit. Attendance Request tidak punya status untuk ditetapkan — dokumen itu langsung ke Submit.

Perlu dicatat juga bahwa tab Team pada tampilan daftar bukanlah antrean persetujuan. Berbeda dari panel di Home, tab-tab itu tidak menyaring apa pun selain "karyawannya bukan saya", sehingga menampilkan setiap dokumen jenis tersebut yang tidak dibatalkan dan boleh Anda baca, baik yang masih draf maupun yang sudah disubmit.

Mencegah orang menyetujui dokumennya sendiri. Dua checkbox di HR Settings mengurus hal ini. Keduanya nonaktif secara bawaan, keduanya berada di tabnya masing-masing, dan keduanya dilewati sepenuhnya bila ada Workflow pada jenis dokumen tersebut:

  • Prevent self approval for leaves even if user has permissions (tab Leaves). GARP menolak menyimpannya: menetapkan cuti Anda sendiri menjadi Approved langsung gagal dengan "Self-approval for leaves is not allowed". Inilah satu-satunya pengaturan yang juga dibaca aplikasi, sehingga aplikasi menyembunyikan tombol Approve dan Reject untuk dokumen Anda sendiri alih-alih membiarkan Anda menekannya.
  • Prevent self approval for expense claims even if user has permissions (tab Expenses). Yang ini hanya diperiksa pada saat Anda menekan Submit, dan tidak pernah dikirim ke aplikasi — jadi Anda bisa menetapkan Approval Status menjadi Approved lalu menyimpan, dan baru menemukan "Self-approval for Expense Claims is not allowed" ketika menekan submit.
peringatan

Attendance Request tidak punya field approver, sehingga tidak ada dokumen yang dibagikan. Draf attendance request milik orang lain hanya terlihat oleh pihak yang memang sudah berhak membacanya: HR User, HR Manager, System Manager, atau sebuah user permission yang memberikan akses itu.

Bila Approve dan Reject memunculkan pesan "Approval failed!" untuk seorang manajer, penyebabnya hampir selalu pembatasan akses yang dijelaskan di Siapa boleh melakukan apa.

Menyetujui lewat Workflow​

Definisikan sebuah Workflow pada Leave Application, Expense Claim, Shift Request atau Attendance Request, dan aplikasi berubah perilaku tanpa konfigurasi tambahan apa pun:

  • Badge status pada daftar dan formulir beralih ke workflow state, kecuali Don't Override Status dicentang pada workflow-nya.
  • Tombol Approve/Reject/Submit/Cancel digantikan oleh transisi yang tersedia bagi role Anda. Di sheet permintaan, dua transisi atau kurang muncul sebagai tombol dan tiga atau lebih dilipat ke dalam tombol Actions; di formulir lengkap selalu berupa tombol Actions. Transisi yang nama aksinya mengandung "approve" berwarna hijau, sedangkan "reject" atau "cancel" berwarna merah.
  • Transisi yang Allow Self Approval-nya tidak dicentang akan dibuang ketika dokumennya milik Anda sendiri.
  • Panel Team Requests berhenti menyaring berdasarkan approver dan status, dan sebagai gantinya menampilkan draf yang workflow state-nya cocok dengan transisi yang boleh dilakukan role Anda.
  • Field menjadi read-only ketika role Allow Edit pada state saat ini bukan salah satu role Anda.

Workflow dibangun di desk pada /app/workflow. Tidak ada satu pun bagiannya yang bisa dikonfigurasi dari aplikasi.

Menyiapkan aplikasi untuk pertama kali​

  1. Satu User per karyawan, dengan User ID terisi pada record Employee berstatus Active, dan Create User Permission yang diputuskan secara sadar untuk para approver.
  2. Leave Approver dan Expense Approver pada setiap Employee, atau tabel approver pada Department. Tambahkan juga Shift Request Approver bila Anda ingin shift request sampai ke seseorang.
  3. Role Expense Approver pada siapa pun yang menangani Employee Advance, karena HR User dan HR Manager tidak bisa melihatnya.
  4. Sebuah Holiday List yang ditetapkan lewat Holiday List Assignment, agar tab Leaves dan kalendernya punya isi.
  5. Di HR Settings, tab Shift and Attendance: Allow Employee Checkin from Mobile App, ditambah Allow Geolocation Tracking dan sebuah Shift Location dengan Checkin Radius pada shift assignment-nya bila Anda ingin menegakkan batas jaraknya.
  6. Sebuah Payroll Period, bila karyawan memang perlu melihat slip gaji.
  7. Alokasi cuti — kalau tidak, panel Leave Balance akan bertuliskan "You have no leaves allocated".
  8. Salary Currency disetel ke IDR pada setiap record Employee.
  9. push_relay_server_url di konfigurasi site dan Push Notification Settings yang aktif, bila Anda menginginkan push selain lonceng di dalam aplikasi.

Modul mana saja yang tersedia bergantung pada paket langganan — lihat Paket dan batasan.

Contoh kasus​

Sari Dewi melakukan punch dari seberang Sudirman​

PT Maju Jaya punya sebuah Shift Location untuk kantor Jakarta dengan Checkin Radius 100 meter, yang disebut pada Shift Assignment aktif Sari Dewi untuk shift Office Day. Ia melakukan check-in dari sebuah kafe berjarak 260 meter.

Dokumennya menghitung jarak great-circle antara shift location dan koordinatnya, membandingkannya dengan 100, lalu menolak: "You must be within 100 meters of your shift location to check in." Tidak ada yang tersimpan.

Punch yang sama pada pukul 06:15, sebelum jendela check-in shift itu terbuka, tidak cocok dengan shift mana pun. Log-nya tersimpan dengan Off-shift tercentang dan tanpa Shift, pencarian lokasinya tidak menemukan assignment untuk shift yang kosong, dan radiusnya tidak pernah diperiksa — ia diloloskan dari mana saja. Perketat Begin check-in before shift start time (in minutes) pada Shift Type bila hal itu penting bagi Anda.

Ringkasan pengeluaran Budi Santoso tidak berjumlah pas​

Budi punya tiga klaim pada kuartal ini, semuanya dalam IDR:

  • Klaim A, sudah disubmit dan Approved: diklaim IDR 1,500,000, disetujui IDR 1,200,000 setelah manajernya memangkas satu makan siang klien.
  • Klaim B, masih draf: diklaim IDR 400,000.
  • Klaim C, Rejected: diklaim IDR 250,000.

Expense Claim Summary di ponselnya menampilkan:

Total Claimed Amount IDR 2,150,000 = 400,000 + 1,500,000 + 250,000
Pending IDR 400,000 = draft claims, at claimed value
Approved IDR 1,200,000 = approved claims, at sanctioned value
Rejected IDR 550,000 = 250,000 + (1,500,000 - 1,200,000)

Praktisi Indonesia yang membaca "Rejected" akan mengharapkan IDR 250,000 — nilai satu klaim yang memang ditolak. Produk ini menghasilkan IDR 550,000, karena kotak itu dibangun agar ketiga angkanya kembali berjumlah sama dengan Total Claimed Amount, sehingga ia menyerap IDR 300,000 yang dipangkas dari Klaim A. Bila Anda memerlukan angka rejected yang polos, jalankan daftar klaim di desk lalu totalkan Total Claimed Amount dengan filter Approval Status Rejected.

Rina Halim menyelesaikan kunjungan lapangan dengan uang muka​

Rina memegang sebuah Employee Advance yang sudah disubmit dengan Paid Amount IDR 2,000,000 dan belum ada yang diklaim. Ia mengklaim dua struk: transportasi IDR 750,000 dan material IDR 500,000, keduanya disetujui penuh, tanpa pajak.

Aplikasi menghitung:

Total Claimed Amount IDR 1,250,000
Total Sanctioned Amount IDR 1,250,000
Amount to allocate 1,250,000 + 0 taxes = IDR 1,250,000
Advance row unclaimed 2,000,000 >= 1,250,000
-> Allocated Amount 1,250,000, row ticked
Total Advance Amount IDR 1,250,000
Grand Total 1,250,000 + 0 - 1,250,000 = IDR 0

Approver-nya menetapkan Approval Status menjadi Approved lalu men-submit. Karena grand total-nya nol dan jumlah sanctioned-nya positif, Status klaim itu langsung menjadi Paid — tidak ada baris utang, tidak ada penggantian, tidak ada yang perlu dibayar bagian keuangan. Claimed Amount pada uang mukanya menjadi 1,250,000, menyisakan IDR 750,000 uang perusahaan yang masih ada di tangan Rina, yang ia selesaikan lewat pengembalian atau lewat Repay Unclaimed Amount from Salary. Lihat Klaim pengeluaran.

Praktik di Indonesia​

Tidak ada modul regional Indonesia di aplikasi HR. Modul regional yang disertakan hanya untuk India dan Uni Emirat Arab, dan menyetel Country sebuah Company ke Indonesia diam-diam melewati langkah penyiapan regionalnya — tanpa custom field regional dan tanpa tax slab.

Komponen gaji tetap dibuat: Basic, Arrear, Leave Encashment dan Income Tax yang standar, ditambah komponen Indonesia yang dipasang build ini secara otomatis — Gaji Pokok, Masa Kerja, Kehadiran, Potongan, BPJS TK dan Upah Lembur — beserta Overtime Type Lembur GARP dan field Overtime Request Approver pada Employee dan Department. Selebihnya adalah konfigurasi yang Anda kerjakan sendiri, bukan kepatuhan yang Anda terima jadi.

  • PPh 21 dan BPJS. Tab Income Tax Breakup pada slip gaji menampilkan field pajak penghasilan generik yang diisi oleh Income Tax Slab dan komponen gaji apa pun yang dibangun konsultan Anda. Tidak ada bagian dari produk ini yang menghitung PPh 21 atau BPJS Kesehatan, dan tidak ada tax slab PTKP/TER. Satu-satunya potongan yang tampak seperti kewajiban hukum dan memang ikut terpasang adalah BPJS TK, dipasang otomatis dengan rumus datar (2 * (GP + TMK)) / 100 — sebuah placeholder, bukan pembagian JHT/JP/JKK/JKM. Yang dilihat karyawan di bawah Earnings and Deductions adalah komponen bawaan itu ditambah apa pun yang Anda buat sendiri. Lihat Pajak dan tunjangan.
  • Lembur. Lembur diajukan lewat sebuah Overtime Request, dan role Employee memang bisa membuatnya — tetapi tidak ada layar Overtime di mana pun dalam /hrms. Karyawan harus memakai desk, atau Anda mengalihkan permintaannya lewat kanal lain lalu meminta supervisor yang memasukkannya. Lihat Lembur.
  • THR. Tidak ada di aplikasi. Bayarkan sebagai Additional Salary atau sebagai sebuah komponen, dan ia akan muncul di slip gaji seperti penghasilan lainnya.
  • PKWT dan PKWTT. Jenis kontrak berada di Employment Type dan Contract End Date pada record Employee. Employment Type tampil di layar Profile di bawah Company Information; tanggal berakhirnya kontrak tidak.
  • Cuti menurut undang-undang. Cuti tahunan, cuti melahirkan dan cuti besar adalah Leave Type yang Anda buat sendiri. Aplikasi menawarkan apa pun yang punya alokasi, dengan nama apa pun yang Anda berikan, jadi berilah nama dalam bahasa Indonesia bila memang itu yang diharapkan karyawan Anda lihat.
  • Mata uang dan format angka. Setel Salary Currency ke IDR pada setiap record Employee — dari situlah Currency sebuah expense claim mengambil nilainya, dan bila kosong label mata uangnya akan bertuliskan "(undefined)". Format angkanya dikerjakan oleh browser ponsel, tetapi aplikasi tidak pernah memuat record System Settings yang seharusnya menjadi sumber formatnya, sehingga pengelompokan angkanya mengikuti pengaturan bahasa ponsel itu sendiri. Setel bahasa perangkat ke Indonesia bila Anda menginginkan Rp 12.500.000 alih-alih Rp 12,500,000.
  • Field khusus India. Keempat field India pada grup Salary Information di layar Profile tidak bisa dihilangkan dari aplikasi; semuanya sudah tertanam mati di layar tersebut. Field-field itu akan selalu tampil sebagai tanda hubung berlabel kosong di workspace Indonesia.

Apa yang ditampilkan setiap layar​

Semua yang ada mulai dari sini ke bawah adalah referensi. Anda tidak memerlukannya untuk memakai aplikasi — bacalah ketika sebuah layar menampilkan sesuatu yang tidak Anda duga.

Lima tab berjajar di bagian bawah aplikasi, ditambah header berisi judul halaman, lonceng notifikasi dan avatar. Loncengnya bertitik merah setiap kali ada notifikasi yang belum Anda baca; avatarnya membuka Profile.

Home​

Sapaan bertuliskan "Hey, {first name}", panel check-in, enam Quick Links — Request Attendance, Request a Shift, Request Leave, Claim an Expense, Request an Advance, View Salary Slips — serta panel My Requests / Team Requests.

Panel itu menggabungkan Leave Application, Expense Claim, Shift Request dan Attendance Request menjadi satu daftar, mengurutkannya berdasarkan tanggal pembuatan dari yang terbaru, dan menyimpan sepuluh yang terbaru. Keempat sumber itu masing-masing diambil dengan batas sepuluh dokumen sendiri, sehingga satu bulan yang padat expense claim bisa mendorong leave application Anda keluar dari panel sepenuhnya; buka tab masing-masing untuk melihat sisanya.

  • My Requests menyaring berdasarkan karyawan Anda dan hanya mengecualikan dokumen yang dibatalkan.
  • Team Requests menyaring draf milik orang lain, lalu mempersempitnya lagi ke: Leave Application berstatus Open yang menyebut Anda sebagai Leave Approver; Expense Claim yang Status-nya Draft dan menyebut Anda sebagai Expense Approver — itu field Status yang read-only, bukan Approval Status, sehingga cocok dengan setiap klaim yang belum disubmit; serta Shift Request berstatus Draft yang menyebut Anda sebagai Approver.
  • Attendance Request tidak dipersempit oleh approver sama sekali. Setiap draf attendance request yang boleh Anda baca akan muncul di sana.

Attendance​

Kalender bulanan yang mewarnai setiap hari, tombol untuk mengajukan absensi atau shift, lima permintaan terakhir dari masing-masing jenis, serta shift mendatang.

Kalendernya membaca record Attendance yang sudah disubmit lebih dulu, lalu jatuh kembali ke Holiday List karyawan untuk hari-hari yang tidak punya absensi. Warnanya: Present dan Work From Home hijau, Half Day kuning, Absent merah, On Leave biru, Holiday abu-abu. Empat penghitung di bawahnya adalah Present, Half Day, Absent dan On Leave — Work From Home dilebur ke dalam hitungan Present, dan hari libur tidak dihitung sama sekali. Absensi berstatus draf tidak terlihat di sini; hanya record absensi yang sudah disubmit yang dibaca.

Upcoming Shifts menampilkan Shift Assignment yang sudah disubmit dengan Status Active, hanya yang tidak punya End Date atau yang tanggal berakhirnya setelah hari ini, maksimal lima baris. Assignment yang sedang berjalan saat ini dihitung sebagai mendatang.

Leaves​

Berjudul Leaves & Holidays. Satu dial Leave Balance untuk tiap jenis cuti yang punya alokasi mencakup hari ini, Request a Leave, sepuluh pengajuan terakhir Anda, dan Upcoming Holidays.

Setiap dial menampilkan balance/allocated dan terisi sebesar balance ÷ allocated × 100. Saldonya adalah sisa cuti dengan memperhitungkan seluruh cuti yang diambil sepanjang periode alokasi, bukan hanya sampai hari ini. Jenis cuti tanpa alokasi tidak pernah muncul, dan itulah sebabnya panel ini bertuliskan "You have no leaves allocated" di workspace yang masih baru.

Upcoming Holidays menampilkan lima hari libur berikutnya dari Holiday List karyawan yang Weekly Off-nya tidak dicentang, sehingga hari Minggu tidak menyesaki daftarnya. View All membuka daftar lengkapnya termasuk tanggal yang sudah lewat, dengan warna redup.

Expenses​

Berjudul Expense Claims. Sebuah Expense Claim Summary, Claim an Expense, sepuluh klaim terakhir Anda, dan Employee Advance Balance.

Ringkasannya menghitung setiap klaim milik Anda yang tidak dibatalkan, dalam mata uang bawaan perusahaan:

KotakYang dijumlahkannya
Total Claimed AmountPending + jumlah yang diklaim pada klaim yang disetujui + jumlah yang diklaim pada klaim yang ditolak
PendingTotal Claimed Amount dari klaim yang Approval Status-nya Draft
ApprovedTotal Sanctioned Amount dari klaim yang Approval Status-nya Approved
RejectedJumlah yang diklaim pada klaim yang ditolak ditambah selisih yang dipangkas dari klaim yang disetujui

Baris terakhir itulah yang kerap mengejutkan orang. Lihat Ringkasan pengeluaran Budi Santoso tidak berjumlah pas.

Employee Advance Balance menampilkan uang muka yang sudah disubmit dan punya jumlah terbayar dengan status Paid atau Unpaid, terbaru dulu, masing-masing menampilkan paid − (claimed + returned). Uang muka yang sudah habis diklaim atau dikembalikan hilang dari daftar.

Salary​

Berjudul Salary Slips. Sebuah angka Year To Date, pemilih Payroll Period, dan slip periode tersebut yang sudah disubmit.

Pemilihnya menampilkan setiap Payroll Period milik perusahaan karyawan itu, terbaru dulu, berlabel MMM YYYY - MMM YYYY, dan memilih yang pertama secara otomatis. Daftarnya hanya menampilkan slip milik Anda sendiri, hanya yang sudah disubmit, dan hanya yang Start Date-nya jatuh di dalam periode terpilih. Angka Year To Date diambil dari slip terbaru di dalam periode yang dipilih — pilih periode tahun lalu, maka angka YTD-nya adalah angka tahun lalu, bukan angka hari ini.

Membuka sebuah slip memberi lima tab. Aplikasi membentuknya dengan memotong formulir Salary Slip pada titik-titik yang tetap:

TabIsinya
DetailsEmployee Info dan Payroll Info, lalu Working Days, Unmarked days, Leave Without Pay, Absent Days dan Payment Days
Earnings & DeductionsKedua tabel komponen di dalam formulir, tiap barisnya menampilkan Salary Component dan jumlahnya, ditambah angka gross dan total potongan
Net Pay InfoNet Pay, Rounded Total, Year To Date, Month To Date, Total in words
Income Tax BreakupCTC, Income from Other Sources, Total Earnings, Non Taxable Earnings, Standard Tax Exemption Amount, Tax Exemption Declaration, Deductions before tax calculation, Annual Taxable Amount, Income Tax Deducted Till Date, Current Month Income Tax, Future Income Tax, Total Income Tax
Bank DetailsJournal Entry, Bank Name, Bank Account No

Download PDF merender print format bawaan Salary Slip, atau format Standard bila belum ada yang ditetapkan, dan gagal dengan "Failed to download PDF" bila proses rendernya bermasalah. Field timesheet dihilangkan kecuali slipnya memang punya timesheet, dan duplikat setiap jumlah dalam mata uang perusahaan disembunyikan bila mata uang slipnya sudah sama dengan mata uang perusahaan.

Profile​

Empat grup read-only yang dibuka dari avatar, masing-masing berisi daftar field Employee yang tetap:

GrupField
Employee DetailsFull Name, Employee Number, Gender, Date of Birth, Date of Joining, Blood Group
Company InformationCompany, Department, Designation, Branch, Grade, Reports to, Employment Type
Contact InformationMobile, Personal Email, Company Email, dan satu baris keempat yang selalu kosong — layarnya meminta field yang dieja preferred_email sementara record Employee mengejanya prefered_email, sehingga tidak pernah ada yang ditemukan
Salary InformationCost to Company (CTC), Payroll Cost Center, PAN Number, Provident Fund Account, Salary Mode, Bank Name, Bank A/C No., IFSC Code, MICR Code, IBAN

Field yang tidak berisi nilai ditampilkan sebagai tanda hubung. PAN Number, Provident Fund Account, IFSC Code dan MICR Code adalah custom field yang hanya dibuat oleh regional setup India, jadi di workspace Indonesia keempat baris itu muncul dengan label kosong dan tanda hubung. Di bawah grup-grup itu ada Settings (hanya bila push notification tersedia) dan Log Out.

Notifications​

Loncengnya membuka daftar notifikasi Anda, sepuluh sekaligus dengan Load more, masing-masing menautkan ke Leave Application atau Expense Claim yang dirujuknya. Mark all as read menghapus badge-nya.

peringatan

PWA Notification memberi hak baca kepada role System Manager dan Employee, dan tidak memberi hak tulis kepada satu pun, sehingga mengetuk satu notifikasi tidak bisa menghapus tanda belum-dibaca miliknya sendiri. Titik biru dan badge merah hanya hilang lewat Mark all as read, yang menjalankan aksi server yang menulis tanda itu secara langsung.

Push notification di atas lonceng dalam aplikasi memerlukan dua hal: push_relay_server_url di konfigurasi site, dan Enable Push Notification Relay yang dicentang di Push Notification Settings. Tanpa keduanya, entri Settings di bawah Profile tidak muncul sama sekali dan toggle-nya tidak bisa dijangkau. Lonceng di dalam aplikasi tetap berfungsi apa pun keadaannya.

Dokumen di balik aplikasi​

Semua yang ditampilkan aplikasi adalah salah satu dari dokumen berikut, yang dilihat HR di desk dengan nama yang sama.

  • Employee (/app/employee) — record yang menjadi tumpuan aplikasi ini. Aplikasi mencari karyawan berstatus Active yang User ID-nya adalah orang yang sedang login; tidak ada hal lain yang mengidentifikasi Anda ke aplikasi ini.
  • Employee Checkin (/app/employee-checkin) — satu punch, IN atau OUT, dengan timestamp serta latitude dan longitude opsional.
  • Leave Application, Expense Claim, Employee Advance, Attendance Request dan Shift Request — lima dokumen yang bisa dibuat karyawan di sini. Kelimanya harus disubmit dulu sebelum berlaku.
  • Shift Assignment, Salary Slip, Holiday List, Attendance — hanya bisa dibaca di sini.
  • PWA Notification (/app/pwa-notification) — ikon loncengnya. Satu notifikasi dikirim ke approver ketika sebuah Leave Application, Expense Claim atau Shift Request diajukan, dan satu lagi kembali ke karyawan ketika statusnya berubah menjadi Approved atau Rejected. Attendance Request dan uang muka tidak menghasilkan notifikasi sama sekali.
  • Workflow — bila Anda mendefinisikan workflow pada Leave Application, Expense Claim, Shift Request atau Attendance Request, aplikasi menghilangkan tombol Approve dan Reject bawaannya dan menampilkan transisi workflow Anda sebagai gantinya.
  • HR Settings (/app/hr-settings) — check-in lewat ponsel, geolokasi, penguncian persetujuan atas dokumen sendiri, dan apakah approver wajib diisi.

Aplikasi ini hanya membaca tiga nilai HR Settings untuk dirinya sendiri: Allow Employee Checkin from Mobile App, Allow Geolocation Tracking dan Prevent self approval for leaves even if user has permissions. Dua lainnya, Leave Approver Mandatory In Leave Application dan Expense Approver Mandatory In Expense Claim, sampai ke formulir melalui pencarian approver. Sisa isi HR Settings tetap berlaku, tetapi hanya pada saat server memeriksa dokumennya — aplikasi tidak bisa memperingatkan Anda lebih awal.

Apa yang terjadi saat Anda submit​

Submit dilakukan entah dari aplikasi — tombol Submit, lalu konfirmasi "Permanently submit {0}?" — atau dari desk. Efeknya sama saja.

Leave Application. Menolak dengan "Only Leave Applications with status 'Approved' and 'Rejected' can be submitted" selama statusnya masih Open atau Cancelled. Pada pengajuan yang disetujui, ia menandai atau menimpa Attendance untuk setiap hari cuti, menulis Leave Ledger Entry negatif yang memakan saldonya, dan mengirim email ke pemohon bila Send Leave Notification dicentang. Pembatalan membalik ledger entry itu dan membatalkan absensi yang dibuatnya.

Expense Claim. Menolak dengan "Approval Status must be 'Approved' or 'Rejected'" selama masih Draft, dan dengan "Payable Account is mandatory to submit an Expense Claim" bila tidak ada payable account dan Is Paid tidak dicentang. Saat submit, ia memposting GL entry, memperbarui task dan project yang tertaut, menuliskan kembali Claimed Amount pada setiap Employee Advance yang dialokasikan, dan menetapkan Status menjadi Paid atau Unpaid tergantung apakah grand total-nya sudah tertutup.

Employee Advance. Tidak memposting apa pun. Statusnya berpindah ke Unpaid, dan uang baru benar-benar berpindah ketika seseorang membuat Payment Entry atau Journal Entry terhadapnya di desk.

Attendance Request. Membuat satu record Attendance per hari dalam rentangnya, dengan Include Holidays yang menentukan apakah hari libur ikut tercakup. Pembatalan membatalkan record Attendance tersebut.

Shift Request. Menolak dengan "Only Shift Request with status 'Approved' and 'Rejected' can be submitted". Pada status Approved, ia membuat dan men-submit sebuah Shift Assignment untuk karyawan, shift type dan tanggal yang sama, dengan mengabaikan perizinan, lalu melaporkan "Shift Assignment: {0} created for Employee: {1}". Assignment itulah yang kemudian muncul di Upcoming Shifts. Membatalkan permintaannya akan membatalkan assignment-nya.

Employee Checkin tidak perlu disubmit. Sebuah punch berlaku begitu tersimpan, dan baru menjadi Attendance ketika auto attendance dijalankan.

Siapa boleh melakukan apa​

Aplikasi ini tidak punya aturan akses sendiri. Setiap tombol yang ditampilkannya ditentukan oleh tiga jawaban dari server: apa yang boleh dilakukan role Anda terhadap jenis dokumen itu, field mana yang boleh diedit role Anda, dan apakah ada User Permission yang memblokir dokumen tertentu.

Role permission pada kelima dokumen​

DokumenRole EmployeeRole approverHR UserHR Manager
Leave Applicationread, write, createLeave Approver: read, write, submit, cancel, deletepenuhpenuh
Expense Claimread, write, createExpense Approver: penuhpenuhpenuh
Employee Advanceread, write, createExpense Approver: penuhtidak adatidak ada
Attendance Requestread, write, create, deletetidak adapenuhpenuh
Shift Requestread, write, createtidak adaread, write, create, submitpenuh
Employee Checkinread, write, create, deletetidak adapenuhpenuh

"Penuh" berarti create, write, submit, cancel, amend dan delete. Celah-celahnya penting:

  • Role Employee tidak punya hak submit atas apa pun. Karyawan menyimpan draf; orang lain yang men-submit.
  • Employee Advance tidak terlihat oleh HR User dan HR Manager kecuali mereka juga memegang Expense Approver. Tambahkan role itu kepada staf keuangan Anda, atau mereka tidak akan bisa melihat uang muka sama sekali.
  • Shift Request tidak punya role approver. HR User atau HR Manager yang harus menanganinya.
  • Role Employee bisa menghapus record Employee Checkin miliknya sendiri di desk. Aplikasi tidak pernah menawarkan hal itu, tetapi izinnya ada di sana.

Dua field terkunci untuk role senior saja, sehingga karyawan bisa melihatnya tetapi tidak pernah bisa mengubahnya: Status pada Leave Application, yang hanya bisa diedit oleh Leave Approver, HR User dan HR Manager; serta Approval Status pada Expense Claim, yang hanya bisa diedit oleh Expense Approver, HR User dan HR Manager. Time pada Employee Checkin dikunci dengan cara yang sama, dan itulah sebabnya seorang karyawan bisa membuat punch tetapi tidak pernah bisa mengubah timestamp-nya.

Menyebut seseorang pada Leave Approver atau Expense Approver di record Employee lalu menyimpannya akan menambahkan role Leave Approver atau Expense Approver yang sesuai ke user tersebut secara otomatis. Shift Request Approver dan Overtime Request Approver tidak memberikan role apa pun — kedua approver itu sepenuhnya bergantung pada share dokumen.

Share dokumen dan User Permission​

Menyimpan Leave Application, Expense Claim atau Shift Request yang menyebut seorang approver akan membagikan dokumen itu kepada user tersebut beserta hak submit, dan menampilkan peringatan "Shared document with the user {0} with 'Submit' permission". Mengganti approver akan mencabut share sebelumnya. Share itu membawa hak read dan submit — bukan write.

Terpisah dari itu, menyimpan record Employee yang punya User ID dengan Create User Permission dicentang (bawaannya memang dicentang; deskripsinya sendiri berbunyi "This will restrict user access to other employee records") akan membuat User Permission pada Employee dan Company untuk user tersebut. Itulah yang mencegah karyawan saling membaca slip gaji satu sama lain.

peringatan

Kedua mekanisme itu saling berbenturan bagi para manajer. Sebuah User Permission pada Employee memblokir akses ke permintaan milik orang lain — apa pun role-nya — sementara share hanya memberi hak read dan submit. Jadi seorang manajer yang dirinya sendiri juga Employee dengan User ID bisa melihat permintaan anggota timnya di daftar (kueri daftar ikut menyertakan dokumen yang dibagikan) tetapi tidak bisa menulisnya: Approve dan Reject gagal dengan pesan "Approval failed!". Perbaiki dengan salah satu dari tiga cara: hilangkan centang Create User Permission pada record Employee milik para approver, tambahkan User Permission atas record Employee tiap bawahan langsung ke user manajer tersebut, atau hapus sendiri User Permission Employee milik manajer itu di /app/user-permission.

Aplikasi HR tidak menambahkan aturan visibilitas tersembunyi apa pun di atas semua itu. Apa yang bisa dilihat seseorang ditentukan oleh role permission, User Permission dan share dokumen — tidak ada yang lain.

Pekerjaan yang berjalan sendiri​

Tidak satu pun di antaranya merupakan pekerjaan self-service, tetapi semuanya mengubah apa yang dilihat seorang karyawan saat berikutnya membuka aplikasi.

PekerjaanSeberapa seringEfeknya di aplikasi
Memajukan Last Sync of Checkin pada shift (shift_type.update_last_sync_of_checkin)Tiap jam (long queue)Memajukan penanda itu pada shift yang Automatically update Last Sync of Checkin-nya dicentang, dan itulah yang membuat pekerjaan berikutnya layak dijalankan
Absensi otomatis untuk semua shift (shift_type.process_auto_attendance_for_all_shifts)Tiap jam (long queue)Mengubah punch menjadi Attendance, dan itulah yang memberi warna pada kalender Attendance
Pembuatan shift otomatis (shift_schedule_assignment.process_auto_shift_creation)Tiap jam (long queue)Membuat Shift Assignment yang kemudian muncul di Upcoming Shifts
Menandai shift assignment yang kedaluwarsa sebagai tidak aktif (shift_assignment.mark_expired_shift_assignments_as_inactive)HarianMengubah assignment yang sudah berakhir menjadi Inactive, sehingga hilang dari Upcoming Shifts
Mengedaluwarsakan alokasi cuti (leave_ledger_entry.process_expired_allocation)Harian (long queue)Membuat alokasi kedaluwarsa, sehingga dial saldo cutinya turun
Mengalokasikan earned leave (hr.utils.allocate_earned_leaves)Harian (long queue)Menambah earned leave, sehingga dial-nya naik
Membuat leave encashment (hr.utils.generate_leave_encashment)Harian (long queue)Membuat Leave Encashment bila jenis cutinya mengizinkan
Pengingat ulang tahun dan hari jadi kerja (employee_reminders.send_birthday_reminders dan send_work_anniversary_reminders)HarianHanya email. Keduanya tidak membuat PWA Notification, sehingga tidak ada apa pun yang muncul di bawah loncengnya

Aplikasi juga menyegarkan dirinya sendiri seiring perubahan: check-in, permintaan tim, profil karyawan itu sendiri dan slip gajinya semua dimuat ulang tanpa perlu pull-to-refresh ketika dokumen yang mendasarinya berubah.

Rincian, batasan dan kasus khusus​

  • Hanya salary slip yang sudah disubmit yang muncul, dan hanya di dalam sebuah Payroll Period milik perusahaan tersebut. Bila belum ada satu pun yang didefinisikan, tab Salary bertuliskan "No salary slips found".
  • Aplikasi tidak mengevaluasi aturan yang menyembunyikan sebuah field sampai field lain terisi. Field yang disembunyikan desk sampai suatu kondisi terpenuhi — Bank / Cash Account pada expense claim, exchange rate pada expense claim — ditampilkan tanpa syarat. Sebaliknya, field read-only yang tidak berisi nilai justru disembunyikan.
  • Role Employee hanya punya hak baca atas Shift Assignment: karyawan melihat shift-nya dan mengajukan Shift Request, HR yang membuat assignment-nya.
  • Dokumen yang sudah disubmit atau dibatalkan sepenuhnya read-only di aplikasi, dan Delete menghilang begitu sebuah dokumen disubmit.
  • Membuka Leave Application milik orang lain membuat setiap field-nya read-only kecuali Anda adalah Leave Approver yang disebut di sana. Hal yang sama berlaku pada Attendance Request tanpa pengecualian apa pun, karena dokumen itu tidak punya approver.
  • Field waktu tidak punya editor di aplikasi. Field apa pun yang bertipe Time tampil sebagai label tanpa isi apa-apa di bawahnya.
  • Tidak ada pencarian. Daftar hanya menawarkan sheet filter tetap per jenis dokumen — status, tipe, karyawan, departemen dan tanggal — serta infinite scroll 50 baris per halaman.