- Menambahkan konstanta `CHUNK_SIZE` dengan nilai 1000 untuk memungkinkan pemrosesan data dalam bentuk batch guna mengurangi penggunaan memori.
- Memperkenalkan atribut batch baru (`atmTransactionBatch`, `captureBatch`, `transferBatch`, dan `tellerBatch`) untuk menyimpan data sementara sebelum disimpan ke database.
- Mengganti metode penyimpanan langsung dengan menambahkan data ke batch melalui fungsi baru `addToBatch()`.
- Menambahkan fungsi `saveBatch()` untuk melakukan operasi penyimpanan data dalam jumlah besar (bulk) menggunakan metode `upsert`.
- Memastikan batch akan di-reset setelah penyimpanan, termasuk dalam kasus kegagalan, untuk mencegah reprocessing catatan yang gagal.
- Menambahkan logging tambahan untuk mencatat jumlah batch (chunk) yang telah selesai diproses, memberikan wawasan lebih dalam proses.
- Menambahkan validasi jumlah kolom pada setiap baris data, logging peringatan jika data tidak sesuai, dan mencatat jumlah kesalahan (`errorCount`).
- Secara otomatis menambahkan atribut timestamp (`created_at` dan `updated_at`) pada setiap data sebelum dimasukkan ke dalam batch untuk pelacakan waktu.
- Memodifikasi log error untuk menangani kesalahan pada level yang lebih spesifik, seperti pada baris tertentu dalam file yang diproses.
- Mengoptimalkan pemrosesan data pada job:
- `ProcessAtmTransactionJob` untuk data transaksi ATM.
- `ProcessDataCaptureDataJob` untuk data capture.
- `ProcessFundsTransferDataJob` untuk data transfer dana.
- `ProcessTellerDataJob` untuk data teller.
- Meningkatkan efisiensi dan skalabilitas dengan menyisipkan data secara bulk, mengurangi overhead database, dan menghindari pengolahan data secara satu per satu.
- Menambahkan konstanta `CHUNK_SIZE` untuk membatasi ukuran batch selama proses data.
- Memperkenalkan properti `$entryBatch` untuk menyimpan batch data sementara sebelum disimpan ke database.
- Mengubah metode `saveRecord` menjadi `addToBatch` untuk menambahkan record ke batch alih-alih langsung menyimpannya.
- Menambahkan metode `saveBatch` untuk menyimpan batch data ke database secara efisien menggunakan `upsert`.
- Menangani chunking dalam proses CSV untuk menghindari masalah memori dengan memproses data dalam batch.
- Menambahkan logging pada setiap batch yang selesai diproses untuk melacak kemajuan pemrosesan.
- Memastikan batch yang tersisa diproses setelah selesai membaca file CSV.
- Menambahkan penanganan error saat menyimpan batch untuk mencegah reprocessing pada batch yang gagal memproses.
- Otomatis menambahkan timestamp (`created_at` dan `updated_at`) pada setiap record sebelum dimasukkan ke batch.
- Tambahkan konstanta `CHUNK_SIZE` untuk memproses data dalam ukuran batch guna mengurangi penggunaan memori.
- Perkenalkan properti baru `customerBatch` untuk menyimpan data sementara sebelum disimpan ke database.
- Ubah metode `processRow` agar menambahkan data ke batch menggunakan metode baru `addToBatch` daripada langsung menyimpannya.
- Tambahkan metode `saveBatch` untuk melakukan penyimpanan batch secara bulk menggunakan `Customer::upsert` dengan pengelolaan kolom unik dan kolom yang perlu diperbarui.
- Tambahkan log untuk setiap chunk yang telah berhasil diproses, membantu memonitor progres saat pemrosesan file CSV dengan ukuran besar.
- Pastikan sisa data yang belum diproses di akhir loop juga disimpan dengan memanggil `saveBatch`.
- Tangani kegagalan penyimpanan batch dengan log error dan reset batch untuk menghindari re-pemrosesan data yang gagal.
- Optimalkan performa dengan menambahkan timestamp (`created_at` dan `updated_at`) secara langsung saat menambahkan data ke batch.
- Menambahkan properti baru `CHUNK_SIZE` untuk mengelola proses data dalam batch sehingga mengurangi penggunaan memori.
- Memperkenalkan batching untuk penyimpanan akun (`accountBatch`) dan balance (`balanceBatch`) untuk mengurangi beban query database.
- Mengganti penyimpanan langsung di database dengan metode bulk insert menggunakan `upsert` pada tabel Account dan AccountBalance.
- Menambahkan logging untuk mencatat setiap pemrosesan batch dan memberikan deskripsi jumlah chunk yang telah diproses.
- Memindahkan proses normalization dan balance data ke sistem batching alih-alih penyimpanan langsung.
- Menambahkan validasi tambahan untuk pengolahan data row dan mencegah error data yang memiliki kolom tidak sesuai.
- Memperbarui log pesan untuk menampilkan jumlah record yang diproses dan error secara lebih rinci.
- Memodularisasi fungsi agar lebih readable dan maintainable dengan beberapa fungsi baru seperti `addToBatch` dan `saveBatch`.
- Mengubah pengecekan atribut `$item->narrativ` menjadi `$item->narrative` pada beberapa kondisi.
- Memastikan data yang diakses menggunakan properti yang benar (`narrative`) agar sesuai dengan struktur yang diharapkan.
- Menghindari potensi bug atau error akibat typo pada nama properti.
- Memperbaiki kondisi pengecekan pada blok `if` dan `else if` untuk konsistensi penggunaan atribut.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengubah tipe variable `$narr` dari string menjadi array untuk mempermudah pengelolaan elemen-elemen narasi.
- Menambahkan elemen narasi ke dalam array menggunakan metode `array_push` alih-alih concatenation dengan string.
- Menggunakan `array_filter` untuk memastikan semua elemen yang bernilai kosong tidak ikut ke dalam hasil akhir.
- Mengganti `trim` dengan `implode` untuk menggabungkan elemen narasi menjadi string dengan separator spasi.
- Memperbaiki fallback logic saat properti transaksional tidak ada, lebih rapi dan terstruktur pada skenario `else if ($item->narrativ)`.
- Penggunaan logika baru memastikan bahwa narasi lebih fleksibel dan tidak menghasilkan karakter-karakter string kosong yang tidak diperlukan di output akhir.
- Mengatur nilai default properti `$period` menjadi string kosong (`''`) di semua file Job terkait dalam modul `Webstatement`.
- File-file yang terpengaruh:
1. `ProcessAccountDataJob.php`
2. `ProcessArrangementDataJob.php`
3. `ProcessAtmTransactionJob.php`
4. `ProcessBillDetailDataJob.php`
5. `ProcessCategoryDataJob.php`
6. `ProcessCompanyDataJob.php`
7. `ProcessCustomerDataJob.php`
8. `ProcessDataCaptureDataJob.php`
9. `ProcessFtTxnTypeConditionJob.php`
10. `ProcessFundsTransferDataJob.php`
11. `ProcessStmtEntryDataJob.php`
12. `ProcessStmtNarrFormatDataJob.php`
13. `ProcessStmtNarrParamDataJob.php`
14. `ProcessTellerDataJob.php`
15. `ProcessTransactionDataJob.php`
- Perubahan ini bertujuan untuk meningkatkan stabilitas dengan memastikan nilai awal dari properti telah terdefinisi untuk menghindari potensi `undefined property error`.
- Tidak ada perubahan logika lain di luar inisialisasi default nilai properti.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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 <ddeni05@gmail.com>
- Menambahkan validasi untuk memeriksa apakah `transaction` ada sebelum mengakses propertinya sehingga mencegah error pada situasi `null`.
- Menambahkan fallback description jika `transaction` bernilai null pada metode `generateNarrative`.
- Menambahkan dukungan untuk ID narasi tambahan seperti `APITRX`, `ONUSCR`, dan `ONUSDR` pada `getFormatNarrative`.
- Memodifikasi output `cleanPart` dengan menambahkan spasi untuk memastikan format narasi lebih konsisten.
- Mengubah penggantian `<NL>` dalam hasil akhir menjadi spasi kosong untuk meningkatkan keterbacaan hasil narasi.
- Menambahkan konstanta baru pada setiap job untuk meningkatkan keterbacaan:
- `CSV_DELIMITER` untuk delimiter CSV.
- `MAX_EXECUTION_TIME` untuk batas waktu eksekusi (86400 detik).
- `FILENAME` untuk nama file masing-masing job.
- `DISK_NAME` untuk disk yang digunakan.
- Mengubah `protected` menjadi `private` untuk properti seperti:
- `$period`, `$processedCount`, dan `$errorCount` di semua job.
- Memindahkan logika proses menjadi metode modular untuk meningkatkan modularitas:
- Metode `initializeJob` untuk inisialisasi counter.
- Metode `processPeriod` untuk menangani file dan memulai proses.
- Metode `validateFile` untuk validasi keberadaan file.
- Metode `createTemporaryFile` untuk menyalin file sementara.
- Metode `processFile` untuk membaca isi file CSV dan memproses.
- Metode `processRow`/`mapAndSaveRecord`/`saveRecord` untuk pemrosesan dan penyimpanan data.
- Metode `cleanup` untuk menghapus file sementara.
- Metode `logJobCompletion` untuk logging hasil akhir.
- Menerapkan pengolahan file dengan sistem logging terperinci:
- Logging row dengan kolom tidak sesuai akan menghasilkan peringatan.
- Mencatat jumlah record berhasil diproses serta error.
Refaktor ini bertujuan untuk meningkatkan kualitas kode melalui modularisasi, keterbacaan, dan kemudahan pengujian ulang di seluruh kelas job.
- Mengubah tipe properti `periods` dari `protected $periods` menjadi `protected array $periods` untuk memastikan konsistensi tipe data.
- Memodifikasi konstruktor pada beberapa job class (`ProcessFtTxnTypeConditionJob`, `ProcessStmtNarrFormatDataJob`, `ProcessStmtNarrParamDataJob`, dan `ProcessTransactionDataJob`) agar mendukung parameter `periods` dalam bentuk array atau string.
- Menambahkan validasi dalam konstruktor untuk mengonversi string `periods` menjadi array jika diperlukan, memastikan fleksibilitas dan kompatibilitas yang lebih baik saat inisialisasi object.
- Refaktor ini meningkatkan kejelasan dalam codebase dan mengurangi potensi error akibat perbedaan format input.
- Memperbaiki mapping `listAccount` di `WebstatementController`:
- Mengubah urutan key 'OY' dan 'PLUANG' sehingga data ditukar posisinya.
- Menambahkan logika untuk mendukung format baru di `ExportStatementJob`:
- Menambahkan dukungan format untuk `TTTRFOUT` dengan value 'TT.O.TRF'.
- Menambahkan dukungan format untuk `TTTRFIN` dengan value 'TT.I.TRF'.
- Menambahkan pengecekan prefix pada `trans_reference` untuk mapping field secara dinamis:
- Menambahkan mapping prefix baru dengan `relationMap` seperti `FT`, `TT`, `DC`, dan `AA` yang mengarahkan ke relasi data spesifik.
- Menyesuaikan logika fallback agar memprioritaskan field berdasarkan prefix sebelum default ke data aslinya.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Memperbaiki kondisi pengecekan `$this->period` yang salah (ekstra tanda kurung) pada beberapa job processing, seperti:
1. `ProcessAtmTransactionJob`
2. `ProcessBillDetailDataJob`
3. `ProcessCategoryDataJob`
4. `ProcessCompanyDataJob`
5. `ProcessCustomerDataJob`
6. `ProcessDataCaptureDataJob`
7. `ProcessFundsTransferDataJob`
8. `ProcessStmtEntryDataJob`
9. `ProcessTellerDataJob`
- Menambahkan kejelasan logging untuk kasus ketika periode tidak disediakan (`period === ''`).
- Menghapus kode komentar tidak terpakai di `ProcessFtTxnTypeConditionJob`.
Perubahan ini memastikan bahwa logika untuk kondisi periode kosong berjalan dengan benar dan menghindari potensi error di runtime.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
Memperbaiki pengecekan variabel `$this->period` dari `empty()` menjadi `=== ''` pada berbagai job dalam modul Webstatement untuk memastikan logika validasi berfungsi dengan baik dan lebih eksplisit.
- Job yang diperbaiki:
- `ProcessAccountDataJob`
- `ProcessArrangementDataJob`
- `ProcessAtmTransactionJob`
- `ProcessBillDetailDataJob`
- `ProcessCategoryDataJob`
- `ProcessCompanyDataJob`
- `ProcessCustomerDataJob`
- `ProcessDataCaptureDataJob`
- `ProcessFundsTransferDataJob`
- `ProcessStmtEntryDataJob`
- `ProcessTellerDataJob`
- Memastikan validasi terhadap variabel `$this->period` hanya memfokuskan pada apakah nilainya adalah string kosong (`''`).
- Menambahkan kejelasan pada logging apabila periode tidak tersedia pada setiap job.
- Perubahan ini bertujuan untuk menghindari potensi false negative pada pengecekan kondisi `empty()` yang dapat menyebabkan logika tidak berjalan sebagaimana mestinya.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Refactor `ProcessArrangementDataJob`:
- Mengubah parameter dari array periods menjadi string period untuk simplifikasi proses.
- Mengadaptasi logika proses file CSV dari multiple periods menjadi single period.
- Menghapus logika iterasi folder `_parameter` dan menyederhanakan nama file dengan menggunakan single period.
- Menambahkan validasi dan penanganan error jika file tidak ditemukan atau tidak dapat dibuka.
- Menyederhanakan proses membaca dan memproses row dari file CSV dengan pendekatan baru.
- Memperbaiki logging untuk mencatat catatan processing dan error yang lebih tepat.
- Update Model `StmtEntry`:
- Menambahkan relasi baru:
- `tt`: Relasi dengan model `Teller` berdasarkan `trans_reference`.
- `dc`: Relasi dengan model `DataCapture` berdasarkan `trans_reference`.
- `aa`: Relasi dengan model `TempArrangement` berdasarkan `trans_reference`.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
Melakukan perbaikan serta optimisasi pada proses pembersihan data dan pengolahan saldo akun.
Perubahan utama:
- **ProcessStmtEntryDataJob**:
- Mengganti `str_replace` dengan `preg_replace` untuk pembersihan `trans_reference`, sehingga lebih fleksibel dalam menghapus karakter setelah `\` (termasuk keseluruhan pattern yang lebih kompleks).
- Mengevaluasi penghapusan potensi substring logic yang tidak digunakan, memperkuat pembersihan menjadi lebih konsisten.
- **ProcessAccountDataJob**:
- Mengganti penggunaan `firstOrNew` dan `save` dengan `updateOrInsert` untuk mengurangi jumlah query ke database.
- Menambahkan pembuatan data `created_at` dan `updated_at` untuk memastikan data yang di-update memiliki timestamp konsisten.
- Menjamin default value pada `actual_balance` dan `cleared_balance` apabila data masukan kosong agar sistem tetap dapat berjalan tanpa error.
Perubahan ini dilakukan untuk meningkatkan efisiensi proses pengolahan data, mengurangi overhead query, serta memastikan data yang diproses tetap konsisten dan lebih aman.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menghapus logika pengecekan dan pengabaian folder `_parameter` di seluruh job pemrosesan data berikut:
- `ProcessAccountDataJob`
- `ProcessAtmTransactionJob`
- `ProcessBillDetailDataJob`
- `ProcessCategoryDataJob`
- `ProcessCompanyDataJob`
- `ProcessCustomerDataJob`
- `ProcessDataCaptureDataJob`
- `ProcessFundsTransferDataJob`
- `ProcessStmtEntryDataJob`
- `ProcessTellerDataJob`
- Menghapus konstanta `PARAMETER_FOLDER` yang terkait dengan folder `_parameter` pada beberapa job.
- Membersihkan code redundancy yang tidak relevan untuk meningkatkan keterbacaan dan efisiensi.
- Logika ini dianggap tidak diperlukan lagi dalam proses pemrosesan data.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengganti parameter `$periods` (array) menjadi `$period` (string) pada semua Job terkait: `ProcessCustomerDataJob`, `ProcessFundsTransferDataJob, etc`.
- Menyederhanakan operasi loop dalam proses data dengan hanya memproses satu periode per eksekusi Job.
- Memodifikasi fungsi controller di `MigrasiController` agar sesuai dengan perubahan parameter dari array ke string.
- Menambahkan pengamanan jika `$period` kosong atau bernilai '_parameter' untuk mencegah proses yang tidak diperlukan.
- Mengurangi duplikasi kode dengan mengeliminasi metode yang mengelola array periode dan menggantinya dengan pendekatan tunggal.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengubah parameter pada pemanggilan `$this->ProcessCompanyData()` dari array menjadi string untuk konsistensi data.
- Mengubah properti `protected` pada `ProcessCompanyDataJob` dari `$periods` menjadi `$period` untuk menggunakan string daripada array.
- Menyesuaikan constructor `__construct` untuk menerima parameter string `$period` alih-alih array `$periods`.
- Memperbaiki mekanisme validasi pada `handle()`, mengganti pengecekan array kosong `$this->periods` menjadi validasi string `$this->period` dengan nilai kosong.
- Menghapus iterasi `foreach` untuk mengakomodasi perubahan dari array ke string sederhana.
- Memastikan mapping data CSV tetap konsisten dan menambahkan identasi untuk peningkatan keterbacaan.
- Memperbaiki nama variabel dan properti agar lebih eksplisit (`$periods` menjadi `$period`, `$fileName` menjadi `$fileName`, dsb.).
- Menambahkan logging yang lebih jelas mengenai proses data dan kondisi error pada job `ProcessCompanyDataJob`.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengubah parameter pada metode `ProcessCategoryData` di `MigrasiController` dari array menjadi string untuk keseragaman dengan metode lainnya.
- Memperbarui konstruksi parameter pada instansi `ProcessCategoryDataJob` untuk menerima tipe data string sebagai pengganti array.
- Menghilangkan iterasi array `periods` pada `ProcessCategoryDataJob` dan menerapkan logika langsung pada single `period`.
- Menyesuaikan validasi periode untuk mengabaikan folder `_parameter` dalam proses.
- Memperlihatkan log lebih spesifik jika file tidak ditemukan, atau format kolom tidak sesuai ekspektasi.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengubah struktur listAccount menjadi array multidimensional untuk mendukung penamaan klien.
- Menambahkan parameter `client_name` pada data yang dikirimkan ke job ExportStatementJob.
- Memperbaiki penulisan nama file export dengan menambahkan informasi nama klien.
- Mengimplementasikan pembuatan direktori berdasarkan nama klien dan nomor akun untuk pengelompokan file secara terstruktur.
- Menambahkan atribut baru `client` pada ExportStatementJob untuk mengelola data terkait klien secara lebih spesifik.
- Melakukan perubahan pada proses export CSV:
- Menentukan struktur direktori berdasarkan klien dan akun.
- Menambahkan langkah untuk membuat direktori klien dan akun jika belum ada.
- Menyesuaikan log informasi dan path untuk setiap file yang di-export.
- Perubahan ini bertujuan untuk mempermudah pengelolaan statement per klien dengan struktur file yang lebih terorganisir.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
refactor(jobs): update file extension and sanitize transaction reference
- Mengubah konstanta `FILE_EXTENSION` pada `ProcessAtmTransactionJob` dari `.ST.ATM.csv` menjadi `.ST.ATM.TRANSACTION.csv`.
- Menambahkan logika pembersihan pada `trans_reference` dalam `ProcessStmtEntryDataJob`:
- Menghapus string `\BNK` jika ada dalam field `trans_reference`.
- Mempertahankan fungsionalitas utama untuk memastikan kompatibilitas data dan pengolahan job tetap berjalan sesuai dengan kebutuhan.
```
- Mengubah logika assignment nilai balance untuk memanfaatkan operator null coalescing (??).
- Menghapus pengecekan eksplisit untuk `isset` pada `open_actual_bal` dan `open_cleared_bal`.
- Menambahkan default value `0` jika data balance tidak tersedia.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan tipe return untuk beberapa method agar lebih eksplisit dan konsisten.
- Memperbaiki indentasi dan alignment parameter untuk meningkatkan keterbacaan.
- Menghapus method `getTransaction` dan memindahkannya ke bagian akhir kode dengan dokumentasi ulang.
- Menambahkan logika untuk menghapus file CSV yang sudah ada sebelum membuat file baru di method `exportToCsv`.
- Mengoreksi format data dan whitespace pada beberapa bagian kode untuk menjaga standar penulisan.
- Memindahkan komentar terkait dokumentasi method ke posisi yang lebih relevan dan terstruktur.
- Memastikan konsistensi penggunaan tanda kurung kurawal dan spasi pada query database agar lebih seragam.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menghilangkan pengecekan data yang sebelumnya diproses dengan memindahkan logika perbandingan jumlah data ke dalam fungsi `processStatementData`.
- Menambahkan beberapa fungsi baru untuk memisahkan logika ke dalam unit yang lebih kecil:
1. `getTotalEntryCount`: Menghitung total jumlah data berdasarkan kriteria akun dan periode.
2. `getExistingProcessedCount`: Menghitung jumlah data yang sudah diproses.
3. `deleteExistingProcessedData`: Menghapus data hasil proses sebelumnya jika ada ketidaksesuaian jumlah.
4. `processAndSaveStatementEntries`: Memproses dan menyimpan data dalam batch untuk efisiensi memori.
5. `prepareProcessedData`: Menyiapkan array data hasil pemrosesan sebelum disimpan ke database.
6. `formatTransactionDate`: Memformat tanggal transaksi dengan logika fallback pada error parsing.
7. `formatActualDate`: Memformat tanggal aktual dengan fallback dan logging untuk error parsing.
- Memperbaiki logika pemrosesan data statement:
- Menambahkan validasi jumlah data yang diproses untuk menghindari duplikasi atau penghapusan data yang tidak semestinya.
- Menghapus semua data hasil proses sebelumnya untuk satu kombinasi akun dan periode hanya jika terjadi ketidaksesuaian jumlah data.
- Menggunakan chunk batch untuk memproses data dengan lebih efisien, mengurangi penggunaan memori, dan meningkatkan kestabilan aplikasi.
- Menyempurnakan logging untuk memberikan informasi lebih rinci terkait proses pemrosesan data dan mengantisipasi error.
- Mengubah format data waktu pada proses narasi dengan fallback yang lebih aman guna mencegah kegagalan parsing.
- Menambahkan penghapusan data lama sebelum proses penyimpanan ulang guna memastikan konsistensi.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan pemanggilan fungsi `trim()` untuk menghapus spasi berlebihan di akhir narasi pada return value di fungsi pertama.
- Memperbaiki kondisi pengecekan `!==` pada variable `$fieldName` untuk meningkatkan kejelasan dan konsistensi dalam penulisan.
- Mengubah logika pengisian hasil narasi dengan memanfaatkan shorthand `$item->ft?->$fieldName ?? ''` untuk menghindari error saat field tidak ada nilainya.
- Menambahkan fungsi `str_replace` untuk menghapus karakter `<NL>` yang tidak diinginkan dari hasil narasi pada return value di fungsi kedua.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Tambahkan use statement untuk model `AccountBalance` di `ProcessAccountDataJob`.
- Simpan saldo pembukaan (`open_actual_bal` dan `open_cleared_bal`) dari data akun yang diproses ke model `AccountBalance`.
- Gunakan `firstOrNew` untuk memastikan data saldo pembukaan unik berdasarkan nomor akun dan periode tertentu.
- Tambahkan log untuk mencatat penyimpanan saldo pembukaan yang berhasil dilakukan.
- Pastikan penyimpanan hanya dilakukan jika data saldo tersedia di input (`isset` pada `open_actual_bal` atau `
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan indeks baru pada table `stmt_entry`:
- Kombinasi indeks untuk kolom `account_number` dan `booking_date`.
- Indeks untuk kolom `date_time`.
- Indeks untuk kolom `trans_reference`.
- Memperbesar ukuran chunk processing di `ExportStatementJob` dari 500 menjadi 1000 untuk mengoptimalkan performa proses ekspor data dan mengurangi overhead.
Perubahan ini bertujuan untuk meningkatkan efisiensi query pada table `stmt_entry` dan mengurangi waktu proses pada job ekspor pernyataan.
- Perbaiki penggunaan `sequence_no` dalam proses ekspor data dengan menambahkan pelacakan global sequence (`globalSequence`) di seluruh chunk, sehingga memastikan urutan yang konsisten dan tepat.
- Gantikan penggunaan indeks lokal chunk dengan `globalSequence` di setiap entri dalam data proses.
- Tambahkan komentar untuk menjelaskan fungsi tambahan terkait pelacakan sequence global.
- Koreksi format narasi pada nilai `'FT.OUT'` yang sebelumnya salah menggunakan `'FT.IN'`.
- Tambahkan pemeriksaan dan pembaruan pada logika penyimpanan data untuk meningkatkan kejelasan dan efisiensi.
- Menambahkan penggunaan chunking dalam pemrosesan data `StmtEntry` untuk mengurangi konsumsi memori
- Menghapus data yang telah diproses pada tabel `processed_statements` sebelum memproses ulang data baru
- Menambahkan metode `processStatementData` untuk memproses data transaksi dengan pengelolaan hemisan-memori
- Mengganti mekanisme ekspor CSV agar sesuai dengan data yang sudah diproses; menggunakan chunk pada pembacaan dan penulisan data agar lebih efisien
- Memperkenalkan tabel baru `processed_statements` untuk menyimpan hasil pemrosesan sebagai cache sementara
- Menambahkan log untuk setiap tahap pemrosesan untuk mempermudah debugging dan pelacakan proses
- Menambahkan file model `ProcessedStatement` untuk interaksi dengan tabel `processed_statements`
- Menambahkan file migrasi untuk membuat tabel `processed_statements` di database
Enhancement ini meningkatkan performa aplikasi, terutama saat menangani data besar, dengan mengurangi penggunaan memori dan meningkatkan efisiensi proses ekspor.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
Penambahan fitur untuk mendukung proses eksport dan download statement secara dinamis. Fitur ini mencakup:
- Penambahan `ExportStatementJob` untuk menjadwalkan proses eksport statement dalam bentuk file CSV ke dalam queue.
- Penambahan endpoint untuk:
1. `index`: Menjadwalkan pekerjaan eksport ke dalam queue.
2. `generateAndDownload`: Proses pembuatan statement secara langsung dan mengunduh hasilnya.
3. `downloadStatement`: Mendukung pengunduhan file statement yang telah dibuat sebelumnya.
4. `queueExport`: Menambahkan job eksport ke queue dengan ID job yang dirilis.
5. `checkExportStatus`: Memastikan status job apakah sedang berjalan, selesai, atau tidak ditemukan.
- Refactoring fitur narrative generator untuk mendukung format dinamis berdasarkan konfigurasi database dengan parsing format.
- Refactoring data transformation untuk memastikan urutan dan perhitungan running balance sebelum dieksport.
- Penggunaan storage lokal untuk menyimpan hasil file CSV, dan implementasi header respons yang benar untuk file unduhan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan job `ProcessAtmTransactionJob` untuk memproses data transaksi ATM dari file CSV.
- Implementasi pemrosesan file CSV termasuk pembacaan, pemetaan header, dan simpan data ke model.
- Menyediakan logging untuk pemantauan jumlah data yang diproses dan jumlah error.
- Menambahkan mekanisme penanganan error pada setiap proses baris dan file.
- Menambahkan model `AtmTransaction`:
- Mendeklarasikan atribut yang bisa diisi (`fillable`) seperti `transaction_id`, `txn_amount`, dan lainnya.
- Mendefinisikan tipe data casting untuk beberapa atribut seperti `txn_amount` dalam tipe decimal dan `booking_date` dalam tipe datetime.
- Menambahkan migration `2025_05_21_150736_create_atm_transactions_table` untuk tabel `atm_transactions`:
- Tabel memiliki kolom seperti `transaction_id`, `txn_amount`, `booking_date`, dan indeks untuk kolom tertentu.
- Meng-handle struktur kolom untuk mendukung atribut yang diperlukan di model.
- Memperbarui `MigrasiController`:
- Menambahkan fungsi `ProcessAtmTransaction` untuk menjadwalkan `ProcessAtmTransactionJob`.
- Memperbaiki pesan response pada beberapa fungsi agar lebih deskriptif dan konsisten.
- Memperbarui pemanggilan fungsi dari `__invoke` di bagian pemrosesan data (`ProcessAtmTransaction`) untuk period tertentu.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan job baru `ProcessTellerDataJob` untuk memproses data teller dari file CSV.
- Membuat controller method `ProcessTellerData` di `MigrasiController` untuk dispatch job `ProcessTellerDataJob`.
- Menambahkan model baru `Teller` yang merepresentasikan data teller dengan kolom sesuai header map pada CSV.
- Menambahkan migrasi `2025_05_21_144332_create_tellers_table.php` untuk membuat tabel database `tellers` dengan struktur data lengkap.
- Menambahkan logika pada job untuk membaca, memproses, dan menyimpan data CSV ke dalam database.
- Menyediakan mekanisme pemrosesan file CSV termasuk:
- Validasi jumlah kolom pada CSV jika tidak sesuai dengan header.
- Membuat dan menghapus file sementara selama pemrosesan.
- Mapping data CSV ke atribut model `Teller`.
- Penanganan error saat menyimpan data ke model `Teller`.
- Logging proses meliputi jumlah data yang diproses dan error selama jalannya job.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan `ProcessCategoryDataJob` untuk memproses data kategori dari file CSV yang diambil melalui SFTP.
- Membuat model `Category` dengan atribut-atribut:
- `id_category`
- `date_time`
- `description`
- `short_name`
- `system_ind`
- `record_status`
- `co_code`
- `curr_no`
- `l_db_cr_ind`
- `category_code`
- Menambahkan endpoint baru `ProcessCategoryData` di `MigrasiController` untuk memanggil job pemrosesan data kategori.
- Menambahkan migrasi untuk membuat tabel `categories` dengan kolom-kolom yang relevan.
- Memperbaiki bug pada `ProcessStmtEntryDataJob` dengan menambahkan validasi khusus untuk menghindari pemrosesan baris header yang tidak valid.
- Menghapus pemanggilan job yang tidak diperlukan di `MigrasiController`.
- Mengupdate logika pemrosesan file untuk memastikan integritas data dalam job kategori.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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.
- Menonaktifkan pemanggilan fungsi-fungsi yang tidak diperlukan untuk data processing di `MigrasiController`:
- `processTransactionData`, `processStmtNarrFormatData`, `processAccountData`, dan `ProcessCompanyData`.
- Mengubah argumen di beberapa pemanggilan fungsi untuk data processing agar lebih spesifik ke periode tertentu:
- Mengganti `$periods` menjadi `['20250512']` untuk `processArrangementData`, `processBillDetailData`, `processFundsTransferData`, dan `processStmtEntryData`.
- Memodifikasi logika skipping folder `_parameter` pada `ProcessFtTxnTypeConditionJob` dengan mengomentari proses pengecekan.
- Mengubah delimiter `fgetcsv` pada `ProcessBillDetailDataJob` dari `;` menjadi `~`.
- Menambahkan file migrasi baru untuk mengubah tipe kolom pada tabel `temp_fund_transfer`:
- Mengubah semua kolom pada tabel menjadi tipe `text` untuk mendukung data yang lebih besar.
- Menyediakan metode `down` untuk rollback tipe data kembali ke `string`.
Perubahan ini bertujuan untuk meningkatkan efisiensi proses data, mendukung fleksibilitas data lebih besar pada migrasi database, serta membuka jalan untuk refaktor atau penghapusan fungsi yang tidak digunakan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan fungsi baru `ProcessDataCaptureData` di `MigrasiController` untuk menjadwalkan pemrosesan data "Data Capture".
- Menambahkan job baru `ProcessDataCaptureDataJob`:
- Mengambil data "Data Capture" dari file CSV melalui SFTP.
- Memproses dan menyimpan data ke database dengan validasi dan logging.
- Mendukung operasi pembaruan (update) atau pembuatan (insert) data menggunakan Eloquent `updateOrCreate`.
- Menambahkan model baru `DataCapture`:
- Memetakan data ke tabel `data_captures` di database.
- Mendukung properti `fillable` dan `casts` untuk format data yang valid, termasuk konversi nilai decimal dan tanggal.
- Menambahkan migrasi baru `create_data_captures_table` untuk membuat tabel `data_captures`:
- Mendefinisikan semua kolom sesuai kebutuhan data "Data Capture".
- Menetapkan tipe data yang relevan seperti decimal, date, dan datetime.
- Memperbarui metode `migrasiAll` di `MigrasiController` untuk memanggil fungsi pemrosesan baru `ProcessDataCaptureData`.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
Menambahkan fungsi baru dan job baru untuk memproses data perusahaan (Company Data) dari file CSV.
Detail perubahan:
- Menambahkan import `ProcessCompanyDataJob` pada `MigrasiController`.
- Menambahkan fungsi `ProcessCompanyData` di `MigrasiController` untuk memanggil job pemrosesan data perusahaan.
- Mengintegrasikan pemrosesan data perusahaan ke dalam alur fungsi `processData()` di `MigrasiController`.
- Membuat job baru `ProcessCompanyDataJob` untuk membaca dan memproses file `ST.COMPANY.csv`.
- Job memproses file dari SFTP `sftpStatement` berdasarkan folder `periods`.
- Ditambahkan validasi file, mapping data CSV ke model `Branch`, dan menyimpan atau memperbarui data ke database.
- Penanganan error untuk pencatatan log pada kasus file tidak ditemukan, kesalahan kolom, atau error saat menyimpan data.
- Melakukan perubahan nama file default untuk job `ProcessFtTxnTypeConditionJob` dari `TXN_TYPE_CONDITION.csv` menjadi `ST.FT.TXN.TYPE.CONDITION.csv`.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan method `ProcessFtTxnTypeConditioData` pada `MigrasiController` untuk memproses data FtTxnTypeCondition melalui dispatching job baru.
- Menambahkan job baru `ProcessFtTxnTypeConditionJob` untuk mengelola dan memproses data TxnTypeCondition dari file `TXN_TYPE_CONDITION.csv`:
- Membaca file CSV melalui SFTP dengan validasi header dan struktur kolom.
- Menggunakan model `FtTxnTypeCondition` untuk menyimpan atau memperbarui data ke database.
- Menambahkan logging untuk memberikan informasi dan menangani pengecualian/error selama proses.
- Menambahkan model `FtTxnTypeCondition` untuk representasi data `ft_txn_type_condition` di database:
- Tabel memiliki atribut seperti `id`, `date_time`, `transaction_type`, `short_descr`, `txn_code_cr`, dan `txn_code_dr`.
- Mengatur primary key pada atribut `id` dengan tipe string dan non-incremental.
- Menambahkan migrasi untuk tabel `ft_txn_type_condition`:
- Menyediakan kolom utama yang diperlukan dengan tipe data sesuai kebutuhan, termasuk `softDelete`.
- Kolom primary key `id` dengan tipe `string`.
- Memodifikasi proses migrasi utama untuk memanggil method `ProcessFtTxnTypeConditioData`.
- Menangani folder `_parameter` sebagai folder yang diabaikan dalam proses.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Nonaktifkan pengecekan folder `_parameter` di berbagai job untuk memungkinkan pemrosesan file pada folder ini.
- Ubah logika konstruksi nama file di job `ProcessTransactionDataJob` agar tidak lagi menyertakan nama folder periode.
- Sesuaikan pola nama file pada job `ProcessStmtNarrParamDataJob` dan `ProcessStmtNarrFormatDataJob` untuk menghapus ketergantungan pada nama folder periode.
- Tambahkan pemanggilan fungsi `processTransactionData`, `processStmtNarrParamData`, dan `processStmtNarrFormatData` secara eksplisit dengan argumen folder `_parameter` di `MigrasiController`.
- Batasi pemrosesan data customer dan akun hanya pada periode tertentu (`20250519`) di `MigrasiController`.
- Hapus pemanggilan beberapa fungsi proses data lain di `MigrasiController` untuk periode umum.
- Perubahan ini bertujuan untuk meningkatkan fleksibilitas dan mengakomodasi kebutuhan pemrosesan data secara spesifik.
- Menambahkan parameter `$periods` untuk mendukung proses dinamis berdasarkan folder periode dalam SFTP.
- Memperkenalkan penggunaan `Storage::disk('sftpStatement')` untuk membaca file dari SFTP.
- Menyortir folder periode secara menurun berdasarkan tanggal.
- Memproses tiap entitas data (Customer, Account, Arrangement, Bill Details, dll.) berdasarkan file dalam folder periode.
- Menambah log untuk mencatat jumlah proses yang berhasil, baris error, dan peringatan tentang ketidaksesuaian jumlah kolom.
- Menyisipkan mekanisme untuk mengabaikan folder `_parameter`.
- Mengubah pendekatan dari membaca file lokal menjadi menggunakan file sementara (temp).
- Memperbaiki bug pada metode yang sebelumnya menggunakan jalur file statis.
- Memastikan penanganan file CSV yang lebih fleksibel, termasuk kasus di mana jumlah kolom dalam baris melebihi ekspektasi.
- Menambah error handling untuk mencatat baris-baris bermasalah dan menghindari interupsi proses.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
Menambahkan parameter "branch" untuk mendukung upload file CSV ke direktori SFTP berdasarkan cabang. Perubahan ini mencakup:
- Memodifikasi fungsi `uploadToSftpKartu` agar menerima parameter cabang untuk menentukan direktori tujuan di SFTP.
- Membuat log upload yang lebih spesifik untuk setiap cabang berdasarkan parameter "branch".
- Memastikan direktori cabang pada SFTP dibuat jika belum ada.
- Menyesuaikan fungsi `updateSftpLogSuccess` untuk mencatat log keberhasilan berdasarkan cabang.
- Mengupdate log pembuatan dan upload CSV agar mencantumkan informasi cabang.
- Menyesuaikan format log `updateCsvLogSuccess` untuk menangani pembuatan file CSV untuk beberapa cabang.
Perubahan ini memastikan fleksibilitas dan akuntabilitas dalam mengelola file CSV biaya kartu per cabang.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan logika untuk membagi kartu ATM berdasarkan cabang menggunakan `groupBy`.
- Memperbarui pembuatan nama file CSV agar mencakup informasi cabang dan timestamp.
- Menyesuaikan proses pembuatan dan penulisan file CSV agar mendukung pemrosesan kartu per cabang.
- Menambahkan validasi untuk memastikan file CSV dapat dibuat sebelum proses penulisan.
- Memisahkan dan membersihkan file CSV untuk setiap cabang setelah selesai diproses.
- Memodifikasi proses pengunggahan file ke SFTP dengan parameter cabang.
- Mengganti struktur output fungsi `generateAtmCardCsv` menjadi array dengan rincian:
- Nama cabang (`branch`).
- Lokasi file CSV yang dihasilkan (`localFilePath`).
- Jumlah kartu yang diproses per cabang (`recordCount`).
- Status pengunggahan ke SFTP (`uploadToSftp`).
- Tanggal dan waktu proses (`timestamp`).
Perubahan ini bertujuan meningkatkan fleksibilitas dan efisiensi dalam pengelolaan file CSV berdasarkan cabang, serta memudahkan pelacakan hasil proses per cabang.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan kondisi filter `where('flag', '')` pada query di fungsi BiayaKartu untuk memastikan data yang diproses hanya kartu dengan flag kosong.
- Melakukan penyesuaian yang sama pada query terkait di fungsi GenerateBiayaKartuCsvJob untuk konsistensi logika filter.
- Perubahan ini bertujuan untuk menyaring data yang lebih spesifik sesuai kebutuhan, menghindari pengolahan kartu dengan flag yang tidak sesuai.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Update filter untuk query dengan kondisi tambahan pada `crsts` dan pengecualian jenis kartu tertentu.
- Refactor metode `scheduleUpdateBranchCurrencyJobs`:
- Tambahkan batch process untuk penghematan memori.
- Log tambahan untuk melacak progres yang lebih jelas.
- Perbaikan logika penjadwalan job dengan penundaan (delay) dinamis.
- Penanganan error yang lebih detail dan log pendukung untuk debugging.
- Perbaikan pada controller `KartuAtmController`:
- Amankan akses properti menggunakan null-safe operator pada data biaya kartu.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengubah konversi konstanta MAX_EXECUTION_TIME menjadi properti.
- Memindahkan dan merapikan fungsi-fungsi `updateCsvLogStart`, `updateCsvLogSuccess`, dan `updateCsvLogFailed` untuk meningkatkan keterbacaan.
- Mengubah format deklarasi fungsi untuk konsistensi dalam penggunaan tipe data return.
- Memperbaiki logika pengambilan file info pada proses pembuatan dan pengunggahan CSV.
- Menambahkan logging yang lebih terstruktur untuk setiap proses (mulai, sukses, gagal).
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengubah pelaksanaan scheduling delayed job untuk UpdateAtmCardBranchCurrencyJob.
- Memperbarui logging untuk proses sinkronisasi kartu ATM.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
Penambahan dan perubahan:
- Tambah model `KartuSyncLog` untuk mencatat status sinkronisasi, pembuatan CSV, dan upload SFTP.
- Implementasi logging status sinkronisasi di `BiayaKartu`:
- Logging status saat sinkronisasi dimulai, berhasil, atau gagal.
- Statistik sinkronisasi mencakup jumlah data total, sukses, dan gagal.
- Catatan progres sinkronisasi secara periodik.
- Update proses CSV di `GenerateBiayaKartuCsvJob`:
- Pembuatan log untuk status pembuatan CSV dan upload ke SFTP.
- Kanalisasi dan pembaruan log saat pembuatan atau upload dimulai, berhasil, atau gagal.
- Random delay untuk job update branch dan currency dimodifikasi menggunakan ID log sinkronisasi.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Tambahkan date-time pada penamaan file CSV untuk meningkatkan traceability.
- Perubahan konstanta nama tabel database dari 'IST77.VW_CMS_VCARD' menjadi 'IST77.CMS_VCARD'.
- Ubah nilai batch size dari 100 menjadi 1000 untuk meningkatkan efisiensi proses.
- Tambahkan join dengan tabel 'IST77.CMS_VCARDTYP' untuk mendapatkan data tambahan pada query database.
- Tambahkan select fields yang lebih lengkap pada query database untuk kebutuhan data yang lebih spesifik.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>