3.0 KiB
3.0 KiB
Validasi Perhitungan vs Excel
Sumber acuan: CALCULATOR CASHBACK SERUB KANTOR CABANG 22092026.xlsx (sheet COB dan CALCULATOR CASHBACK SERUBI).
Metode
tests/export-excel-fixtures.ps1membuka 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 ditests/excel-fixtures.json.tests/validate.jsmenjalankan 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)
- 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.
- Bagian pinalti cashback (Excel A15:B22) tidak ada. Sekarang tampil di bagian "Bila dicairkan sebelum jatuh tempo".
- Pilihan "Jenis Nasabah" tidak berpengaruh. Sekarang memakai pajak cashback perorangan atau badan usaha (keduanya 20%, sesuai U85/U86).
- 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!H8ditulis 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.