Commit Graph

218 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
d4efa58f1b feat(webstatement): tambahkan fitur ekspor statement rekening
- Menambahkan fungsi `printStatementRekening` pada `WebstatementController` untuk mendukung ekspor statement rekening:
  - Mengambil saldo rekening berdasarkan `account_number` dan `period`.
  - Melakukan validasi input seperti `accountNumber`, `period`, dan `clientName`.
  - Menambah log proses ekspor, termasuk saat fungsi dijalankan, keberhasilan pengiriman job, dan error jika terjadi.
  - Mengantrekan job `ExportStatementPeriodJob` dengan parameter seperti `account_number`, `period`, `balance`, dan `client_name`.
  - Menangani error dengan logging detail kegagalan ekspor dan memberikan respon yang sesuai.

- Memperbarui rute pada file `web.php`:
  - Menambahkan endpoint baru `/debug/test-statement` untuk debugging ekspor statement menggunakan controller `WebstatementController`.

- Tujuan perubahan ini:
  - Mendukung proses ekspor data statement rekening secara terstruktur.
  - Memberikan kemudahan debugging dan pelacakan proses ekspor.
  - Memastikan fleksibilitas dalam pengelolaan saldo dan data rekening.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-04 14:52:35 +07:00
Daeng Deni Mardaeni
f624a629f5 feat(webstatement): sesuaikan opsi parameter proses pada migrasi harian
- Menghapus opsi `--date` dan `--type` dari command `webstatement:process-daily-migration` dan menggantinya dengan opsi baru `--process_parameter`.
- Memperbarui pesan log pada eksekusi command untuk mencatat nilai `process_parameter` sebagai pengganti parameter `date` dan `type`.
- Memperbarui logika pengiriman parameter ke controller:
  - Sebelumnya mengirimkan `date` dan `type`, kini diganti menjadi `process_parameter`.
- Tujuan perubahan ini:
  - Menyederhanakan pengaturan parameter untuk command migrasi harian.
  - Memberikan fleksibilitas lebih dalam penanganan parameter proses migrasi.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-04 14:50:37 +07:00
Daeng Deni Mardaeni
10fcdb5ea2 feat(webstatement): tambahkan job untuk ekspor data pernyataan periode ke CSV
- Menambahkan **`ExportStatementPeriodJob`** untuk mendukung ekspor data pernyataan periode ke file CSV:
  - Inisialisasi job dengan parameter `account_number`, `period`, `saldo`, `client`, dan `disk`.
  - Menghitung tanggal mulai (`startDate`) dan tanggal akhir (`endDate`) berdasarkan periode yang diberikan.
  - Log informasi eksekusi termasuk waktu mulai, rentang tanggal, dan hasil akhir.
  - Menangani error saat proses berjalan dengan logging terperinci.

- Memproses data pernyataan sebelum ekspor, termasuk:
  - Melakukan validasi jumlah data yang telah diproses sebelumnya.
  - Jika data belum sepenuhnya diproses, menghapus data lama pada tabel `processed_statements`.
  - Memproses data baru dengan mengolah entri dari tabel `StmtEntry`.
  - Membuat narrative dari data transaksi menggunakan model terkait `TempFundsTransfer`, `TempStmtNarrParam`, dan `TempStmtNarrFormat`.

- Menambahkan logika untuk format tanggal transaksi dan narrasi:
  - Format tanggal transaksi melalui fungsi `formatTransactionDate` dan `formatActualDate`.
  - Narasi dihasilkan dari berbagai sumber, termasuk data transaksi dan parameter lainnya.

- Ekspor data ke file CSV:
  - Mengatur struktur folder berdasarkan `client` dan `account_number`.
  - Menghapus file lama sebelum membuat file baru untuk menghindari duplikasi.
  - Membagi data menjadi chunks untuk mengurangi penggunaan memori.
  - Menambahkan header CSV dengan format kolom: `NO|TRANSACTION.DATE|REFERENCE.NUMBER|TRANSACTION.AMOUNT|TRANSACTION.TYPE|DESCRIPTION|END.BALANCE|ACTUAL.DATE`.

- Optimasi proses:
  - Proses data dalam batch menggunakan pagination (`chunk`) untuk efisiensi memori.
  - Simpan hasil processed statement ke database sementara (`processed_statements`).
  - Tambahkan log setiap entri data untuk memonitor keberhasilan proses.

