- Modifikasi method printStatementRekening untuk mendukung request_type multi_account
- Tambah method processMultiAccountStatement untuk mengambil data account berdasarkan branch_code dan stmt_sent_type
- Tambah method processSingleAccountStatement untuk memisahkan logika single account
- Implementasi GenerateMultiAccountPdfJob untuk generate PDF multiple account secara parallel
- Tambah fungsi generateAccountPdf untuk generate PDF per account dengan Browsershot
- Tambah fungsi createZipFile untuk mengompres multiple PDF menjadi satu ZIP file
- Tambah method downloadMultiAccountZip untuk download ZIP file hasil pemrosesan
- Implementasi validasi stmt_sent_type dengan support JSON array format
- Tambah logging komprehensif untuk monitoring proses multi account
- Tambah error handling dengan database transaction rollback
- Update PrintStatementLog dengan informasi target_accounts dan status pemrosesan
- Tambah rute baru untuk download ZIP file multi account
- Support untuk pemrosesan chunk account untuk optimasi memory usage
- Implementasi status tracking untuk success_count dan failed_count
- Tambah validasi keberadaan account berdasarkan kriteria yang ditentukan
- **Fitur Baru:**
- Menambahkan kemampuan untuk membuat PDF statement secara dinamis menggunakan Browsershot.
- Fitur penyimpanan otomatis PDF ke dalam local storage dengan struktur direktori berdasarkan periode dan account number.
- Menyediakan fitur unduhan langsung dari storage atau melalui preview di browser.
- Mendukung penghapusan PDF dari storage dengan log terintegrasi.
- **Perubahan pada Controller:**
- Ditambah method baru `generated` untuk membangun PDF atau tampilan HTML statement.
- Integrasi penghitungan periode saldo (`calculateSaldoPeriod`) untuk menghasilkan data laporan yang lebih akurat.
- Perubahan pada `printStatementRekening` untuk mendukung pengiriman objek statement secara penuh.
- Menambahkan method tambahan untuk preview, download, dan delete PDF langsung dari storage.
- **Validasi Permintaan:**
- Menambah validasi wajib pada `branch_code` untuk memastikan data cabang sesuai.
- Menyesuaikan logika validasi di `PrintStatementRequest` untuk mendukung input cabang dan parameter lain.
- **Cakupan Logging:**
- Meningkatkan logging pada setiap proses penting:
- Mulai dari validasi data, proses pembuatan PDF, hingga penyimpanan.
- Deteksi error secara spesifik pada setiap tahapan proses.
- Menambah log debugging untuk nama file, ukuran file, dan path penyimpanan.
- **Peningkatan pada UI:**
- Penyesuaian field `branch_code` pada form UI untuk menggantikan `branch_id` dengan validasi error yang lebih eksplisit.
- Membuat halaman baru untuk tampilan preview PDF di interface.
- **Optimisasi dan Refaktor:**
- Grouping import library untuk meningkatkan keterbacaan.
- Manajemen direktori penyimpanan PDF dipastikan berjalan dinamis dan fleksibel.
- Penghilangan redundansi logika pada proses pencarian saldo awal bulan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **Pembaruan pada `ExportStatementPeriodJob`:**
- Menambahkan atribut baru `toCsv` untuk mendukung validasi sebelum proses ekspor CSV.
- Menyesuaikan method `__construct` untuk menerima parameter tambahan `toCsv`.
- Menambahkan validasi ekspor CSV dengan conditional check pada `toCsv` sebelum menjalankan `exportToCsv`.
- Memperbaiki logika di `getTotalEntryCount` menggunakan `booking_date` untuk query lebih akurat.
- Menambahkan logging terperinci pada proses penghitungan jumlah entri untuk meningkatkan debugging.
- **Integrasi Log Print Statement:**
- Mengupdate status kolom `is_generated` pada model `PrintStatementLog` setelah entri diproses.
- Menambahkan mekanisme pembaruan data log print statement melalui validasi entry statement.
- **Peningkatan pada Controller `PrintStatementController`:**
- Memampukan proses ekspor otomatis jika statement tidak tersedia dengan metode baru `printStatementRekening`.
- Menambahkan parameter `stmt_sent_type` untuk log print pada proses pencatatan data.
- Mengimplementasikan pemrosesan period statement melalui job `ExportStatementPeriodJob`.
- **Perubahan pada UI/Blade `statements/index`:**
- Menambahkan opsi pemilihan multiple untuk tipe laporan `stmt_sent_type`.
- Mengupdate dan merapikan komponen form untuk input branch, akun, email, dan periode laporan.
- Menambahkan kolom baru `is_generated` pada tabel untuk menampilkan status log hasil pembuatan laporan.
- **Pembaruan pada Datatable dan Skrip Frontend:**
- Menambahkan render visual dengan badge untuk status `is_generated`.
- Memperbaiki dan mengoptimalkan element HTML untuk datatable termasuk pagination dan search.
- Menambahkan konfirmasi aksi dengan Ajax untuk retry pembuatan laporan jika diperlukan.
- **Optimisasi dan Refactor:**
- Menggunakan group import pada controller untuk meningkatkan keterbacaan.
- Memperbaiki alignment dan indentasi pada beberapa file blade.
- Menghapus kode yang tidak digunakan atau redundan seperti conditional unprocessed data.
Dengan perubahan ini, sistem print statement lebih fleksibel, mencatat log lebih baik, dan mendukung fitur tracking pengeluaran laporan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan **`ExportStatementPeriodJob`** untuk mendukung ekspor data pernyataan periode ke file CSV:
- Inisialisasi job dengan parameter `account_number`, `period`, `saldo`, `client`, dan `disk`.
- Menghitung tanggal mulai (`startDate`) dan tanggal akhir (`endDate`) berdasarkan periode yang diberikan.
- Log informasi eksekusi termasuk waktu mulai, rentang tanggal, dan hasil akhir.
- Menangani error saat proses berjalan dengan logging terperinci.
- Memproses data pernyataan sebelum ekspor, termasuk:
- Melakukan validasi jumlah data yang telah diproses sebelumnya.
- Jika data belum sepenuhnya diproses, menghapus data lama pada tabel `processed_statements`.
- Memproses data baru dengan mengolah entri dari tabel `StmtEntry`.
- Membuat narrative dari data transaksi menggunakan model terkait `TempFundsTransfer`, `TempStmtNarrParam`, dan `TempStmtNarrFormat`.
- Menambahkan logika untuk format tanggal transaksi dan narrasi:
- Format tanggal transaksi melalui fungsi `formatTransactionDate` dan `formatActualDate`.
- Narasi dihasilkan dari berbagai sumber, termasuk data transaksi dan parameter lainnya.
- Ekspor data ke file CSV:
- Mengatur struktur folder berdasarkan `client` dan `account_number`.
- Menghapus file lama sebelum membuat file baru untuk menghindari duplikasi.
- Membagi data menjadi chunks untuk mengurangi penggunaan memori.
- Menambahkan header CSV dengan format kolom: `NO|TRANSACTION.DATE|REFERENCE.NUMBER|TRANSACTION.AMOUNT|TRANSACTION.TYPE|DESCRIPTION|END.BALANCE|ACTUAL.DATE`.
- Optimasi proses:
- Proses data dalam batch menggunakan pagination (`chunk`) untuk efisiensi memori.
- Simpan hasil processed statement ke database sementara (`processed_statements`).
- Tambahkan log setiap entri data untuk memonitor keberhasilan proses.
- Tujuan penambahan ini:
- Mendukung proses pengolahan dan pelaporan data rekening secara terstruktur.
- Meningkatkan efisiensi penyimpanan dan akses data besar.
- Menghasilkan file CSV yang dapat digunakan sebagai dokumen untuk laporan eksternal.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>