Keunggulan Menu: Hutang & Piutang Pihak Ketiga
Tier 3 — Keunggulan-keunggulan Booku yang muncul saat user memakai menu Hutang Pihak Ketiga dan Piutang Pihak Ketiga.
Deskripsi Menu
Hutang Pihak Ketiga dan Piutang Pihak Ketiga adalah modul untuk mencatat hutang/piutang kepada/dari pihak ketiga — yaitu pihak yang bukan bank, leasing, karyawan, pemegang saham, atau afiliasi. Contoh: pinjaman dari kerabat pemilik, hutang ke vendor non-rutin, piutang ke kontraktor lepas, dll.
Modul ini bagian dari kategorisasi hutang/piutang Booku yang dipisah berdasarkan jenis counterparty — beda dengan aplikasi lain yang umumnya pakai 1 modul “Hutang”/“Piutang” generic.
Lokasi sidebar:
- Tahun Buku NORMAL: submenu Buku Pengawasan → Hutang/Piutang Pihak Ketiga
- Tahun Buku LAMPAU: submenu Data Awal → Hutang/Piutang Pihak Ketiga (input saldo akhir dari tahun sebelumnya)
Daftar Keunggulan yang Muncul di Menu Ini
| # | Keunggulan | Tagline Singkat | Tier 2 Terkait |
|---|---|---|---|
| 1 | Kategorisasi hutang/piutang berbasis counterparty | Bukan 1 ember generic — tiap jenis mitra punya modul sendiri | #08 |
| 2 | Bar Saldo dengan reconciliation List vs COA realtime | Selisih langsung terlihat, tidak perlu rekonsiliasi manual | #01 |
| 3 | Pembebanan Biaya Admin 3 opsi dengan jurnal otomatis | Diganti / Dipotong / Ditambahkan — sistem yang hitung, user tinggal pilih | #02 |
| 4 | Cross-Modul Atomic Posting | Tombol Posting jurnalkan transaksi bank+master sekaligus, tanpa risiko data setengah jadi | #01, #02 |
| 5 | UI Dinamis Kontekstual | Field bank, Pembebanan, dan Jatuh Tempo muncul/sembunyi sesuai konteks | #10 |
| 6 | Multi-user safe | Dua user input bersamaan tetap dapat nomor unik tanpa konflik | #06 |
Detail per Keunggulan
1. Kategorisasi Hutang/Piutang Berbasis Counterparty
Masalah di aplikasi lain: Aplikasi akuntansi umum biasanya pakai 1 modul “Hutang” / “Piutang” generic. User harus tag manual via “kategori counterparty” atau pakai sub-akun COA. Hasilnya: laporan saldo per jenis counterparty butuh filter manual, sering tidak akurat.
Solusi Booku: Booku punya 6+ modul tracking hutang/piutang yang dipisah berdasarkan jenis counterparty, masing-masing dengan COA terpisah & flow input yang spesifik:
| Modul | Counterparty | KodeTautan COA |
|---|---|---|
| Hutang Usaha | Vendor/Supplier rutin | 21100-an |
| Hutang/Piutang Bank/Leasing | Lembaga keuangan | 21200-an |
| Hutang/Piutang Pihak Ketiga | Pihak lain (non-formal, non-afiliasi) | 21802 / 11504 |
| Hutang/Piutang Karyawan | Karyawan | 21801 / 11502 |
| Hutang/Piutang Afiliasi | Perusahaan grup | 25100 / 11503 |
| Hutang/Piutang Pemegang Saham | Owner / shareholder | 21803 / 11505 |
| Hutang/Piutang Dividen | Dividen yang belum dibayar | — |
Hasilnya: user langsung tahu berapa hutang ke pihak ketiga, berapa ke karyawan, dll. tanpa perlu filter manual. Reporting saldo per counterparty otomatis ter-segregasi.
📄 Cross-ref: #08 Simple for User
2. Bar Saldo dengan Reconciliation List vs COA Realtime
Setiap halaman HPK/PPK punya Bar Saldo di atas tabel yang menampilkan:
| Angle | Penjelasan |
|---|---|
| Saldo (List) | Akumulasi saldo dari semua record di tabel — sumber: data master Pengawasan Hutang/Piutang |
| Saldo (COA) + AJP | Saldo COA Hutang/Piutang dari jurnal tbl_transaksi (tambah AJP saat NORMAL) |
| Selisih | List − (COA + AJP), ideal = 0 → warna merah kalau ≠ 0 |
User langsung lihat apakah catatan individu (list) cocok dengan saldo akuntansi (COA). Kalau ada selisih, biasanya ada record yang belum dijurnal, jurnal manual yang tidak match, atau data master yang terhapus secara tidak sengaja.
Implementation: helper terpusat _coaService.GetCoaSaldoAsync(KodeTautanCOA_*) yang juga dipakai dashboard Validasi Saldo Awal — single source of truth untuk perhitungan saldo COA. Tidak ada caching stale.
📄 Cross-ref: #01 Realtime Financial Accuracy
3. Pembebanan Biaya Admin 3 Opsi dengan Jurnal Otomatis
Saat input Hutang Pihak Ketiga via Bank, user bisa pilih cara pembebanan biaya admin bank:
| Pembebanan | Apa yang terjadi | Contoh (mutasi Rp 10jt, BiayaAdmin Rp 50rb) |
|---|---|---|
| Dipotong | Bank potong biaya dari pencairan | Perusahaan terima Rp 9.950.000; Pokok hutang tetap Rp 10jt; selisih Rp 50rb diakui sebagai biaya bank |
| Ditambahkan | Biaya admin ditambahkan ke pokok hutang | Perusahaan terima Rp 10jt penuh; Pokok hutang naik jadi Rp 10.050.000; biaya admin di-amortisasi sebagai bagian hutang |
| Diganti | Biaya admin dipindahkan ke COA Hutang umum (bukan ke pokok individual) | Perusahaan terima Rp 10jt penuh; Pokok hutang individu tetap Rp 10jt; biaya admin masuk sebagai kredit ke COA Hutang umum (menambah saldo agregat tanpa menambah pokok per-record) |
User cukup pilih opsi — sistem yang generate jurnal yang benar untuk setiap kasus (multi-line jurnal: Debet Bank, Debet Biaya, Kredit Hutang, dengan komposisi berbeda per opsi).
Helper terpusat perhitunganValueBank di frontend menjamin perhitungan SaldoAwal/JumlahTransfer/TotalBank konsisten dengan jurnal yang dihasilkan backend. Mirror dengan logika Booku Lama (Sub Perhitungan() di wpfWin_InputHutangPiutangPihakKetiga.xaml.vb).
📄 Cross-ref: #02 Automatic Everything
4. Cross-Modul Atomic Posting
Masalah klasik di aplikasi akuntansi: Pencairan hutang/piutang melibatkan 2 tabel: tabel master hutang + tabel jurnal/bukti transaksi. Kalau salah satu gagal disimpan (mis. koneksi terputus), data jadi inconsistent: master ter-update tapi jurnal hilang (atau sebaliknya).
Solusi Booku:
Tombol Posting di context menu HPK/PPK menjurnalkan pencairan via Bukti Penerimaan (HPK) atau Bukti Pengeluaran (PPK) dalam single atomic transaction (SaveChangesAsync tunggal). Implementasi:
- Interface
IHutangPihakKetigaPostingOps/IPiutangPihakKetigaPostingOps— shareDbContextantar service - Method
MarkAsPostedAsync— track perubahan saja, tidak callSaveChangesAsyncsendiri BuktiPenerimaanService.CreateAsync/BuktiPengeluaranService.CreateAsync— satu-satunya callerSaveChangesAsync
Hasilnya: master HPK (update NomorJV) + entry Bukti Penerimaan + jurnal lines — semua atau tidak sama sekali. Tidak ada partial commit.
📄 Cross-ref: #01 Realtime Accuracy, #02 Automatic Everything
5. UI Dinamis Kontekstual
Form Input HPK/PPK menampilkan/menyembunyikan field secara otomatis berdasarkan pilihan user, mirror dinamisasi Booku Lama:
| Konteks | Field yang muncul |
|---|---|
| Tahun LAMPAU (Data Awal) | Tidak ada Sarana Pencairan & Group Box Bank — saldo dicatat manual |
| Tahun NORMAL + Sarana Pencairan = Bank | Group Box Bank muncul: Biaya Admin, Ditanggung Oleh, Pembebanan, Jumlah Transfer, Total Bank |
| BiayaAdmin = 0 | Ditanggung Oleh & Pembebanan disabled |
| DitanggungOleh = Perusahaan | Pembebanan muncul (3 opsi via helper terpusat pembebananSelectOptions) |
| DitanggungOleh = Lawan Transaksi | Pembebanan disembunyikan (tidak relevan) |
| Checkbox “Ada Jatuh Tempo” tidak dicentang | DatePicker Tanggal Jatuh Tempo disabled & dikosongkan |
User tidak perlu paham kombinasi mana yang valid — sistem otomatis tampilkan field yang sesuai. Mirror persis dengan layout Booku Lama (wpfWin_InputHutangPiutangPihakKetiga.xaml).
📄 Cross-ref: #10 UI Dinamis Kontekstual
6. Multi-User Safe
Booku Lama desktop single-user — generate nomor dokumen pakai MAX(Nomor_ID) + 1 aman tanpa locking. Booku V2 (SaaS multi-tenant) butuh proteksi tambahan karena 2 user bisa input bersamaan.
Implementasi V2:
NomorIDdi-generate aplikasi (bukan auto-increment MySQL) →ValueGeneratedNever()di EF- Pattern retry exponential backoff + jitter: 200ms / 400ms / 800ms (± random jitter) max 3 retry
- Generate nomor di dalam retry loop — re-query
MAX + 1setiap retry untuk dapat nomor segar - Invariant
NomorID == suffix Nomor_BPHPK/Nomor_BPPPKdipertahankan
Hasilnya: 2 user input bersamaan tetap dapat nomor unik berurutan, tanpa user perlu refresh manual atau lihat error duplicate key.
Pola ini mengikuti pre-approved pattern di CLAUDE.md (“Concurrency Handling”) dan adoption-nya konsisten dengan POPembelianService.cs.
📄 Cross-ref: #06 Multi-User LAN & Internet
Nilai Jual untuk User
“Catat hutang ke siapapun yang bukan bank/karyawan/afiliasi — lengkap dengan dinamisasi pembebanan biaya admin, atomic posting, dan reconciliation List vs COA dalam 1 layar.”
Modul HPK/PPK adalah contoh kategorisasi mendalam Booku — bukan sekadar “Hutang generic” yang user harus tag manual, melainkan modul spesifik dengan flow & COA yang sudah disiapkan untuk kasus bisnis nyata (pinjaman dari kerabat pemilik, vendor non-rutin, kontraktor lepas, dll.).
Dokumentasi Terkait
| Dokumen | Relevansi |
|---|---|
hutang-piutang-afiliasi.md | Modul sejenis untuk counterparty Afiliasi |
validasi-saldo-awal.md | Dashboard reconciliation lintas modul (HPK/PPK ter-cover) |
Terakhir diperbarui: 07-05-2026 (file baru — Tier 3 untuk Hutang & Piutang Pihak Ketiga)