- Tujuan penambahan ini:
  - Mendukung proses pengolahan dan pelaporan data rekening secara terstruktur.
  - Meningkatkan efisiensi penyimpanan dan akses data besar.
  - Menghasilkan file CSV yang dapat digunakan sebagai dokumen untuk laporan eksternal.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-04 14:47:14 +07:00
Daeng Deni Mardaeni
2d07783c46 feat(webstatement): tambahkan fitur debugging untuk entri pernyataan
- Menambahkan **`DebugStatementController`** untuk mendukung fitur debugging entri pernyataan:
  - Fungsi `debugStatement` untuk menganalisis satu entri pernyataan berdasarkan `account_number`, `trans_reference`, dan `period` (opsional).
    - Melakukan validasi masukan dari permintaan.
    - Mengambil detail entri berdasarkan kriteria yang diberikan.
    - Menghasilkan `narrative`, informasi tanggal terformat, dan detail debug.
    - Memberikan detail data terkait seperti `ft` dan `transaction`.
    - Melakukan penanganan dan log error jika terjadi kegagalan proses.
  - Fungsi `listStatements` untuk mendapatkan daftar entri pernyataan berdasarkan kriteria tertentu.
    - Validasi dan dukungan parameter `account_number`, `period`, dan `limit`.
    - Pengurutan hasil berdasarkan `date_time` secara menurun.
    - Menampilkan hasil dalam format JSON termasuk jumlah total data.

- Menambahkan logika tambahan untuk:
  - Format tanggal transaksi dan tanggal aktual secara konsisten menggunakan `Carbon`.
  - Mendukung pembuatan `narrative` dengan data dari entri pernyataan.
  - Mengambil parameter narasi dan formatting berdasarkan tipe narasi melalui model `TempStmtNarrParam` dan `TempStmtNarrFormat`.

- Memperbarui routing dalam file `web.php` dengan menambahkan prefix `debug`:
  - **`POST /debug/statement`** -> debug satu entri pernyataan.
  - **`GET /debug/statements`** -> daftar semua entri untuk debugging.

- Tujuan pembaruan ini:
  - Mempermudah proses analisis dan troubleshooting pada entri pernyataan.
  - Memberikan informasi detail terkait kesalahan atau ketidaksesuaian data.
  - Membantu pengembang dan pengguna menganalisis informasi transaksi secara mendalam.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-03 20:29:44 +07:00
Daeng Deni Mardaeni
66f84600eb feat(webstatement): tambahkan kolom baru sektor, tipe pelanggan, dan tanggal lahir/pendirian pada model Customer
- Memperbarui model `Customer` dengan menambahkan properti baru pada `$fillable`:
  - `sector`
  - `customer_type`
  - `birth_incorp_date`
- Menambahkan migrasi baru `add_sector_customer_type_birth_incorp_date_to_customers_table`:
  - Menambahkan kolom `sector`, `customer_type`, dan `birth_incorp_date` pada tabel `customers`.
  - Semua kolom bersifat nullable untuk menjaga kompatibilitas data lama.
  - Menyediakan fungsi rollback dengan menghapus kolom yang ditambahkan.
- Tujuan perubahan ini:
  - Mendukung penyimpanan data sektor, tipe pelanggan, dan tanggal lahir/pendirian pada entitas pelanggan.
  - Memfasilitasi validasi data tambahan dalam proses bisnis dan laporan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-03 12:02:31 +07:00
Daeng Deni Mardaeni
cc99883875 feat(webstatement): tambahkan fitur pemrosesan data sektor dan parameter pada migrasi harian
- Menambahkan opsi baru `--process_parameter` pada command `webstatement:process-daily-migration`.
  - Memungkinkan pengguna untuk menentukan parameter proses migrasi seperti tanggal (`date`) dan tipe (`type`).
  - Menambahkan logging tambahan untuk mencatat nilai parameter yang diproviding pengguna.
- Memperbarui logika command dan controller:
  - Mengirimkan parameter `date` dan `type` ke controller untuk mendukung proses migrasi dengan parameter yang lebih spesifik.
