From def0b037a8bb2babcc8bf4accce6048d597f9dd0 Mon Sep 17 00:00:00 2001 From: daengdeni Date: Wed, 21 May 2025 21:18:04 +0700 Subject: [PATCH] feat(statement-processing): update StmtEntry model and optimize data processing logic - Menambahkan relasi baru pada model `StmtEntry`: - `ft()` untuk relasi ke model `TempFundsTransfer` berdasarkan kolom `trans_reference`. - `transaction()` untuk relasi ke model `TempTransaction` berdasarkan kolom `transaction_code`. - Memperbarui `ProcessStmtEntryDataJob`: - Mengganti penggunaan model `TempStmtEntry` menjadi `StmtEntry`. - Mengubah delimiter parsing file CSV dari `/` menjadi `~`. - Menggunakan `stmt_entry_id` sebagai kunci utama dalam metode `updateOrCreate`. - Menghapus validasi kolom `_id` pada data yang diproses. Perubahan ini bertujuan untuk menyelaraskan model dan cara proses data agar lebih akurat dan sesuai dengan kebutuhan sistem. --- app/Jobs/ProcessStmtEntryDataJob.php | 17 ++++++++--------- app/Models/StmtEntry.php | 8 ++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/Jobs/ProcessStmtEntryDataJob.php b/app/Jobs/ProcessStmtEntryDataJob.php index e76a560..3739204 100644 --- a/app/Jobs/ProcessStmtEntryDataJob.php +++ b/app/Jobs/ProcessStmtEntryDataJob.php @@ -10,6 +10,7 @@ use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; + use Modules\Webstatement\Models\StmtEntry; use Modules\Webstatement\Models\TempStmtEntry; class ProcessStmtEntryDataJob implements ShouldQueue @@ -67,22 +68,20 @@ $handle = fopen($tempFilePath, "r"); if ($handle !== false) { - $headers = (new TempStmtEntry())->getFillable(); + $headers = (new StmtEntry())->getFillable(); $rowCount = 0; - while (($row = fgetcsv($handle, 0, "/")) !== false) { + while (($row = fgetcsv($handle, 0, "~")) !== false) { $rowCount++; if (count($headers) === count($row)) { $data = array_combine($headers, $row); try { - if (isset($data['_id']) && $data['_id'] !== '_id') { - TempStmtEntry::updateOrCreate( - ['_id' => $data['_id']], - $data - ); - $processedCount++; - } + StmtEntry::updateOrCreate( + ['stmt_entry_id' => $data['stmt_entry_id']], + $data + ); + $processedCount++; } catch (Exception $e) { $errorCount++; Log::error("Error processing Statement Entry at row $rowCount in $filePath: " . $e->getMessage()); diff --git a/app/Models/StmtEntry.php b/app/Models/StmtEntry.php index 773d03f..4bb179e 100644 --- a/app/Models/StmtEntry.php +++ b/app/Models/StmtEntry.php @@ -56,4 +56,12 @@ class StmtEntry extends Model { return $this->belongsTo(Account::class, 'account_number', 'account_number'); } + + public function ft(){ + return $this->belongsTo(TempFundsTransfer::class, 'trans_reference', 'ref_no'); + } + + public function transaction(){ + return $this->belongsTo(TempTransaction::class, 'transaction_code', 'transaction_code'); + } }