Generated: 1 April 2026 · 210 tests, 0 failures

Test Results — LabaBersih v2

210 tests 0 failures

Setiap test = 1 skenario bisnis lengkap end-to-end. Trial balance harus balanced di setiap test.


1. Pembelian (Purchase Order)

1a. PO Cash — GRN Partial Receive PASS

PO 100 unit @ Rp 44.000 (cash) → GRN: terima 95, tolak 5 (kemasan penyok) → Stok naik 95 (bukan 100) → Lot: qty=95, cost=44.000, expiry=2026-12-31 → Jurnal: Dr. Persediaan 4.180.000 / Cr. Kas 4.180.000 → Trial Balance: BALANCED
Dr. Persediaan (13-100) Rp 4.180.000 Cr. Kas (11-100) Rp 4.180.000

Key point: Barang yang ditolak (5 unit) TIDAK masuk stok. GRN track qty_ordered vs qty_received vs qty_rejected.

1b. PO Utang — GRN + Bayar Hutang PASS

PO 50 unit @ Rp 63.000 (utang) → GRN: terima semua 50 → Jurnal receive: Dr. Persediaan / Cr. Hutang Usaha → Bayar hutang: Dr. Hutang Usaha / Cr. Kas → Trial Balance: BALANCED
-- Saat receive -- Dr. Persediaan (13-100) Rp 3.150.000 Cr. Hutang Usaha (20-100) Rp 3.150.000 -- Saat bayar -- Dr. Hutang Usaha (20-100) Rp 3.150.000 Cr. Kas (11-100) Rp 3.150.000

2. Pesanan Mengantar

2a. Mengantar COD PASS

Product Value = Rp 200.000 Estimated Pricing (ongkir) = Rp 25.000 totalHarga = 200.000 - 25.000 = Rp 175.000 (COD: PV - EP) COD Fee = Rp 15.000 (flat) → Ship: stok -2, HPP = 2 × 45.000 = Rp 90.000 → Daily Journal: Dr. Piutang 160.000 + Dr. COD Fee 15.000 / Cr. Pendapatan 175.000 → Rekon: settlement 160.000 → selesai → Trial Balance: BALANCED

Key point: COD = ongkir sudah dipotong dari totalHarga (PV - EP). Fee = flat Rp 15.000.

2b. Mengantar Transfer PASS

Product Value = Rp 200.000 Estimated Pricing (ongkir) = Rp 25.000 totalHarga = Rp 200.000 (Transfer: PV penuh, ongkir terpisah) → Ship: stok turun → Daily Journal Penjualan: Dr. Piutang / Cr. Pendapatan → Daily Journal Ongkir: Dr. Beban Ongkir Non-COD 25.000 / Cr. Saldo Mengantar 25.000 → Rekon Transfer: masuk ke Bank BCA (transferKasAccount), bukan Saldo Mengantar → Trial Balance: BALANCED
-- Jurnal ongkir (khusus Transfer Mengantar) -- Dr. Beban Ongkir Non-COD (63-100) Rp 25.000 Cr. Saldo Mengantar (11-401) Rp 25.000

Key point: Transfer ≠ COD. Ongkir terpisah. Rekon masuk ke Bank, bukan Saldo Mengantar.


3. Pesanan TikTok & Shopee

3a. TikTok — Fee 8% PASS

Gross = Rp 99.900 Fee: Admin 3% = Rp 2.997, Komisi 5% = Rp 4.995 → total 8% = Rp 7.992 Piutang NET = 99.900 - 7.992 = Rp 91.908 → Ship: HPP = Rp 45.000 → Daily Journal: Dr. Piutang TikTok Rp 91.908 Dr. Biaya Admin Rp 2.997 Dr. Biaya Komisi Rp 4.995 Cr. Pendapatan Rp 99.900 → Rekon: settlement 91.908 → selisih 0 → selesai → Trial Balance: BALANCED

3b. Shopee — Fee 5%, Selisih Negatif PASS

Gross = Rp 129.900 Estimated fee 5% → estimated net = Rp 123.405 Actual settlement = Rp 120.000 (kurang Rp 3.405) → Rekon: selisih negatif (fee lebih besar dari estimasi) → Jurnal adjustment: Dr. Akun Fee / Cr. Piutang (selisih) → Trial Balance: BALANCED

Key point: Selisih negatif = fee aktual lebih besar dari estimasi. Beban naik.

3c. TikTok COD — Escrow PASS

TikTok COD payment_status = "unpaid" (escrow) Buyer bayar via COD, tapi uang masih di TikTok. Seller belum terima → piutang, bukan kas. → Ship: status dikirim, payment tetap "unpaid" → Uang cair setelah rekonsiliasi (7-14 hari)

Key point: TikTok COD ≠ Mengantar COD. TikTok = marketplace escrow. Mengantar = COD offline.


4. Return (RTS)

4a. RTS Baik — Stok Restore PASS