- Menambahkan proses migrasi baru untuk data sektor:
  - Membuat job `ProcessSectorDataJob` yang bertugas membaca file CSV terkait sektor dari SFTP.
  - Melakukan validasi keberadaan file, memproses tiap baris data, dan menyimpannya ke database jika valid.
  - Logging untuk setiap aktivitas proses sektor, termasuk error dan kesuksesan per baris.
- Membuat model `Sector` untuk mendukung operasi database data sektor:
  - Menambah atribut dapat diolah (`fillable`) seperti `sector_code`, `co_code`, `description`, dll.
  - Menambahkan cast `date_time` ke tipe datetime.
- Menambahkan migrasi baru untuk tabel `sectors`:
  - Tabel memiliki kolom seperti `id`, `date_time`, `description`, `curr_no`, `co_code`, dan `sector_code`.
  - Meningkatkan pendukung penyimpanan data sektor untuk migrasi masa depan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-03 11:58:16 +07:00
Daeng Deni Mardaeni
6b8f44db1d feat(webstatement): tambahkan logika penghapusan dan penggantian file PDF setelah dekripsi
- Menambahkan variabel `$finalPdfPath` untuk menyimpan lintasan file PDF akhir tanpa ekstensi `.dec`.
- Mengimplementasikan logika baru untuk:
  1. Menghapus file PDF terenkripsi setelah file berhasil didekripsi.
  2. Mengganti nama file dekripsi dengan menghilangkan ekstensi `.dec`.
- Menambahkan logging baru untuk mencatat aktivitas berikut:
  1. Penghapusan file PDF terenkripsi setelah berhasil didekripsi.
  2. Perubahan nama file dekripsi ke format final.
- Tujuan perubahan ini adalah untuk:
  1. Mengoptimalkan ruang penyimpanan dengan menghilangkan file terenkripsi setelah digunakan.
  2. Memastikan hasil dekripsi langsung dapat digunakan tanpa perlu pengolahan manual tambahan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-02 20:08:24 +07:00
Daeng Deni Mardaeni
d326cce6e0 feat(webstatement): tambahkan fitur unlock PDF file dan jadwal otomatisasi harian
- Menambahkan command baru `webstatement:unlock-pdf` untuk membuka file PDF yang dilindungi password:
  - Dapat menerima parameter `directory` untuk menetapkan direktori file sumber.
  - Opsi `--password` untuk menentukan password yang digunakan dalam proses unlock, dengan default `123456`.
  - Menampilkan log proses unlock PDF dengan pesan sukses atau error.
- Membuat job baru `UnlockPdfJob` untuk menangani proses unlock PDF secara asinkron:
  - Memindai direktori utama berdasarkan struktur folder (tahun dan ID).
  - Membuka proteksi file PDF dengan menggunakan library `qpdf`.
  - Menghasilkan file PDF yang telah didekripsi di direktori yang sama dengan nama file ekstensi `.dec.pdf`.
  - Melakukan logging untuk setiap file yang berhasil diproses atau ketika terjadi error.
  - Menghindari duplikasi dengan memeriksa keberadaan file decrypted sebelumnya.
- Memperbarui `WebstatementServiceProvider`:
  - Mendaftarkan command `UnlockPdf` untuk digunakan dalam aplikasi.
  - Menambah jadwal otomatisasi harian pada pukul 09:30 untuk menjalankan command `webstatement:unlock-pdf`.
  - Logging hasil proses executables ke file `logs/unlock-pdf.log`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-02 19:59:33 +07:00
Daeng Deni Mardaeni
173b229f07 feat(webstatement): tambahkan pengaturan ukuran kertas A4 pada konversi HTML ke PDF
- Menambahkan pengaturan ukuran kertas A4 pada proses konversi HTML ke PDF di `ConvertHtmlToPdfJob`:
  - Menggunakan metode `setPaper('A4', 'portrait')` untuk menetapkan standar ukuran dan orientasi kertas.
- Memperbarui log proses konversi agar mencantumkan informasi ukuran kertas yang digunakan.
- Tujuan perubahan ini adalah memastikan tampilan PDF lebih terstandarisasi sesuai kebutuhan dokumen.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-02 19:21:10 +07:00
Daeng Deni Mardaeni
1a1fecd0ad feat(webstatement): tambahkan penjadwalan dan pendaftaran command ConvertHtmlToPdf
- Menambahkan command baru `ConvertHtmlToPdf` ke dalam `WebstatementServiceProvider`.
  - Mendaftarkan command ke dalam array commands untuk dapat digunakan di aplikasi.
