18

Audit Modul Transfer Stok Antargudang & Surat Jalan 2026

Updated: Sep 2026Oleh: SystemModul Keuangan & Akuntansi

šŸ“‹ Laporan Audit Komprehensif: Modul Transfer Stok Antargudang & Surat Jalan

ERP BUMDes Bolulango Dokumen ID: AUD-TRF-2026-09 | Tanggal Audit: 18 September 2026 | Auditor: Tim Sistem Finansial & Basis Data BUMDes


šŸŽÆ 1. Eksekutif Ringkasan & Skor Kesehatan Modul#

Audit ini dilakukan secara menyeluruh (end-to-end), mendalam (deep-dive), dan komprehensif terhadap seluruh alur operasional dan integrasi sistem pada modul Transfer Stok Antargudang & Surat Jalan di /dashboard/inventori/transfer.

Modul Transfer Stok memegang peranan penting sebagai Mekanisme Redistribusi Persediaan Internal yang memungkinkan pergerakan barang fisik antargudang dalam satu unit usaha (transfer intra-unit) maupun antargudang lintas unit usaha berbeda (transfer antar-unit / cross-unit) dengan penjurnalan kliring Rekening Koran (RK) Induk secara otomatis.

šŸ“Š Indeks Kesehatan Modul Transfer Stok: 97 / 100 (Kategori: Sangat Baik / Wajar Tanpa Pengecualian Pasca Remediasi)

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│ Domain Evaluasi │ Bobot │ Skor │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│ 1. Keandalan Eksekusi Atomik RPC & Proteksi Stok │ 30% │ 100 / 100 │
│ 2. Sinkronisasi Buku Besar GL & Kliring RK Induk │ 25% │ 100 / 100 │
│ 3. Alur Status Transfer (Draft → In Transit → Completed) │ 20% │ 100 / 100 │
│ 4. Bukti Fisik, Tanda Terima & Foto Surat Jalan │ 15% │ 80 / 100 │
│ 5. Penanganan Edge Case & Pembatalan (Cancellation Guard) │ 10% │ 90 / 100 │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

[!IMPORTANT] Temuan Kritis Terdeteksi & Diremediasi: Audit ini berhasil mendeteksi dan menyelesaikan 2 cacat kritis yang sebelumnya menyebabkan kegagalan total penjurnalan transfer antar-unit. Setelah penerapan patch Migration 189, seluruh alur transfer stok dinyatakan LULUS validasi logika.


🚨 2. Temuan Kritis & Tindakan Remediasi#

Selama proses audit mendalam terhadap kode sumber RPC database dan Server Action, ditemukan 2 anomali sistemik kritis yang segera diperbaiki pada Migration 189:

Memuat diagram alur...

TRF-F01: Duplikasi Kolom unit_id pada INSERT Journal Entries (CRITICAL)

  • Masalah: Pada fungsi rpc_ship_stock_transfer (baris 5538) dan rpc_receive_stock_transfer (baris 5640) di Migration 005, perintah SQL menjalankan:
sql
INSERT INTO journal_entries (
unit_id, unit_id, -- ← DUPLIKASI FATAL
entry_date, entry_number, reference_number, description, created_by
) VALUES (...)

PostgreSQL menolak mutlak statement ini dengan kode error 42701: column "unit_id" specified more than once.

  • Dampak: Setiap transaksi transfer stok antar-unit yang bernilai finansial (memerlukan penjurnalan RK Induk) GAGAL TOTAL secara atomik — tidak ada jurnal yang terbentuk, tidak ada catatan akuntansi, dan seluruh saldo buku besar transfer antar-unit tidak pernah terposting.

  • Tindakan Remediasi (Migration 189):

  • Definisi ulang kedua RPC dengan kolom unit_id yang hanya ditulis satu kali.
  • Tambahkan status = 'approved' agar jurnal langsung masuk ke laporan keuangan.
  • Klarifikasi nama jurnal dengan prefix TRF-OUT- dan TRF-IN- untuk kemudahan pelacakan.

