title: “Payroll Automation — Otomasi Penggajian” description: “Otomasi penggajian dengan kalkulator real-time, AI insights, konfigurasi BPJS/PPh 21, dan export PDF di SNISHOP ERP.”
Payroll Automation — Otomasi Penggajian

Arsitektur Payroll
Akses Halaman
URL:/payroll
Empat Tab Utama
Tab Realtime: Payroll Calculator
Kalkulator real-time menghitung proyeksi gaji hingga hari ini (bukan akhir bulan):Tab Payroll: Daftar Resmi
Daftar payroll resmi dengan aksi:Tab AI Insights: PayrollAIAssistant
AI assistant menggunakanbase44.integrations.Core.InvokeLLM untuk analisis mendalam:
1. Cost-Saving Detection
2. Anomaly Detection
3. KPI Impact Analysis
Menganalisis korelasi antara skor KPI dan bonus yang diberikan per periode.4. Tax Optimization
Saran optimasi PPh 21 berdasarkan bracket pajak dan PTKP.4. Per-Employee Explanation
Untuk setiap karyawan, AI menghasilkan penjelasan natural language tentang komponen gaji:Tab Konfigurasi: PayrollConfigForm
Entitas: PayrollConfiguration
Perhitungan Payroll: generatePayroll()
Langkah 1: Gaji Pokok Pro-rated
Langkah 2: Upah Lembur
Langkah 3: Bonus KPI
Bonus berdasarkan rating KPI:Langkah 4: Gaji Kotor
Langkah 5: BPJS Kesehatan
Langkah 6: BPJS Ketenagakerjaan
Langkah 7: PPh 21 (Pajak Penghasilan)
Perhitungan PPh 21 progresif dengan PTKP:
Bracket Pajak Progresif:
Langkah 8: Gaji Bersih
Export PDF
Single Slip
PayrollPDFGenerator menghasilkan PDF slip gaji individual dengan format resmi.
Bulk Export
BulkPayrollPDFButton generate PDF untuk seluruh karyawan dalam satu periode. Berguna untuk arsip dan distribusi slip gaji.
Integrasi dengan Modul Lain
Entity Relationship Diagram
Tabel Schema
CompanyPayroll
Entitas utama untuk menyimpan record penggajian per karyawan per periode.
Required fields:
company_id, employee_id, period, basic_salary, gross_salary, net_salary
PayrollConfiguration
Konfigurasi penggajian per perusahaan — menyimpan formula, tarif BPJS, bracket pajak, dan parameter kalkulasi.
Required fields:
company_id
CompanyLoan
Entitas kasbon/pinjaman karyawan yang potongannya diterapkan pada payroll.
Required fields:
company_id, employee_id, amount, reason
State Machine — Siklus Hidup Payroll
State Machine — Siklus Hidup CompanyLoan
Sequence Diagram — Perhitungan Payroll
Sequence Diagram — Generate Slip Gaji PDF
Enum Tables
payroll_status
Status siklus hidup record payroll.payroll_period
Format periode penggajian.
Periode selalu dalam format ISO 8601 year-month. Satu record payroll per karyawan per periode.
basic_salary_formula
Formula perhitungan gaji pokok yang dikonfigurasi di PayrollConfiguration.payment_method
Metode pembayaran gaji.loan_status
Status siklus hidup kasbon/pinjaman karyawan.kpi_rating
Rating hasil penilaian KPI yang menentukan persentase bonus.attendance_status
Status absensi harian karyawan.employment_type
Tipe kepegawaian karyawan.RBAC — Hak Akses Payroll
Kontrol akses berdasarkan role di CompanyMember.
Permission flags di CompanyMember.permissions:
RLS Policy: Semua entitas payroll menggunakan filter
company_id = user.data.active_company_id untuk isolasi data antar perusahaan. Karyawan hanya bisa melihat data milik sendiri via employee_email = user.email.
Tabel Perhitungan BPJS
BPJS Kesehatan
BPJS Ketenagakerjaan
Ringkasan Total Potongan & Kontribusi
Contoh Perhitungan (Gaji Pokok Rp 10.000.000)
Diagram Relasi Entitas Payroll — Schema Lengkap
Schema Entitas Lengkap — Dikelompokkan per Komponen
Komponen Gaji Pokok (Income)
Field-field yang membentuk penghasilan karyawan sebelum potongan.CompanyPayroll — Field Gaji Pokok
Payroll (Legacy) — Field Gaji Pokok
Komponen Tunjangan (Allowances)
Tunjangan tambahan yang diberikan kepada karyawan, disimpan sebagai array objek.CompanyPayroll.allowances
Contoh data allowances:
Payroll.allowances
Komponen Potongan (Deductions)
Potongan-potongan yang mengurangi gaji kotor menjadi gaji bersih.CompanyPayroll.deductions
Contoh data deductions:
Payroll.deductions
Komponen Status & Pembayaran
Field yang mengatur siklus hidup dan metode pembayaran payroll.CompanyPayroll — Status & Pembayaran
Payroll (Legacy) — Status & Pembayaran
Employee — Data Karyawan
Entitas yang menyimpan data lengkap karyawan termasuk informasi perbankan dan kontak darurat.
Required fields:
company_id, employee_id, full_name, email, department, position, hire_date
Employee.bank_account — Informasi Rekening Bank
Objek nested yang menyimpan detail rekening bank untuk transfer gaji.
Contoh data bank_account:
Employee.emergency_contact — Kontak Darurat
Objek nested yang menyimpan informasi kontak darurat karyawan.
Contoh data emergency_contact:
CompanyAttendance — Data Absensi
Entitas yang mencatat absensi harian karyawan termasuk lokasi GPS dan foto selfie.
Required fields:
company_id, employee_id, date, clock_in_time
CompanyAttendance.clock_in_location / clock_out_location — Koordinat GPS
Objek nested yang menyimpan koordinat GPS saat clock in/out.CompanyKPI — Penilaian Kinerja
Entitas yang menyimpan penilaian KPI karyawan per periode, termasuk metrik terbobor dan bukti pencapaian.
Required fields:
company_id, employee_id, period, metrics
CompanyKPI.metrics[] — Detail Metrik KPI
Setiap elemen array menyimpan satu metrik penilaian.
Contoh data metrics:
CompanyMember — Anggota Perusahaan
Entitas yang menghubungkan User dengan Company, menyimpan role, permission, dan data kerja.
Required fields:
company_id, user_email
CompanyMember.working_hours — Jam Kerja
CompanyMember.permissions — Hak Akses Detail
PayslipTemplate — Template Slip Gaji
Entitas yang menyimpan template untuk cetak slip gaji PDF dengan kustomisasi tampilan.
Required fields:
company_id, template_name
KPITemplate — Template Penilaian KPI
Entitas yang menyimpan template KPI reusable berdasarkan role dan departemen.
Required fields:
company_id, template_name, default_metrics
KPITemplate.default_metrics[] — Metrik Default Template
CompanyAttendanceSettings — Pengaturan Absensi
Entitas yang menyimpan konfigurasi absensi perusahaan termasuk geofence, shift, dan pengaturan lembur.
Required fields:
company_id
CompanyAttendanceSettings.locations[] — Lokasi Geofence
CompanyAttendanceSettings.shifts[] — Shift Kerja
CompanyAttendanceSettings.overtime_settings — Pengaturan Lembur
CompanyLeave — Pengajuan Cuti
Entitas yang menyimpan pengajuan cuti karyawan yang mempengaruhi hari hadir di payroll.
Required fields:
company_id, employee_id, leave_type, start_date, end_date, reason
