feat(webstatement): tambahkan fitur ekspor statement rekening
- Menambahkan fungsi `printStatementRekening` pada `WebstatementController` untuk mendukung ekspor statement rekening: - Mengambil saldo rekening berdasarkan `account_number` dan `period`. - Melakukan validasi input seperti `accountNumber`, `period`, dan `clientName`. - Menambah log proses ekspor, termasuk saat fungsi dijalankan, keberhasilan pengiriman job, dan error jika terjadi. - Mengantrekan job `ExportStatementPeriodJob` dengan parameter seperti `account_number`, `period`, `balance`, dan `client_name`. - Menangani error dengan logging detail kegagalan ekspor dan memberikan respon yang sesuai. - Memperbarui rute pada file `web.php`: - Menambahkan endpoint baru `/debug/test-statement` untuk debugging ekspor statement menggunakan controller `WebstatementController`. - Tujuan perubahan ini: - Mendukung proses ekspor data statement rekening secara terstruktur. - Memberikan kemudahan debugging dan pelacakan proses ekspor. - Memastikan fleksibilitas dalam pengelolaan saldo dan data rekening. Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
@@ -140,4 +140,66 @@
|
|||||||
|
|
||||||
return $accountBalance->actual_balance ?? 0;
|
return $accountBalance->actual_balance ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function printStatementRekening() {
|
||||||
|
$accountNumber = '1234567890';
|
||||||
|
$period = '202505';
|
||||||
|
$balance = AccountBalance::where('account_number', $accountNumber)
|
||||||
|
->when($period === '202505', function($query) {
|
||||||
|
return $query->where('period', '>=', '20250512')
|
||||||
|
->orderBy('period', 'asc');
|
||||||
|
}, function($query) use ($period) {
|
||||||
|
// Get balance from last day of previous month
|
||||||
|
$firstDayOfMonth = Carbon::createFromFormat('Ym', $period)->startOfMonth();
|
||||||
|
$lastDayPrevMonth = $firstDayOfMonth->copy()->subDay()->format('Ymd');
|
||||||
|
return $query->where('period', $lastDayPrevMonth);
|
||||||
|
})
|
||||||
|
->first()
|
||||||
|
->actual_balance ?? '0.00';
|
||||||
|
$clientName = 'client1';
|
||||||
|
|
||||||
|
try {
|
||||||
|
\Log::info("Starting statement export for account: {$accountNumber}, period: {$period}, client: {$clientName}");
|
||||||
|
|
||||||
|
// Validate inputs
|
||||||
|
if (empty($accountNumber) || empty($period) || empty($clientName)) {
|
||||||
|
throw new \Exception('Required parameters missing');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dispatch the job
|
||||||
|
$job = ExportStatementPeriodJob::dispatch($accountNumber, $period, $balance, $clientName);
|
||||||
|
|
||||||
|
\Log::info("Statement export job dispatched successfully", [
|
||||||
|
'job_id' => $job->job_id ?? null,
|
||||||
|
'account' => $accountNumber,
|
||||||
|
'period' => $period,
|
||||||
|
'client' => $clientName
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'success' => true,
|
||||||
|
'message' => 'Statement export job queued successfully',
|
||||||
|
'data' => [
|
||||||
|
'job_id' => $job->job_id ?? null,
|
||||||
|
'account_number' => $accountNumber,
|
||||||
|
'period' => $period,
|
||||||
|
'client_name' => $clientName
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
\Log::error("Failed to export statement", [
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
'account' => $accountNumber,
|
||||||
|
'period' => $period
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'success' => false,
|
||||||
|
'message' => 'Failed to queue statement export job',
|
||||||
|
'error' => $e->getMessage()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,9 @@ Route::get('biaya-kartu', [SyncLogsController::class, 'index'])->name('biaya-kar
|
|||||||
Route::get('/stmt-entries/{accountNumber}', [MigrasiController::class, 'getStmtEntryByAccount']);
|
Route::get('/stmt-entries/{accountNumber}', [MigrasiController::class, 'getStmtEntryByAccount']);
|
||||||
Route::get('/stmt-export-csv', [WebstatementController::class, 'index'])->name('webstatement.index');
|
Route::get('/stmt-export-csv', [WebstatementController::class, 'index'])->name('webstatement.index');
|
||||||
|
|
||||||
|
|
||||||
Route::prefix('debug')->group(function () {
|
Route::prefix('debug')->group(function () {
|
||||||
|
Route::get('/test-statement',[WebstatementController::class,'index'])->name('webstatement.test');
|
||||||
Route::post('/statement', [DebugStatementController::class, 'debugStatement'])->name('debug.statement');
|
Route::post('/statement', [DebugStatementController::class, 'debugStatement'])->name('debug.statement');
|
||||||
Route::get('/statements', [DebugStatementController::class, 'listStatements'])->name('debug.statements.list');
|
Route::get('/statements', [DebugStatementController::class, 'listStatements'])->name('debug.statements.list');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user