4. Master Pendukung¶
Bab ini cover 2 menu master: - Miscellaneous: hari libur, status kekaryawanan, komponen perjalanan dinas, bank - Penggajian: komponen gaji, fasilitas progressif, formula, jenis pinjaman
Kedua menu ini menyiapkan referensi yang dipakai saat kalkulasi gaji + workflow pengajuan.
Bagian A — Miscellaneous¶
Akses: sidebar Master Data → Miscellaneous. Halaman punya 4 tab.
4.1 Tab "Hari Libur"¶
Apa itu¶
Tanggal libur (hari besar nasional + cuti bersama) yang berlaku untuk tenant Anda. Saat generate jadwal harian, tanggal-tanggal ini di-skip → karyawan auto LIBUR.
Tambah Hari Libur¶
- Klik "+ Tambah"
- Form:
- Tanggal: format YYYY-MM-DD
- Nama: mis. "Hari Kemerdekaan RI"
- Tipe:
HARI_BESAR— libur nasional resmiCUTI_BERSAMA— keputusan SKB 3 menteri (mis. cuti lebaran)
- Simpan
Validasi¶
- 1 tenant tidak boleh punya tanggal duplikat (sistem tolak
409 Conflict) - Setiap tahun perlu input ulang (improvement: tombol "Salin dari tahun lalu" — TBD)
Tips¶
- Input hari libur sebelum generate jadwal harian periode pertama
- Bila telanjur generate sebelum input hari libur, hapus jadwal harian + re-generate
4.2 Tab "Bank"¶
Read-only di Web UI¶
Bank adalah master global (1 daftar dipakai semua tenant). HR Anda hanya bisa lihat & lookup untuk dropdown saat setup Bank Akun karyawan.
CRUD Bank dilakukan oleh super-admin via CLI internal — tidak ada tombol Add/Edit/Hapus di sini.
Tampilan¶
Tabel daftar bank dengan kolom Kode (mis. BCA, BRI, MANDIRI), Nama Lengkap. Search by kode/nama.
4.3 Tab "Komponen Perjalanan Dinas" (SPD)¶
Apa itu¶
Master nominal komponen perjalanan dinas per golongan jabatan. Mis. "Uang Harian": Golongan 1 = 500rb, Golongan 2 = 350rb, dst.
Saat HR bikin SPD untuk karyawan (lihat 05-pengajuan.md), sistem auto-lookup komponen yang level_jabatan-nya cocok dengan golongan karyawan.
Tambah Komponen (Bulk by Level)¶
Form ini tidak per-baris seperti tabel biasa. 1 nama komponen menghasilkan banyak baris (1 per golongan):
- Klik "+ Tambah Komponen"
- Form:
- Nama Komponen: mis. "Uang Harian"
- Pajak (%): PPh yang akan diterapkan saat kalkulasi benefit, mis.
0atau5 - Per Golongan (auto-generate baris dari level jabatan tenant):
- Golongan 1:
500000(atau check "Tidak Berlaku") - Golongan 2:
350000 - Golongan 3:
200000 - dst
- Golongan 1:
- Simpan
Sistem akan create N baris (1 per golongan yang diisi nominal-nya).
Edit per row¶
- Klik komponen di list → modal edit
- Bisa ubah nominal per baris (1 baris = 1 kombinasi nama + golongan)
Validasi¶
- Unique
(nama_komponen, level_jabatan)per tenant — tidak boleh duplikat
4.4 Tab "Status Kekaryawanan"¶
Apa itu¶
Master status karyawan per tenant. Setiap tenant beda terminologi (TETAP vs Permanen, Probation vs Percobaan, dll). Karena itu master ini per tenant, bukan global.
Tambah Status¶
- Klik "+ Tambah"
- Form:
- Kode (auto-uppercase, unik per tenant): mis.
TETAP,KONTRAK,MAGANG,PROBATION - Nama: mis. "Karyawan Tetap"
- Keterangan: opsional
- Simpan
Penggunaan¶
Status ini direferensi oleh: 1. Setting Karyawan (1 status per karyawan) — lihat bab 2 2. Komponen Gaji status filter (M:N — komponen ini berlaku untuk status apa saja) — lihat bagian B di bawah
Saran setup awal: bikin minimal 3 status (TETAP, KONTRAK, MAGANG/PROBATION) — cukup untuk kebanyakan organisasi.
Bagian B — Penggajian¶
Akses: sidebar Master Data → Penggajian. Halaman punya 4 tab.
Setup ini dulu sebelum jalankan Kalkulasi Gaji. Tanpa Komponen Gaji, kalkulasi tidak punya output.
4.5 Tab "Komponen Gaji"¶
Apa itu¶
Baris-baris yang muncul di slip gaji (Gaji Pokok, Tunjangan Transport, Potongan Pinjaman, dll). Setiap komponen punya:
| Field | Penjelasan |
|---|---|
| Kode | Unik per tenant, mis. GAPOK, TR_TRANSPORT, POT_BPJS |
| Nama | Display name, mis. "Gaji Pokok" |
| Kategori | PENDAPATAN / POTONGAN / BENEFIT |
| Model | Source nilai: FORMULA / FASILITAS / UPLOAD / PINJAMAN |
| Value Reference | Bergantung Model — pilih formula/fasilitas/jenis_pinjaman tertentu |
| Perhitungan Pajak | Kategori PPh 21 (8 enum) |
| Status Berhak | M:N — status_kekaryawanan yang berhak dapat komponen ini |
4 Model¶
FORMULA¶
Nilai dihitung via expression DSL. Contoh:
- Gaji Pokok: [GP]
- Uang Lembur: [GP] * [LMB] / 173
- Bonus tahunan: [GP] * 1.5
Saat pilih Model = FORMULA, dropdown "Pilih Formula" muncul — pilih dari list formula aktif tenant.
FASILITAS¶
Nilai dari tabel tarif progressif (per golongan). Cocok untuk tunjangan yang tarifnya jelas berdasarkan golongan jabatan.
Saat pilih Model = FASILITAS, dropdown "Pilih Fasilitas" muncul — pilih dari list fasilitas progressif aktif.
UPLOAD¶
Nilai diisi manual via CSV upload per periode. Cocok untuk: - Bonus performance (variable per orang per periode) - Insentif khusus - Penyesuaian gaji
Saat pilih Model = UPLOAD, tidak ada value picker (diisi via menu Proses Gaji → Data Upload).
PINJAMAN¶
Nilai dari transaksi pinjaman karyawan aktif (jenis pinjaman tertentu).
Saat pilih Model = PINJAMAN, dropdown "Pilih Jenis Pinjaman" muncul.
Tambah Komponen Gaji¶
- Klik "Tambah Komponen" di tab
- Modal editor:
- Kode + Nama
- Kategori dropdown (Pendapatan/Potongan/Benefit) — affect color di slip
- Model dropdown (4 opsi)
- Value Picker — muncul kondisional sesuai Model
- Perhitungan Pajak dropdown (8 opsi PPh 21):
Tidak berlakuGaji / Pensiun atau THT/JHTTunjangan lainnya / Uang lemburHonorarium dan imbalan lainPremi asuransiPenerimaan naturaTantiem, Bonus, THRIuran pensiun atau THT/JHT
- Status Kekaryawanan: grid checkbox dari master — default semua ter-check saat create
- Simpan
Status filter — penjelasan¶
- Default: semua status ter-check → komponen berlaku untuk semua karyawan
- Uncheck status tertentu → komponen tidak berlaku untuk status tsb
- Uncheck SEMUA = komponen tidak berlaku untuk siapa pun (rare case)
- Karyawan dengan
status_kekaryawanan_id = NULL(Setting Karyawan belum di-isi) di-treat sebagai "default eligible" oleh kalkulasi (permisif)
Edit / Toggle / Hapus¶
- Edit: ubah field. Komponen + status M:N replaced kalau dikirim.
- Void/Aktif (toggle): tombol di kolom Aksi. Komponen non-aktif tidak masuk kalkulasi.
- Hapus: soft delete
4.6 Tab "Fasilitas Progressif"¶
Apa itu¶
Tunjangan yang nominalnya berbeda per golongan jabatan. Mis. Uang Transport: - Golongan 1: 35.000 / hari - Golongan 2: 35.000 / hari - Golongan 3: 25.000 / hari - Golongan 4: 15.000 / hari
Field¶
| Field | Penjelasan |
|---|---|
| Kode | Unik per tenant |
| Nama Fasilitas | mis. "Uang Transport" |
| Satuan Periode | HARIAN atau BULANAN |
| Tarif per Golongan | Inline tabel — auto-generate baris dari golongan jabatan tenant |
Tambah Fasilitas¶
- Klik "Tambah Fasilitas"
- Modal editor:
- Kode + Nama
- Satuan Periode: HARIAN (mis. uang transport per hari) atau BULANAN (mis. tunjangan internet per bulan)
- Tabel Tarif inline auto-generate dari golongan jabatan tenant. Untuk tiap golongan, isi nominal:
- Kosong = golongan ini tidak dapat fasilitas
0= sama dengan kosong (tidak disimpan, tidak dapat)- Angka > 0 = nominal valid
- Simpan
Konvensi nominal 0¶
Tarif 0 = tidak dapat. Saat kalkulasi: - Sistem cek tarif by jabatan.level karyawan - Bila ada → kalikan dengan pengali hari (HARIAN: 22 default; BULANAN: 1) → masuk ke nominal komponen - Bila tidak ada (kosong / 0) → karyawan tidak dapat fasilitas ini
Pengali HARIAN¶
Saat ini HARI_KERJA_DEFAULT = 22 hardcoded. Akan diganti dengan setting per periode di rilis berikutnya.
4.7 Tab "Formula"¶
Apa itu¶
Definisi rumus perhitungan reusable. Dipakai oleh Komponen Gaji bertipe FORMULA.
DSL Formula¶
Expression bisa pakai:
- Konstanta dengan syntax [KODE] — lihat lampiran 99-lampiran.md
- Operator: + - * / %, == != < > <= >=, AND OR NOT
- Fungsi: IF(cond, a, b), MIN(a, b, ...), MAX(a, b, ...), ROUND(x, n), MOD(a, b), ABS(x), FLOOR(x), CEIL(x)
- Number literal: 1, 1.5, 0.5
- Tanda kurung: (...)
8 Konstanta Awal¶
| Kategori | Kode | Tipe | Penjelasan |
|---|---|---|---|
| Karyawan | [GP] |
Decimal | Gaji Pokok dari Setting Karyawan |
| Karyawan | [JD_MONTH] |
Integer | Bulan join (1-12) |
| Karyawan | [JD_YEAR] |
Integer | Tahun join |
| Waktu Kerja | [WH] |
Decimal | Excess Working Hours (jam, signed) |
| Waktu Kerja | [LMB] |
Decimal | Total Lembur disetujui (jam) |
| Waktu Kerja | [CD_MONTH] |
Integer | Bulan periode aktif |
| Waktu Kerja | [CD_YEAR] |
Integer | Tahun periode aktif |
| Lainnya | [YOS] |
Integer | Years of Service (tahun penuh masa kerja) |
Contoh Formula Real¶
[GP] # Gaji pokok langsung
[GP] * [WH] * 8 / 173 # Kelebihan Hari Kerja
[GP] * [LMB] / 173 # Uang Lembur
IF(MOD([YOS], 5) == 0 AND [YOS] > 0 AND [JD_MONTH] == [CD_MONTH], [GP] * 3, 0) # Cuti besar (anniversary 5 tahun)
ROUND([GP] / 173, 2) # Tarif per jam
Tambah Formula¶
- Klik "Tambah Formula" di tab Formula
- Modal builder dengan 3 toolbar:
- Konstanta — 3 kolom (Karyawan / Waktu Kerja / Lainnya). Klik chip = insert
[KODE]di cursor - Operator —
+ - * / %, perbandingan, AND/OR/NOT, kurung - Fungsi — IF, MIN, MAX, ROUND, MOD, ABS, FLOOR, CEIL
- Field Expression (textarea monospace): bisa juga ketik manual
- Live validation badge:
- ✓ Valid (hijau)
- ✗ Error (merah, dengan pesan parser)
- Panel "Konstanta yang digunakan" — auto-list konstanta yang muncul di expression dengan deskripsinya
- Tombol Preview — pilih karyawan + periode → hitung & tampilkan hasil + breakdown nilai konstanta
- Simpan
Validasi¶
- Kode unik per tenant
- Expression diparse saat simpan — syntax error / konstanta tidak terdaftar → tolak
422 VALIDATION_ERROR
Edit / Toggle / Hapus¶
- Edit: ubah expression — re-validate
- Void/Aktif: toggle
- Hapus: soft delete
4.8 Tab "Pinjaman"¶
Apa itu¶
Master jenis pinjaman tenant. Mis. KASBON, KOPERASI, BANK_BCA. Direferensi oleh Komponen Gaji bertipe PINJAMAN.
Note: Tab ini hanya master jenis. Transaksi pinjaman per karyawan (siapa pinjam berapa, mulai kapan) di-CRUD via Proses Gaji → Data Pinjaman — lihat 07-proses-gaji.md.
Tambah Jenis Pinjaman¶
- Klik "+ Tambah"
- Form:
- Kode (unik per tenant): mis.
KASBON,KOPERASI - Nama: mis. "Kasbon"
- Keterangan: opsional (mis. ketentuan, plafon, syarat)
- Simpan
Edit / Hapus¶
- Edit / Toggle Aktif / Hapus (soft delete) standar
4.9 Urutan setup yang disarankan¶
Untuk tenant baru:
- Hari Libur — input tahunan dulu sebelum generate jadwal
- Status Kekaryawanan — bikin TETAP, KONTRAK, MAGANG (minimal)
- Bank — tidak perlu setup (master global, langsung tersedia)
- Komponen Perjalanan Dinas — kalau perusahaan ada SPD; bisa skip kalau belum
- Formula — bikin formula building block (mis.
GAPOK = [GP],LEMBUR = [GP]*[LMB]/173) - Fasilitas Progressif — bikin tunjangan progressif (mis. UANG_TRANSPORT, UANG_MAKAN)
- Jenis Pinjaman — bikin jenis-jenis pinjaman yang dipakai
- Komponen Gaji — bikin slip gaji rows yang akan tampil per karyawan, link ke formula/fasilitas/upload/pinjaman
Langkah berikutnya¶
→ 5. Pengajuan & Workflow — cuti, ijin, tukar shift, lembur, perjalanan dinas.