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.
This commit is contained in:
daengdeni
2025-05-21 21:18:04 +07:00
parent 39e356e2ff
commit def0b037a8
2 changed files with 16 additions and 9 deletions

View File

@@ -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());