Ship 3 Ayam → stok 500 → 497 RTS Baik → stok 497 → 500 (restored!) Lot consumption di-delete → HPP gak double count kalau dijual lagi
Dr. Retur Penjualan (41-100) Rp 135.000 (GROSS) Cr. Piutang TikTok (12-201) Rp 124.200 (NET) Cr. Biaya Admin (61-101) Rp 4.050 (fee reverse) Cr. Biaya Komisi (61-102) Rp 6.750 (fee reverse) Dr. Persediaan (13-100) Rp 135.000 (HPP reverse) Cr. HPP (50-100) Rp 135.000

4b. RTS Rusak — Jurnal Kerugian PASS

Ship 2 Ayam → stok turun RTS Rusak → stok TIDAK restore (barang rusak) Jurnal: Dr. Beban Kerugian Barang Rusak / Cr. Persediaan
Dr. Beban Kerugian (64-700) Rp 90.000 Cr. Persediaan (13-100) Rp 90.000

4c. RTS Hilang — Klaim Kurir PASS

Ship 1 Sapi → stok turun RTS Hilang → stok TIDAK restore (barang gak ada fisik) Jurnal: Dr. Piutang Klaim Kurir / Cr. Persediaan Nanti kalau klaim diterima: Dr. Kas / Cr. Piutang Klaim
Dr. Piutang Klaim Kurir (12-400) Rp 65.000 Cr. Persediaan (13-100) Rp 65.000

4d. Mengantar RTS — Tanpa Fee Reversal PASS

Mengantar: RTS jurnal berbeda dari TikTok/Shopee Dr. Retur = GROSS, Cr. Piutang = GROSS (sama) TIDAK ada fee reversal (karena Mengantar fee = flat, bukan % dari gross)

5. Rekonsiliasi

5a. Cocok — Selisih 0 PASS

Gross = 100.000, Fee estimasi 8% = 8.000, Net estimasi = 92.000 Settlement aktual = 92.000 Selisih = 0 → cocok! Jurnal: Dr. Kas 92.000 / Cr. Piutang 92.000

5b. Selisih Negatif — Fee Underestimated PASS

Net estimasi = 95.000 Settlement aktual = 90.000 (kurang 5.000) Selisih = -5.000 → fee lebih besar dari estimasi Jurnal: Dr. Kas 90.000 + Dr. Biaya Fee 5.000 / Cr. Piutang 95.000

5c. Selisih Positif — Fee Overestimated PASS

Net estimasi = 92.000 Settlement aktual = 95.000 (lebih 3.000) Selisih = +3.000 → fee lebih kecil dari estimasi Jurnal: Dr. Kas 95.000 / Cr. Piutang 92.000 + Cr. Biaya Fee 3.000

Summary

#Test CasePlatformStatus
1aPO Cash → GRN partial-PASS
1bPO Utang → GRN → bayar-PASS
2aMengantar CODMengantarPASS
2bMengantar Transfer + ongkirMengantarPASS
3aTikTok fee 8%TikTokPASS
3bShopee fee 5% + selisihShopeePASS
3cTikTok COD escrowTikTokPASS
4aRTS Baik → stok restoreTikTokPASS
4bRTS Rusak → kerugianTikTokPASS
4cRTS Hilang → klaim kurirShopeePASS
4dMengantar RTS (tanpa fee)MengantarPASS
5aRekon cocok (selisih 0)TikTokPASS
5bRekon selisih negatifShopeePASS
5cRekon selisih positifTikTokPASS

6. Matrix Gaps

TestStatus
Shopee COD — escrow same as TikTokPASS
TikTok cancel → reservation released, stok unchangedPASS
Shopee cancel → reservation releasedPASS
Multi-platform same day → 3 separate daily journals per storePASS

7. Boundary / Edge Cases

TestResultStatus
Amount = 0 (sample order)HPP tetap tercatat (45.000)PASS
Quantity = 1 (minimal)Stok turun 1PASS
Stok exactly enoughStok jadi 0 setelah shipPASS
Fee = 0 (no mapping)Piutang = gross, no fee linesPASS
3 produk dalam 1 orderHPP = 269.000PASS
Bundle + simple mixedHPP = 231.000 (decompose correct)PASS
Unknown SKUOrder masuk, HPP hanya item knownPASS
Decimal: 99.900 × 3%= 2.997 exact (bukan 2.996/2.998)PASS
Total fees ≤ grossFees never exceed grossPASS
Large qty 100FEFO consumes correctlyPASS
Qty 1 unit → stok correct500 → 499PASS

8. Error Paths

ScenarioExpectedStatus
Order qty > stok available:insufficient_available_stockPASS
Rekon order belum dikirim:order_not_shippedPASS
Pay PO belum received:po_not_receivedPASS
GRN confirm twice:invalid_statusPASS
RTS complete twice:already_completedPASS
RTS invalid condition:invalid_conditionPASS

Grand Total

230 tests 0 failures

CategoryTests
Unit tests (per context)196
Business cases E2E14
Matrix + Edge + Error20
Total230

Semua trial balance balanced. Semua error path handled gracefully.