Lewati ke isi

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

  1. Klik "+ Tambah"
  2. Form:
  3. Tanggal: format YYYY-MM-DD
  4. Nama: mis. "Hari Kemerdekaan RI"
  5. Tipe:
    • HARI_BESAR — libur nasional resmi
    • CUTI_BERSAMA — keputusan SKB 3 menteri (mis. cuti lebaran)
  6. 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):

  1. Klik "+ Tambah Komponen"
  2. Form:
  3. Nama Komponen: mis. "Uang Harian"
  4. Pajak (%): PPh yang akan diterapkan saat kalkulasi benefit, mis. 0 atau 5
  5. Per Golongan (auto-generate baris dari level jabatan tenant):
    • Golongan 1: 500000 (atau check "Tidak Berlaku")
    • Golongan 2: 350000
    • Golongan 3: 200000
    • dst
  6. 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

  1. Klik "+ Tambah"
  2. Form:
  3. Kode (auto-uppercase, unik per tenant): mis. TETAP, KONTRAK, MAGANG, PROBATION
  4. Nama: mis. "Karyawan Tetap"
  5. Keterangan: opsional
  6. 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

  1. Klik "Tambah Komponen" di tab
  2. Modal editor:
  3. Kode + Nama
  4. Kategori dropdown (Pendapatan/Potongan/Benefit) — affect color di slip
  5. Model dropdown (4 opsi)
  6. Value Picker — muncul kondisional sesuai Model
  7. Perhitungan Pajak dropdown (8 opsi PPh 21):
    • Tidak berlaku
    • Gaji / Pensiun atau THT/JHT
    • Tunjangan lainnya / Uang lembur
    • Honorarium dan imbalan lain
    • Premi asuransi
    • Penerimaan natura
    • Tantiem, Bonus, THR
    • Iuran pensiun atau THT/JHT
  8. Status Kekaryawanan: grid checkbox dari master — default semua ter-check saat create
  9. 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

  1. Klik "Tambah Fasilitas"
  2. Modal editor:
  3. Kode + Nama
  4. Satuan Periode: HARIAN (mis. uang transport per hari) atau BULANAN (mis. tunjangan internet per bulan)
  5. 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
  6. 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

  1. Klik "Tambah Formula" di tab Formula
  2. Modal builder dengan 3 toolbar:
  3. Konstanta — 3 kolom (Karyawan / Waktu Kerja / Lainnya). Klik chip = insert [KODE] di cursor
  4. Operator+ - * / %, perbandingan, AND/OR/NOT, kurung
  5. Fungsi — IF, MIN, MAX, ROUND, MOD, ABS, FLOOR, CEIL
  6. Field Expression (textarea monospace): bisa juga ketik manual
  7. Live validation badge:
  8. ✓ Valid (hijau)
  9. ✗ Error (merah, dengan pesan parser)
  10. Panel "Konstanta yang digunakan" — auto-list konstanta yang muncul di expression dengan deskripsinya
  11. Tombol Preview — pilih karyawan + periode → hitung & tampilkan hasil + breakdown nilai konstanta
  12. 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

  1. Klik "+ Tambah"
  2. Form:
  3. Kode (unik per tenant): mis. KASBON, KOPERASI
  4. Nama: mis. "Kasbon"
  5. Keterangan: opsional (mis. ketentuan, plafon, syarat)
  6. Simpan

Edit / Hapus

  • Edit / Toggle Aktif / Hapus (soft delete) standar

4.9 Urutan setup yang disarankan

Untuk tenant baru:

  1. Hari Libur — input tahunan dulu sebelum generate jadwal
  2. Status Kekaryawanan — bikin TETAP, KONTRAK, MAGANG (minimal)
  3. Bank — tidak perlu setup (master global, langsung tersedia)
  4. Komponen Perjalanan Dinas — kalau perusahaan ada SPD; bisa skip kalau belum
  5. Formula — bikin formula building block (mis. GAPOK = [GP], LEMBUR = [GP]*[LMB]/173)
  6. Fasilitas Progressif — bikin tunjangan progressif (mis. UANG_TRANSPORT, UANG_MAKAN)
  7. Jenis Pinjaman — bikin jenis-jenis pinjaman yang dipakai
  8. 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.