- Memperbarui `schedule` di `WebstatementServiceProvider` untuk menjalankan command `webstatement:convert-html-to-pdf` secara otomatis.
  - Ditambahkan penjadwalan harian pada pukul 09:30.
  - Logging hasil eksekusi command ke dalam file log `logs/convert-html-to-pdf.log`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-02 19:07:26 +07:00
Daeng Deni Mardaeni
700c8bbbf6 feat(webstatement): tambahkan fitur konversi file HTML ke PDF
- Menambahkan command baru `webstatement:convert-html-to-pdf` untuk melakukan konversi file HTML menjadi PDF secara otomatis:
  - Dapat menerima parameter `directory` untuk menentukan direktori sumber file HTML.
  - Menampilkan pesan sukses atau error selama proses berjalan.
  - Menggunakan konsep asinkron melalui job untuk meningkatkan efisiensi.

- Membuat job baru `ConvertHtmlToPdfJob` untuk menangani proses konversi file:
  - Memproses folder yang berisi file HTML berdasarkan struktur direktori tertentu.
  - Mengambil semua file HTML dalam suatu folder, kemudian mengonversinya menjadi file PDF.
  - Menggunakan library `Barryvdh\DomPDF\Facade\Pdf` untuk konversi format HTML ke PDF.
  - Melakukan logging untuk setiap proses berhasil atau ketika terjadi error.
  - Memastikan suksesnya konversi ke direktori yang sama dengan file HTML.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-02 18:45:07 +07:00
Daeng Deni Mardaeni
8a728d6c6e feat(webstatement): tambahkan fitur penggabungan dan proteksi file PDF
- Menambahkan command baru `webstatement:combine-pdf` melalui `CombinePdf` untuk menjalankan proses penggabungan file PDF.
  - Proses ini mencakup penggabungan file PDF dari folder r14 dan r23 berdasarkan periode tertentu.
  - File PDF yang dihasilkan juga dilindungi dengan password berbasis nomor rekening.
- Membuat controller `CombinePdfController` dengan fungsi utama `combinePdfs` untuk mengontrol alur penggabungan file PDF:
  - Mendapatkan daftar akun yang relevan.
  - Mengecek file dari folder r14 dan r23 untuk setiap akun.
  - Melakukan logging saat file tidak ditemukan atau jika terdapat error dalam proses.
  - Mendaftarkan job `CombinePdfJob` untuk memproses file secara async.
- Menambahkan job baru `CombinePdfJob`:
  - Menggunakan library `PDFMerger` untuk menggabungkan file.
  - Terapkan proteksi password menggunakan library `PDFPasswordProtect`.
  - Memastikan direktori output dibuat jika belum ada.
  - Melakukan logging saat proses berhasil maupun saat terjadi error.
- Memperbarui `WebstatementServiceProvider`:
  - Mendaftarkan command baru ke dalam provider.
  - Menambahkan penjadwalan otomatis untuk menjalankan perintah `webstatement:combine-pdf` setiap hari pada pukul 09:30.
  - Logging hasil eksekusi ke file log `logs/combine-pdf.log`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-02 10:31:51 +07:00
Daeng Deni Mardaeni
8ca526e4f2 refactor(webstatement): optimalkan pemrosesan batch data bill detail
- Mengubah mekanisme pemrosesan batch `billDetailBatch` menjadi pemrosesan per chunk untuk manajemen memori yang lebih baik.
- Menambahkan langkah penghapusan data eksisting berdasarkan `stmt_entry_ids` sebelum melakukan insert untuk menghindari konflik data.
- Mengganti metode `upsert` dengan kombinasi `delete` dan `insert` untuk tiap chunk data.
- Menyisipkan komentar untuk memberikan penjelasan yang lebih rinci terkait proses chunking.
- Memastikan batch `billDetailBatch` di-reset setelah selesai diproses.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 21:58:08 +07:00
Daeng Deni Mardaeni
e14ae2ef9c refactor(webstatement): optimize ATM transaction processing
- Ubah mekanisme pengolahan batch transaksi ATM agar lebih efisien dan hemat memori.
- Hapus proses `upsert` secara langsung dan ganti dengan pendekatan berikut:
  1. Iterasi data batch dalam chunk kecil untuk menghindari konsumsi memori berlebih.
  2. Hapus data yang sudah ada berdasarkan `transaction_id` untuk menghindari konflik saat insert ulang.
  3. Gunakan metode `insert` untuk memasukkan data sekaligus per chunk.