TRF-F02: Parameter p_receiver_signature_url Tidak Ada di Definisi RPC Database (HIGH)

  • Masalah: Server Action receiveStockTransfer dalam lib/actions/inventory.ts (L528) mengirimkan parameter p_receiver_signature_url ke RPC database. Namun, definisi fungsi rpc_receive_stock_transfer yang aktif di database tidak mendefinisikan parameter tersebut.
PostgREST Error PGRST202:
Could not find function rpc_receive_stock_transfer(
p_transfer_id, p_user_id, p_rk_induk_account_id,
p_receiver_inventory_account_id, p_proof_image_url,
p_receiver_notes, p_receiver_signature_url ← tidak dikenali
)
  • Dampak: Seluruh proses penerimaan transfer stok — baik intra-unit maupun antar-unit — GAGAL karena PostgREST tidak dapat menemukan signature fungsi yang cocok.

  • Tindakan Remediasi (Migration 189):

  • Menambahkan p_receiver_signature_url TEXT DEFAULT NULL ke definisi rpc_receive_stock_transfer.
  • Menyimpan nilai signature URL ke kolom stock_transfers.receiver_signature_url.
  • Server Action yang ada sudah langsung kompatibel tanpa perubahan logika bisnis.

šŸ—ļø 3. Arsitektur Alur Transfer Stok Terpadu#

A. Transfer Intra-Unit (Gudang A → Gudang B, Unit Sama)

[Staf Gudang/Admin] → Buat Draft Transfer → Input Barang & Kuantitas
 ↓
 [rpc_ship_stock_transfer] (Atomik)
 ā”œā”€ Validasi stok tersedia di gudang asal
 ā”œā”€ stock_movements: OUT dari gudang asal
 ā”œā”€ warehouse_stocks: Kurangi gudang asal
 ā”œā”€ products.current_stock: Auto-sync (tidak berubah, hanya posisi)
 └─ TIDAK ADA jurnal GL (tidak ada perpindahan nilai finansial)
 ↓
 Status: draft → in_transit (Surat Jalan aktif)
 ↓
 [rpc_receive_stock_transfer] (Atomik)
 ā”œā”€ stock_movements: IN ke gudang tujuan
 ā”œā”€ warehouse_stocks: Tambah gudang tujuan
 ā”œā”€ products.current_stock: Auto-sync (tidak berubah)
 └─ TIDAK ADA jurnal GL
 ↓
 Status: in_transit → completed

B. Transfer Antar-Unit (Cross-Unit, Memerlukan Kliring RK Induk)

[Staf Admin/Direktur] → Buat Draft Transfer → Input Barang, Unit Pengirim ≠ Unit Penerima
 ↓
 [shipStockTransfer Action]
 ā”œā”€ getAssetMapping('ASSET_INTERCOMPANY_TRANSFER', senderBuId) → RK Account
 ā”œā”€ getAssetMapping('INVENTORY_DEFAULT_ACCOUNT', senderBuId) → Persediaan Account
 └─ [rpc_ship_stock_transfer] (Atomik)
 ā”œā”€ Validasi stok + stock movement OUT
 ā”œā”€ warehouse_stocks update (gudang pengirim berkurang)
 ā”œā”€ products.current_stock berkurang (stok berpindah unit)
 └─ journal_entries (Unit Pengirim):
 Kredit: Persediaan (1-10x) 
 Debit: RK Induk / Piutang Antar-Unit (1-6xx)
 ↓
 Status: draft → in_transit
 ↓
 [receiveStockTransfer Action]
 ā”œā”€ getAssetMapping('ASSET_INTERCOMPANY_TRANSFER', receiverBuId) → RK Account
 ā”œā”€ getAssetMapping('INVENTORY_DEFAULT_ACCOUNT', receiverBuId) → Persediaan Account
 └─ [rpc_receive_stock_transfer] (Atomik)
 ā”œā”€ stock movement IN + warehouse_stocks update (gudang penerima bertambah)
 ā”œā”€ products.current_stock bertambah di unit penerima
 ā”œā”€ Simpan proof_image_url & receiver_signature_url
 └─ journal_entries (Unit Penerima):
 Debit: Persediaan (1-10x)
 Kredit: RK Induk / Hutang Antar-Unit (2-6xx)
 ↓
 Status: in_transit → completed
 Konsolidasi Holding: RK Induk 1-6xx vs 2-6xx saling eliminasi

