From e5f3a6737459965194aa2fa5350486c1003e65d0 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 4 Jun 2025 15:20:14 +0700 Subject: [PATCH] feat(webstatement): tambahkan command untuk ekspor pernyataan rekening berdasarkan periode - Menambahkan command baru `webstatement:export-period-statements`: - Mendukung opsi parameter `--account_number` dan `--period` untuk menentukan rekening dan periode ekspor. - Memproses data pernyataan rekening dengan memanggil fungsi `printStatementRekening` pada `WebstatementController`. - Menampilkan log proses, termasuk jumlah job ekspor yang berhasil diajukan dan pesan error jika terjadi. - Memperbarui fungsi `printStatementRekening` di `WebstatementController`: - Menambahkan parameter input `$accountNumber` dan `$period` untuk mendukung multi-periode secara dinamis. - Menyesuaikan periode default ke bulan dan tahun saat ini jika parameter tidak disediakan. - Memvalidasi dan mengambil data saldo berdasarkan `account_number` dan `period`. - Tujuan pembaruan ini: - Mendukung efisiensi proses ekspor data rekening dalam periode tertentu. - Memberikan fleksibilitas lebih dalam command-line operasi pengolahan data pernyataan. - Menyediakan feedback proses yang jelas kepada pengguna, baik sukses maupun error. Signed-off-by: Daeng Deni Mardaeni --- app/Console/ExportPeriodStatements.php | 57 +++++++++++++++++++ .../Controllers/WebstatementController.php | 13 +---- 2 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 app/Console/ExportPeriodStatements.php diff --git a/app/Console/ExportPeriodStatements.php b/app/Console/ExportPeriodStatements.php new file mode 100644 index 0000000..d790989 --- /dev/null +++ b/app/Console/ExportPeriodStatements.php @@ -0,0 +1,57 @@ +option('account_number'); + $period = $this->option('period'); + + $this->info('Starting period statement export process...'); + + + try { + $controller = app(WebstatementController::class); + $response = $controller->printStatementRekening($accountNumber, $period); + + $responseData = json_decode($response->getContent(), true); + $this->info($responseData['message']); + + // Display summary of jobs queued + $jobCount = count($responseData['jobs'] ?? []); + $this->info("Successfully queued {$jobCount} statement export jobs"); + + return Command::SUCCESS; + } catch (Exception $e) { + $this->error('Error exporting statements: ' . $e->getMessage()); + return Command::FAILURE; + } + } + } diff --git a/app/Http/Controllers/WebstatementController.php b/app/Http/Controllers/WebstatementController.php index 25ffef1..803f028 100644 --- a/app/Http/Controllers/WebstatementController.php +++ b/app/Http/Controllers/WebstatementController.php @@ -5,15 +5,9 @@ use App\Http\Controllers\Controller; use Carbon\Carbon; use Illuminate\Contracts\Bus\Dispatcher; - use Illuminate\Http\Request; - use Illuminate\Support\Facades\DB; - use Illuminate\Support\Facades\Storage; use Modules\Webstatement\Jobs\ExportStatementJob; use Modules\Webstatement\Models\AccountBalance; - use Modules\Webstatement\Models\StmtEntry; - use Modules\Webstatement\Models\TempFundsTransfer; - use Modules\Webstatement\Models\TempStmtNarrFormat; - use Modules\Webstatement\Models\TempStmtNarrParam; + use Modules\Webstatement\Jobs\ExportStatementPeriodJob; class WebstatementController extends Controller { @@ -142,9 +136,8 @@ } - function printStatementRekening() { - $accountNumber = '1234567890'; - $period = '202505'; + function printStatementRekening($accountNumber, $period = null) { + $period = $period ?? date('Ym'); $balance = AccountBalance::where('account_number', $accountNumber) ->when($period === '202505', function($query) { return $query->where('period', '>=', '20250512')