- Tambahkan logika reset batch setelah selesai pengolahan.
- Tingkatkan skalabilitas dan stabilitas alur pengolahan data dengan mengurangi beban memori saat pemrosesan data besar.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 21:57:53 +07:00
Daeng Deni Mardaeni
7498d14087 refactor(webstatement): optimize ProcessTellerDataJob batching
Ubah alur proses batch pada job untuk meningkatkan efisiensi dan manajemen memori.

- Mengganti metode `upsert` dengan pendekatan manual yang memecah data batch menjadi potongan lebih kecil.
- Menambahkan proses penghapusan record lama berdasarkan `id_teller` sebelum melakukan insert baru untuk menghindari konflik data.
- Menggunakan loop untuk memproses batch dalam potongan-potongan kecil, sehingga mengurangi beban memori.
- Memastikan batch direset setelah selesai diproses untuk menghindari kebocoran data atau konflik.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 21:57:39 +07:00
Daeng Deni Mardaeni
369f24a8e2 refactor(webstatement): optimalkan pemrosesan batch transfer dana
- Mengubah mekanisme pemrosesan `transferBatch` menjadi berbasis chunk untuk mengoptimalkan penggunaan memori.
- Menambahkan logika penghapusan data lama dengan `_id` terkait sebelum menyisipkan data baru untuk menghindari konflik.
- Mengganti metode `upsert` dengan kombinasi `delete` dan `insert` untuk lebih fleksibel dalam penanganan data.
- Memastikan batch transfer diatur ulang setelah selesai diproses.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 21:57:23 +07:00
Daeng Deni Mardaeni
d455707dbc refactor(webstatement): optimalkan proses penyimpanan batch dalam ProcessStmtEntryDataJob
- Menghapus logika `updateOrCreate` dan menggantinya dengan penghapusan (`delete`) berdasarkan `stmt_entry_id` sebelum melakukan operasi `insert`.
- Menambahkan pembagian proses ke dalam chunk yang lebih kecil untuk manajemen memori yang lebih baik.
- Memastikan semua `stmt_entry_ids` dalam chunk diekstrak dan digunakan untuk meminimalisir konflik data.
- Menambah logging yang lebih detail dengan `e.getTraceAsString()` untuk mempermudah debugging ketika terdapat error.
- Membersihkan `entryBatch` baik setelah proses sukses maupun ketika terjadi kesalahan untuk mencegah reprocessing pada data yang sama.

Perubahan ini bertujuan untuk meningkatkan efisiensi dan memastikan integritas data selama proses penyimpanan batch.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 20:59:49 +07:00
Daeng Deni Mardaeni
76ebdce2ea fix(webstatement): ubah metode upsert menjadi updateOrCreate pada ProcessStmtEntryDataJob
- Refactor proses penyimpanan data pada `ProcessStmtEntryDataJob`:
  - Mengganti metode `StmtEntry::upsert` dengan `StmtEntry::updateOrCreate` untuk setiap entri dalam batch.
  - Metode `updateOrCreate` memungkinkan pembaruan data atau penyisipan data baru berdasarkan `stmt_entry_id` sebagai kunci unik.
- Meningkatkan fleksibilitas pembaruan data dengan menggunakan loop per entry dibandingkan bulk operation, sehingga lebih kompatibel untuk kasus tertentu.

- Tambahkan file migrasi baru untuk penyesuaian tabel `stmt_entry`:
  - File migrasi telah dibuat sebagai dasar, namun implementasi detail dalam tabel masih kosong.
  - File ini akan digunakan untuk perubahan skema di masa mendatang sesuai kebutuhan pengembangan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 19:40:35 +07:00
Daeng Deni Mardaeni
eed6c3dbaa feat(webstatement): tambahkan kolom dealer_desk pada mapping ProcessTellerDataJob
Penambahan kolom baru pada mapping untuk memperluas informasi yang tersedia dalam pemrosesan data teller.