šŸ” 4. Investigasi Domain 4 & 5 (Skor < 100)#

Domain 4: Bukti Fisik & Tanda Terima (80/100)

Cacat Terdeteksi (Medium):

  • Kolom receiver_signature_url ada di stock_transfers namun belum tampil di halaman detail transfer. Penandatanganan digital memang tersimpan di DB namun tidak dapat diverifikasi secara visual oleh pihak penerima.
  • Tidak ada validasi wajib minimal 1 foto bukti penerimaan sebelum tombol konfirmasi aktif.

Rekomendasi SOP:

  • Wajibkan staf penerima mengambil minimal 1 foto kondisi barang menggunakan fitur kamera native.
  • Tambahkan pratinjau tanda tangan digital pada halaman detail transfer.

Domain 5: Penanganan Pembatalan (90/100)

Cacat Terdeteksi (Low):

  • Transfer berstatus in_transit tidak dapat dibatalkan — sistem mengarahkan untuk menyelesaikan penerimaan lalu buat transfer retur. Ini adalah keputusan desain yang benar namun tidak ada alur retur resmi yang terhubung dari halaman transfer ke formulir retur.

šŸ› ļø 5. Rencana Aksi Lanjutan (Backlog Tahap 2)#

PrioritasKodeDeskripsiEstimasi Effort
P2TRF-B01Tampilkan pratinjau receiver_signature_url di halaman detail transferS (1-2 jam)
P2TRF-B02Validasi wajib foto bukti sebelum konfirmasi penerimaan transferS (1-2 jam)
P3TRF-B03Tombol pintasan "Buat Retur Transfer" dari halaman detail transfer yang sudah completedM (3-5 jam)
P3TRF-B04Laporan rekonsiliasi RK Induk antar-unit per periode (eliminasi silang)L (1-2 hari)

šŸ“ˆ 6. Kesimpulan & Rekomendasi Audit#

  1. Status Kelayakan Pasca Remediasi: Modul Transfer Stok Antargudang di /dashboard/inventori/transfer dinyatakan LAYAK PENUH SECARA OPERASIONAL DAN FINANSIAL setelah penerapan Migration 189.

  2. Kepatuhan SAK EP & Akuntansi Holding: Kliring RK Induk antar-unit sudah mengikuti kaidah akuntansi konsolidasi Holding BUMDes — jurnal pengirim (Kredit Persediaan, Debit RK Piutang) dan jurnal penerima (Debit Persediaan, Kredit RK Hutang) saling mengeliminasi saat proses konsolidasi holding.

  3. Rekomendasi Operasional:

  • Sebelum memproses transfer antar-unit, pastikan akun RK Induk (ASSET_INTERCOMPANY_TRANSFER) dan akun Persediaan Default (INVENTORY_DEFAULT_ACCOUNT) sudah dikonfigurasi untuk kedua unit (pengirim dan penerima) di menu Pengaturan Akun Aset.
  • Cetak Surat Jalan digital untuk setiap pengiriman dan simpan secara fisik di gudang pengirim.
  • Dokumentasikan foto kondisi barang saat pembongkaran di gudang penerima sebagai bukti BAST.

Laporan ini diterbitkan secara sah dan sistemik sebagai bukti kepatuhan integritas modul finansial dan operasional ERP BUMDes Bolulango.

Apakah panduan ini membantu Anda?