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
This commit is contained in:
Daeng Deni Mardaeni
2025-07-09 17:51:57 +07:00
parent 51697f017e
commit 8ee0dd2218
5 changed files with 620 additions and 24 deletions

View File

@@ -116,8 +116,19 @@ Route::get('migrasi', [MigrasiController::class, 'index'])->name('migrasi.index'
Route::get('biaya-kartu', [SyncLogsController::class, 'index'])->name('biaya-kartu.index');
Route::get('/stmt-entries/{accountNumber}', [MigrasiController::class, 'getStmtEntryByAccount']);
Route::get('/stmt-entries/{accountNumber}', [PrintStatementController::class, 'generated']);
Route::get('/stmt-export-csv', [WebstatementController::class, 'index'])->name('webstatement.index');
// Route untuk generate PDF
Route::get('/statements/{norek}/pdf/{period?}', [PrintStatementController::class, 'generated'])
->defaults('format', 'pdf')
->name('statements.pdf');
// Route untuk preview PDF
Route::get('/statements/{norek}/preview/{period?}', [PrintStatementController::class, 'previewPdf'])
->name('statements.preview');
Route::prefix('debug')->group(function () {
Route::get('/test-statement',[WebstatementController::class,'printStatementRekening'])->name('webstatement.test');