Detail perubahan:
- Menambahkan key baru bernama `dealer_desk` pada property `$mapping` di file `ProcessTellerDataJob.php`.
- Memastikan data dari kolom `dealer_desk` menjadi bagian dari proses map data.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 09:56:30 +07:00
Daeng Deni Mardaeni
deb702c68e feat(webstatement): tambahkan kolom dealer_desk pada model dan tabel tellers
- Menambahkan atribut baru `dealer_desk` pada properti `$fillable` di model `Teller` untuk memungkinkan atribut ini diisi secara massal.
- Membuat migration baru `2025_05_29_024729_add_dealer_desk_to_tellers_table` untuk penambahan kolom `dealer_desk` ke dalam tabel `tellers`.
  - Kolom `dealer_desk` bertipe string dan dapat bernilai null.
  - Penempatan kolom dilakukan setelah kolom `last_version`.
- Menambahkan method untuk rollback migration yang menghapus kolom `dealer_desk` dari tabel `tellers`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 09:47:57 +07:00
Daeng Deni Mardaeni
1ae98bcc26 feat(webstatement): tambahkan field baru pada TempFundsTransfer dan migrasi terkait
- Menambahkan daftar field baru pada model `TempFundsTransfer` untuk mendukung pengelolaan data transfer dana sementara.
  - Field tambahan meliputi:
    - `at_unique_id`
    - `bif_ref_no`
    - `atm_order_id`
    - `api_iss_acct`
    - `api_benff_acct`
    - `remarks`
    - `api_mrchn_id`
    - `bif_rcv_acct`
    - `bif_snd_acct`
    - `bif_rcv_name`
    - `bif_va_no`

- Membuat file migrasi bernama `2025_05_29_015537_add_fields_to_temp_funds_transfer_table.php` untuk:
  - Menambahkan field baru pada tabel `temp_funds_transfer`.
  - Menyediakan mekanisme rollback dengan menghapus field yang ditambahkan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-29 08:57:10 +07:00
daengdeni
cbba58cc50 fix(webstatement): perbaiki logika penentuan nilai datetime pada ExportStatementJob
Perubahan dilakukan untuk mengatasi masalah terkait nilai default `datetime` yang tidak sesuai.

- Mengganti nilai default `datetime` dari `'0000000000'` menjadi `$item->date_time`.
- Memperbaiki logika pengisian nilai `datetime` agar mempertimbangkan nilai dari `$item->$relation?->date_time` terlebih dahulu sebelum menggunakan nilai default `$datetime`.
- Perubahan diterapkan pada dua blok kode dalam berkas `ExportStatementJob.php`.

Langkah ini memastikan nilai `datetime` lebih akurat dan konsisten sesuai data terkait.
2025-05-28 13:09:40 +07:00
daengdeni
c31f3c0d1f refactor(webstatement): remove unused date formatting logic in ProcessDataCaptureDataJob
Menghapus logika format tanggal yang tidak dipakai untuk menyederhanakan kode dan meningkatkan keterbacaan.

- Menghapus konstanta `DATE_FIELDS` yang tidak lagi digunakan.
- Menghapus fungsi `formatDates` beserta implementasinya yang berisi logika untuk format tanggal dan waktu.
- Menghilangkan pemanggilan fungsi `formatDates` pada loop proses data CSV.
- Optimasi kode untuk mengurangi kompleksitas dan potensi error terkait parsing tanggal/tanggal dan waktu.
- Memastikan data diproses tanpa perlu manipulasi format tanggal yang redundant.
2025-05-28 12:07:50 +07:00
daengdeni
762b1457ba feat(webstatement): update date formatting logic with dynamic relation mapping
- Tambahkan logika untuk memetakan prefix `trans_reference` ke hubungan objek terkait menggunakan `relationMap`.
- Update method untuk mengambil nilai `date_time` dari properti terkait berdasarkan mapping prefix (`FT`, `TT`, `DC`, `AA`) dan fallback ke default `0000000000` jika mapping tidak ditemukan.
- Modifikasi format tanggal menggunakan kombinasi `booking_date` dan parsing substring yang dinamis dari properti `date_time`.
- Perbaiki pengolahan format tanggal pada dua method yang terpengaruh untuk memastikan data yang lebih dinamis dan akurat.
- Tambahkan fallback error handling tetap menggunakan logging untuk mendeteksi potensi kesalahan format.
2025-05-28 10:38:27 +07:00
daengdeni
1b3e0ed30d feat(webstatement): implement batch processing for data jobs
- Tambahkan pemrosesan data secara bertahap (chunking) dengan konstanta `CHUNK_SIZE` untuk mengurangi penggunaan memori dan menangani data dalam jumlah besar.
- Perbarui `ProcessArrangementDataJob`:
  - Tambahkan properti `arrangementBatch` untuk menyimpan batch data sementara.
  - Implementasikan metode `addToBatch` untuk menambahkan data ke batch.
  - Implementasikan metode `saveBatch` untuk menyimpan data batch ke database menggunakan metode bulk `TempArrangement::upsert`.
  - Tambahkan logging untuk melacak progress pemrosesan data per chunk.
  - Reset batch setelah penyimpanan atau ketika terjadi error untuk menghindari pemrosesan ulang data yang gagal.
