Commit Graph

4 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
8ee0dd2218 feat(webstatement): implementasi pemrosesan multi account statement berdasarkan stmt_sent_type
- 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
2025-07-09 17:51:57 +07:00
Daeng Deni Mardaeni
51697f017e feat(webstatement): tambahkan fitur pembuatan, penyimpanan, dan pengunduhan PDF statement
- **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>
2025-07-09 14:54:48 +07:00
Daeng Deni Mardaeni
65b846f0c7 feat(webstatement): tambahkan pengaturan ekspor dan optimasi fungsionalitas print statement
- **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>
2025-07-08 17:40:11 +07:00
Daeng Deni Mardaeni
10fcdb5ea2 feat(webstatement): tambahkan job untuk ekspor data pernyataan periode ke CSV
- 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>
2025-06-04 14:47:14 +07:00