From 4321150d13f1d31cb874f50effe12370539efde9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 26 May 2025 20:23:58 +0700 Subject: [PATCH] refactor(webstatement): pisahkan pengolahan data saldo dari data akun - Menambahkan properti baru `$balanceData` untuk memisahkan data saldo dari data akun. - Menyimpan nilai `open_actual_bal` dan `open_cleared_bal` dalam `$balanceData` sebelum menghapusnya dari data akun. - Mengubah parameter `saveAccountBalance` dari array data akun menjadi hanya `accountNumber`. - Memanfaatkan `$balanceData` untuk mengatur nilai `actual_balance` dan `cleared_balance` dalam proses penyimpanan ke model `AccountBalance`. - Mengurangi potensi error dan membuat kode lebih modular dengan memisahkan pengolahan data saldo dari data akun. Signed-off-by: Daeng Deni Mardaeni --- app/Jobs/ProcessAccountDataJob.php | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/app/Jobs/ProcessAccountDataJob.php b/app/Jobs/ProcessAccountDataJob.php index 067df63..d597ff2 100644 --- a/app/Jobs/ProcessAccountDataJob.php +++ b/app/Jobs/ProcessAccountDataJob.php @@ -25,6 +25,8 @@ private int $processedCount = 0; private int $errorCount = 0; + private $balanceData = []; + /** * Create a new job instance. */ @@ -147,6 +149,16 @@ if (empty($data['closure_date']) || $data['closure_date'] == "" || $data['closure_date'] == null) { $data['closure_date'] = null; } + + // Store balance data separately before removing from Account data + $this->balanceData = [ + 'open_actual_bal' => empty($data['open_actual_bal']) ? 0 : $data['open_actual_bal'], + 'open_cleared_bal' => empty($data['open_cleared_bal']) ? 0 : $data['open_cleared_bal'], + ]; + + // Remove balance fields from Account data + unset($data['open_actual_bal']); + unset($data['open_cleared_bal']); } private function saveRecord(array $data, int $rowCount, string $filePath) @@ -159,7 +171,7 @@ $account->fill($data); $account->save(); - $this->saveAccountBalance($data); + $this->saveAccountBalance($data['account_number']); $this->processedCount++; } } catch (Exception $e) { @@ -168,17 +180,17 @@ } } - private function saveAccountBalance(array $data) + private function saveAccountBalance(string $accountNumber) : void { // Store the opening balances in the AccountBalance model for this period - if (isset($data['open_actual_bal']) || isset($data['open_cleared_bal'])) { + if (isset($this->balanceData['open_actual_bal']) || isset($this->balanceData['open_cleared_bal'])) { // Prepare balance data for bulk insert/update $balanceData = [ - 'account_number' => $data['account_number'], + 'account_number' => $accountNumber, 'period' => $this->period, - 'actual_balance' => empty($data['open_actual_bal']) ? 0 : $data['open_actual_bal'], - 'cleared_balance' => empty($data['open_cleared_bal']) ? 0 : $data['open_cleared_bal'], + 'actual_balance' => $this->balanceData['open_actual_bal'], + 'cleared_balance' => $this->balanceData['open_cleared_bal'], 'created_at' => now(), 'updated_at' => now() ]; @@ -186,7 +198,7 @@ // Use updateOrInsert to reduce queries AccountBalance::updateOrInsert( [ - 'account_number' => $data['account_number'], + 'account_number' => $accountNumber, 'period' => $this->period ], $balanceData