==================================================================================================== LAPORAN TEMUAN REKONSILIASI BKU KB & TK DAN PENYEBAB PENGELUARAN DB TIDAK TERSINKRON Tanggal Analisis: 08 September 2026 File Referensi : BKU KB & TK 2025-2026 - Copy.xlsx Database : pcalirsyadpwt_accounting (Unit 12 - KB & TK, Akun: 110101 & 110205) API Sumber : Sub-Keu API (https://sub-keu.alirsyadpwt.sch.id/) ==================================================================================================== ---------------------------------------------------------------------------------------------------- BAGIAN 1: HASIL REKONSILIASI EXCEL VS DATABASE ACCOUNTING ---------------------------------------------------------------------------------------------------- 1. Saldo Awal (01 Juli 2025): - Excel (Sheet JUL25 Baris 11) : Rp 35.067.379,78 - Database (Akun BSI TK 110205) : Rp 35.067.379,78 - Status : MATCH 100% (Sama persis). 2. Dana Dropping dari Yayasan (Juli 2025 - Juni 2026): - Excel : Rp 733.161.034,00 - Database : Rp 733.161.034,00 - Status : MATCH 100% (Semua mutasi dropping yayasan via TRF-... tercatat). 3. Total Pengeluaran Kas Operasional Unit: - Excel : Rp 1.462.787.762,02 - Database : Rp 46.170.000,00 (Hanya pengembalian bon di Mei 2026) - Status : BELUM TERCATAT (Pengeluaran kas operasional riil di DB = Rp 0). 4. Saldo Kas Akhir (30 Juni 2026): - Excel : Rp 17.453.371,52 (Bank BSI: Rp 2.965.471,52 | Kas Tunai: Rp 14.487.900,00) - Database : Rp 768.228.413,78 - Selisih : -Rp 750.775.042,26 (Saldo DB membengkak karena uang masuk diakui terus tapi pengeluaran tidak pernah dicatat). TABEL RINCIAN PER BULAN: +----------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ | Bulan | Saldo Awal (Excel) | Penerimaan Excel | Pengeluaran Excel | Saldo Akhir Excel | Saldo Akhir DB | +----------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ | Jul 2025 | Rp 35.067.379,78 | Rp 64.302.949,52 | Rp 19.846.239,90 | Rp 79.524.089,40 | Rp 99.357.379,78 | | Agu 2025 | Rp 79.524.089,40 | Rp 347.662.196,32 | Rp 124.721.951,66 | Rp 302.464.334,06 | Rp 363.505.067,78 | | Sep 2025 | Rp 302.464.334,06 | Rp 121.919.666,24 | Rp 131.126.183,25 | Rp 293.257.817,05 | Rp 435.668.067,78 | | Okt 2025 | Rp 293.257.817,05 | Rp 70.708.769,29 | Rp 65.348.403,86 | Rp 298.618.182,48 | Rp 471.316.567,78 | | Nov 2025 | Rp 298.618.182,48 | Rp 93.817.293,71 | Rp 139.086.408,74 | Rp 253.349.067,45 | Rp 515.578.567,78 | | Des 2025 | Rp 253.349.067,45 | Rp 136.542.851,65 | Rp 152.863.670,33 | Rp 237.028.248,77 | Rp 553.928.567,78 | | Jan 2026 | Rp 237.028.248,77 | Rp 61.038.076,57 | Rp 135.145.815,31 | Rp 162.920.510,03 | Rp 553.928.567,78 | | Feb 2026 | Rp 162.920.510,03 | Rp 130.549.616,49 | Rp 165.213.563,30 | Rp 128.256.563,22 | Rp 600.098.567,78 | | Mar 2026 | Rp 128.256.563,22 | Rp 25.768.621,71 | Rp 74.570.524,34 | Rp 79.454.660,59 | Rp 600.098.567,78 | | Apr 2026 | Rp 79.454.660,59 | Rp 107.517.726,00 | Rp 102.527.517,20 | Rp 84.444.869,39 | Rp 651.613.207,78 | | Mei 2026 | Rp 84.444.869,39 | Rp 116.623.962,12 | Rp 146.379.406,22 | Rp 54.689.425,29 | Rp 692.064.138,78 | | Jun 2026 | Rp 54.689.425,29 | Rp 168.746.614,04 | Rp 205.982.667,81 | Rp 17.453.371,52 | Rp 768.228.413,78 | +----------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ ---------------------------------------------------------------------------------------------------- BAGIAN 2: STATUS DATA DI API SUB-KEU ---------------------------------------------------------------------------------------------------- 1. Data pengeluaran riil Unit KB/TK sebenarnya ADA dan LENGKAP di server Sub-Keu! Endpoint: sync-rincianrekaplaporan.php Total Baris untuk Unit 12 (KB/TK): 676 baris rincian nota. 2. Contoh Bukti Otentik (Bulan Juli 2025): - Terdapat 38 baris nota di API Sub-Keu dengan Total Rp 19.821.150,00. - Angka ini 100% SAMA PERSIS dengan jumlah penutupan pengeluaran riil di Sheet JUL25 Excel! - Contoh data: * Tanggal : 2025-07-01 | No Bukti: JV-KB/TK-7-1 | Akun: 553100 | Nominal: Rp 326.000 (Biaya Lain-lain) * Tanggal : 2025-07-02 | No Bukti: JV-KB/TK-7-2 | Akun: 530801 | Nominal: Rp 982.350 (Internet) * Tanggal : 2025-07-02 | No Bukti: JV-KB/TK-7-3 | Akun: 530802 | Nominal: Rp 3.747.250 (Listrik) ---------------------------------------------------------------------------------------------------- BAGIAN 3: MENGAPA PENGELUARAN TIDAK MASUK / TIDAK TERSINKRON DI DATABASE ACCOUNTING? ---------------------------------------------------------------------------------------------------- Ditemukan 4 penyebab teknis utama pada alur sinkronisasi: PENYEBAB 1: Auto-fetch Sinkronisasi Realisasi Salah Memanggil Endpoint API - Lokasi: app/Http/Controllers/Yayasan/Transaksi/RealisasiAnggaranController.php (baris 1064-1085). - Masalah: Saat sinkronisasi dipicu otomatis / harian tanpa warmup parameter, controller hanya memanggil 'sync-rekaplaporan.php' (ringkasan 2.155 baris gelondongan program), BUKAN 'sync-rincianrekaplaporan.php' (10.814 baris nota/rincian riil). - Akibat: Data harian per nota dan bukti voucher tidak pernah masuk ke antrean sinkronisasi. PENYEBAB 2: Pengecekan Delta Mengabaikan Pembuatan Jurnal Entry (abs($delta) > 0.0001) - Lokasi: app/Http/Controllers/Yayasan/Transaksi/RealisasiAnggaranController.php (baris 1357). - Masalah: Jurnal entry kas (Debit Beban, Kredit Kas) hanya dibuat JIKA nilai nominal baru berbeda dengan nilai lama: $delta = $newRealisasi - $oldRealisasi; if (abs($delta) > 0.0001) { ... buat jurnal_entry & kurangi saldo kas ... } - Pada database dump/restore, kolom 'nominal_realisasi' di tabel 'detail_transaksi' sudah terisi angka dari proses masa lalu, TETAPI baris 'jurnal_entry'-nya kosong/terhapus. - Karena nominal baru dari API sama dengan nominal lama di DB, nilai $delta = 0! - Akibat: Sistem menganggap "tidak ada perubahan", sehingga baris 'jurnal_entry' TIDAK PERNAH DIBUAT. Karena laporan BKU dan Dashboard menghitung mutasi dari tabel 'jurnal_entry', maka pengeluaran di BKU tetap terbaca Rp 0. PENYEBAB 3: Ketiadaan Lookup Metadata untuk Baris yang Belum Ada Induknya (Kasus Juli 2025) - Pada baris rincian API Sub-Keu, tidak ada field 'unit_id' langsung, melainkan mengandalkan 'rkas_id'. - Jika baris lokal 'detail_transaksi' belum ada (seperti bulan Juli 2025 yang kemarin transaksi grupnya dibersihkan akibat duplikasi), fungsi autoCreateDetailFromRkasHeader() mencari file: storage/app/sync/rkas_headers_lookup.json - File tersebut TIDAK ADA di server (False). - Akibat: Sistem menolak baris tersebut dan mencatat log "SKIP remote row karena tidak ada kode_unit/kode_akun". PENYEBAB 4: Perintah Import Excel (bku:import-excel) Belum Menulis Jurnal Entry - File: app/Console/Commands/ImportBkuExcelCommand.php. - Perintah ini hanya membuat baris di tabel 'transaksi' dan 'detail_transaksi', tetapi TIDAK membuat baris di 'jurnal_entry'. Sehingga saat diimport pun, BKU tetap tidak berubah. ---------------------------------------------------------------------------------------------------- BAGIAN 4: REKOMENDASI SOLUSI ---------------------------------------------------------------------------------------------------- 1. Perbaiki Logika di RealisasiAnggaranController.php: Tambahkan kondisi: jika nominal_realisasi > 0 DAN jurnal_entry untuk transaksi_detail_id tersebut masih 0 (belum ada), maka sistem WAJIB membuat jurnal_entry (tidak boleh diskip meskipun delta == 0). 2. Generate File Header Lookup RKAS: Buat file storage/app/sync/rkas_headers_lookup.json dari master RKAS agar rincian baru dari API dapat dipetakan ke unit dan akun yang tepat. 3. Jalankan Sinkronisasi Penuh Rincian Nota: Gunakan data dari 'sync-rincianrekaplaporan.php' agar seluruh nota harian masuk lengkap ke BKU. 4. Alternatif Sempurnakan Import BKU Excel: Perbarui command 'bku:import-excel' agar langsung membentuk jurnal_entry lengkap untuk akun 110205 dan 110101, sehingga BKU langsung 100% klop dengan Excel seketika. ====================================================================================================