Files
2026-10-20 13:16:38 +09:00

3.0 KiB
Raw Permalink Blame History

Validasi Perhitungan vs Excel

Sumber acuan: CALCULATOR CASHBACK SERUB KANTOR CABANG 22092026.xlsx (sheet COB dan CALCULATOR CASHBACK SERUBI).

Metode

  1. tests/export-excel-fixtures.ps1 membuka salinan workbook di Microsoft Excel, mengisi nominal (A6) dan jangka waktu (B6), lalu membiarkan Excel menghitung ulang. Ada 31 nominal × 5 tenor = 155 skenario, termasuk batas-batas tier (49.999.999 / 50.000.000, 250.000.000 / 250.000.001, 1.999.999.999 / 2.000.000.000, dan seterusnya). Hasilnya disimpan di tests/excel-fixtures.json.
  2. tests/validate.js menjalankan engine aplikasi (assets/js/engine.js) dengan parameter yang dibaca dari MySQL, lalu membandingkan 31 angka per skenario: cashback bruto/neto, bunga neto tiap produk, deposito, total diterima, rate, total rate, pinalti, porsi, pendapatan, dan spread.
    • Nominal rupiah harus sama sampai rupiah (selisih < Rp0,01).
    • Rate harus sama sampai 1e-9.

Cara menjalankan:

powershell -ExecutionPolicy Bypass -File tests\export-excel-fixtures.ps1   # perlu Excel
node tests\validate.js --legacy

Hasil

Yang diuji Cocok dengan Excel
Aplikasi baru (parameter dari MySQL) 4.805 / 4.805 cek (100%)
Aplikasi HTML lama 2.870 / 3.410 cek

Contoh: Rp55.000.000, 6 bulan, perorangan. Angka Excel sama persis dengan aplikasi.

Excel Aplikasi
Cashback bruto 915.963,68 915.963,68
Cashback neto 732.770,94 732.770,94
Ekuivalen per tahun 2,7016% 2,7016%
Total SIMANJA 895.510,14 895.510,14
Deposito neto 694.356 694.356
Total kewajiban pinalti 1.099.156,42 1.099.156,42

Temuan pada aplikasi HTML lama (sudah diperbaiki)

  1. Baris DEPOSITO, kolom "Bunga Neto" menampilkan bunga kotor. Salah di 140 dari 155 skenario. Contoh Rp55 jt / 6 bulan: tertulis Rp867.945, padahal bunga neto (Excel H6) Rp694.356.
  2. Bagian pinalti cashback (Excel A15:B22) tidak ada. Sekarang tampil di bagian "Bila dicairkan sebelum jatuh tempo".
  3. Pilihan "Jenis Nasabah" tidak berpengaruh. Sekarang memakai pajak cashback perorangan atau badan usaha (keduanya 20%, sesuai U85/U86).
  4. Semua parameter tertanam di kode. Sekarang semuanya ada di database dan bisa diubah lewat halaman admin.

Perhitungan cashback bruto/neto pada aplikasi lama sendiri sudah benar.

Catatan pada file Excel (tidak diubah, mohon dikonfirmasi)

  • Premi LPS dihitung penuh 0,20% tanpa melihat jangka waktu (COB!J27 = MIN(nominal; 2 M) × 0,2%), padahal premi ini bersifat tahunan. Aplikasi mengikuti Excel apa adanya.
  • Pajak cashback di COB!H8 ditulis langsung 20%, tidak merujuk ke U85/U86. Aplikasi memakai parameter per jenis nasabah. Nilainya saat ini sama.
  • Untuk tenor 1 bulan atau nominal < Rp50 jt, Excel menghasilkan #VALUE!. Aplikasi menampilkan "Tanpa cashback" beserta alasannya.
  • Parameter LPS 3,75% (U79) tidak dipakai di rumus mana pun.
  • Giro dengan nominal tepat Rp50.000.000 mendapat rate 0% (tier "≤ 50 jt"), padahal cashback mulai berlaku di nominal yang sama.