- Perbarui `ProcessBillDetailDataJob`:
  - Tambahkan properti `billDetailBatch` untuk menyimpan batch data sementara.
  - Implementasikan metode `addToBatch` untuk menambahkan data ke batch.
  - Implementasikan metode `saveBatch` untuk menyimpan data batch ke database menggunakan metode bulk `TempBillDetail::upsert`.
  - Tambahkan logging untuk melacak progress pemrosesan data per chunk.
  - Reset batch setelah penyimpanan atau ketika terjadi error untuk menghindari pemrosesan ulang data yang gagal.
- Perbaiki penghitungan error count dengan menambahkannya saat terjadi error pada pemrosesan batch.
- Tambahkan timestamp (`created_at` dan `updated_at`) pada setiap record dalam batch sebelum disimpan ke database.
- Lakukan cleanup batch secara otomatis setelah pemrosesan selesai.
2025-05-28 09:29:46 +07:00
daengdeni
0b607f86cb feat(webstatement): implement batch processing in job data handling
- 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.
2025-05-28 09:29:18 +07:00
daengdeni
30662b97d5 feat(webstatement): optimize data processing with batching strategy
- 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.
2025-05-28 09:28:12 +07:00
daengdeni
cbfe2c4aa9 feat(webstatement): optimize customer data processing with batch handling
- 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.
2025-05-28 09:27:49 +07:00
daengdeni
a8dafb23c5 refactor(webstatement): optimize ProcessAccountDataJob logic with batch processing
- 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`.
2025-05-28 08:21:25 +07:00
Daeng Deni Mardaeni
60e60b4fef fix(webstatement): perbaiki typo atribut 'narrativ' menjadi 'narrative'
- 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>
2025-05-27 21:57:39 +07:00
daengdeni
4c1163fa05 refactor(export-statement): improve narrative generation logic
- 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.
2025-05-27 15:52:24 +07:00
Daeng Deni Mardaeni
13344959c4 fix(Webstatement): inisialisasi default untuk properti $period di semua Job
- 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>
2025-05-27 03:58:24 +07:00
Daeng Deni Mardaeni
d6bd84c4e5 Merge remote-tracking branch 'composer/master' 2025-05-26 20:24:26 +07:00
Daeng Deni Mardaeni
4321150d13 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 <ddeni05@gmail.com>
2025-05-26 20:23:58 +07:00
daengdeni
299ed0b018 fix(export): improve narrative generation logic and add additional ID formats
- 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.
2025-05-26 16:47:02 +07:00
Daeng Deni Mardaeni
9025663954 refactor(migrasi): optimalkan import dan reorganisasi method __call
- Refactor import `Jobs` menggunakan sintaks kurung kurawal untuk mengurangi redundansi dan meningkatkan keterbacaan kode.
- Pindahkan metode `__call` di atas `processData` untuk memperbaiki struktur kode sehingga lebih terorganisir.
- Atur ulang logika dalam `__call` tanpa mengubah fungsionalitas utama tetapi memperbaiki posisi metode dalam kelas.
- Hilangkan duplikasi metode `__call` dengan memindahkannya ke lokasi baru.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-26 15:49:00 +07:00
daengdeni
c6363473ac refactor(jobs): optimize job classes by adding modular methods and constants
- 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.
2025-05-26 15:26:43 +07:00
daengdeni
41ed7c1ed9 refactor(jobs): improve flexibility in periods parameter handling
- 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.
2025-05-26 13:47:52 +07:00
daengdeni
1e1120d29b refactor(migrasi): simplify and centralize data processing logic
- Menghapus metode proses data individual untuk setiap tipe data dengan menggantinya menjadi metode `processData`.
- Mengintegrasikan semua tipe proses data ke dalam konstanta `PROCESS_TYPES` untuk mempermudah pengelolaan dan memperluas tipe proses.
- Menambahkan konstanta `PARAMETER_PROCESSES` dan `DATA_PROCESSES` untuk memisahkan proses data parameter dan data utama.
- Mengimplementasikan metode `__call` untuk mendukung pemanggilan metode dinamis berdasarkan tipe proses data.
- Memperbaiki metode `index` untuk mendukung pemrosesan otomatis data parameter dan data utama dalam urutan yang ditentukan.
- Menambahkan logging untuk setiap proses data agar memudahkan debugging dan monitoring.
- Memastikan pengembalian respons JSON seragam untuk keberhasilan dan kegagalan setiap proses data.
2025-05-26 13:40:37 +07:00
Daeng Deni Mardaeni
3cb3eb449b feat(webstatement): perbaikan mapping data dan penambahan format trans referensi
- 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>
2025-05-26 09:47:21 +07:00
Daeng Deni Mardaeni
6a7a3418b7 fix(webstatement): perbaiki logika kondisi periode kosong di job processing
- 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>
2025-05-26 09:12:17 +07:00
Daeng Deni Mardaeni
8abb8f6901 fix(webstatement): perbaikan pengecekan variabel periode dalam processing data
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>
2025-05-26 09:05:53 +07:00
Daeng Deni Mardaeni
23611ef79b refactor(webstatement): update job and model for arrangement processing
- 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>
2025-05-26 08:44:10 +07:00
Daeng Deni Mardaeni
429df7035c fix(webstatement): optimalkan proses pembersihan data dan update balance
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>
2025-05-26 08:28:28 +07:00
Daeng Deni Mardaeni
e531193c06 Merge remote-tracking branch 'composer/master' 2025-05-24 19:44:32 +07:00
Daeng Deni Mardaeni
38987ce8e3 refactor(webstatement): remove _parameter folder skipping logic from processing jobs
- 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>
2025-05-24 19:43:54 +07:00
Daeng Deni Mardaeni
cd447eb019 refactor(jobs): simplify jobs and controllers by replacing period array with single period parameter
- 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>
2025-05-24 19:40:40 +07:00
Daeng Deni Mardaeni
85b8bfa07b fix(webstatement): perbaikan parameter dan refactor pada ProcessCompanyDataJob
- 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>
2025-05-24 19:22:30 +07:00
Daeng Deni Mardaeni
bf7206f927 refactor(webstatement): ubah parameter periode dari array menjadi string
- 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>
2025-05-24 19:19:33 +07:00
daengdeni
562cc94822 refactor(database): ubah tipe kolom dari date/datetime/decimal menjadi string di berbagai tabel
Ubah tipe kolom di database yang sebelumnya menggunakan date, datetime, atau decimal menjadi string. Langkah ini meningkatkan fleksibilitas penyimpanan data.

- `customers` table:
  - Ubah tipe kolom `date_of_birth` dari `date` menjadi `string`.

- `accounts` table:
  - Ubah tipe kolom `opening_date` dari `date` menjadi `string`.
  - Ubah tipe kolom `closure_date` dari `date` menjadi `string`.
  - Revisi kolom `start_year_bal` menjadi `string` dengan parameter yang disesuaikan.

- `ft_txn_type_condition` table:
  - Ubah tipe kolom `date_time` dari `dateTime` menjadi `string`.

- `data_captures` table:
  - Ubah tipe kolom `value_date`, `exposure_date`, dan `accounting_date` dari `date` menjadi `string`.
  - Ubah tipe kolom `date_time` dari `dateTime` menjadi `string`.
  - Ubah tipe kolom `amount_lcy`, `amount_fcy`, dan `exchange_rate` dari `decimal` menjadi `string`.

- `temp_arrangements` table:
  - Ubah tipe kolom `orig_contract_date` dan `start_date` dari `date` menjadi `string`.

- Model changes:
  - Hapus properti `casts` dari model berikut:
    - `AtmTransaction`
    - `DataCapture`
    - `FtTxnTypeCondition`
2025-05-24 17:04:31 +07:00