Commit Graph

58 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
55313fb0b0 feat(webstatement): tambahkan fitur retry dengan handling timeout pada laporan transaksi ATM
- Memperbarui logika retry pada `AtmTransactionReportController`:
  - Memperbolehkan retry jika status laporan adalah `failed`, `pending`, atau laporan dengan status `processing` yang telah melebihi batas waktu (1 jam).
  - Menambahkan atribut baru seperti `processing_hours` dan `is_processing_timeout` pada data untuk menampilkan informasi durasi proses dan flag timeout.
  - Mengubah status laporan menjadi `failed` jika melebihi batas waktu sebelum dilakukan retry.
  - Memperbarui error message untuk mencatat alasan timeout.

- Menambahkan metode baru `canRetry` pada controller:
  - Mengembalikan boolean jika laporan dapat di-retry berdasarkan status dan kondisi laporan.

- Memperbarui tampilan untuk bagian daftar laporan (`atm-reports/index.blade.php`):
  - Menambahkan tombol retry dengan warna yang disesuaikan (kuning/oranye untuk `failed`/`pending`, merah untuk timeout).
  - Memperbarui tampilan status laporan menjadi lebih informatif, termasuk keterangan durasi proses jika timeout.

- Memperbarui tampilan detail laporan (`atm-reports/show.blade.php`):
  - Menambahkan tombol retry dengan label tambahan "Retry (Timeout)" jika melebihi batas waktu proses.
  - Menampilkan informasi tambahan seperti waktu proses jika laporan dalam status `processing`.

- Menyediakan fungsi JavaScript baru `retryReport` untuk handling retry via AJAX:
  - Menyertakan konfirmasi sebelum retry.
  - Memperbarui tombol retry agar lebih reaktif terhadap perubahan status laporan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-10 11:17:17 +07:00
Daeng Deni Mardaeni
8a7d4f351c feat(webstatement): tambahkan fitur retry laporan transaksi ATM
- Menambahkan method baru `retry` pada `AtmTransactionReportController` untuk memproses ulang laporan transaksi ATM:
  - Mengizinkan retry untuk laporan dengan status `failed` atau `pending`.
  - Mereset status laporan menjadi `processing` dan membersihkan informasi error sebelumnya.
  - Dispatch ulang job `GenerateAtmTransactionReportJob`.
  - Menambahkan mekanisme error handling dengan memperbarui status laporan jika terjadi kegagalan.

- Memperbarui view `atm-reports/index.blade.php`:
  - Menambahkan tombol `Retry Job` pada baris laporan dengan status `failed` atau `pending`.
  - Menyediakan fungsi JavaScript untuk memproses retry dengan AJAX:
    - Menampilkan konfirmasi sebelum retry.
    - Reload halaman setelah retry selesai.

- Memperbarui view `atm-reports/show.blade.php`:
  - Menambahkan tombol `Retry Job` untuk laporan dengan status `failed`, `pending`, atau `completed` yang kehilangan file.
  - Menampilkan form retry dalam pesan error jika file laporan tidak tersedia.

- Memperbarui routing pada `web.php`:
  - Menambahkan route baru `atm-reports.retry` untuk endpoint retry dengan HTTP POST.

- Mendaftarkan ulang command `GenerateAtmTransactionReport` pada provider:
  - Memastikan job untuk retry sudah terdaftar pada sistem.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-09 01:53:20 +07:00
Daeng Deni Mardaeni
1f4d37370e feat(webstatement): tambahkan AtmTransactionReportController untuk pengelolaan laporan transaksi ATM
- Menambahkan controller `AtmTransactionReportController` untuk mengelola laporan transaksi ATM.
- Fungsi utama yang disediakan:
  1. **index**: Menampilkan daftar laporan transaksi ATM.
  2. **create**: Menampilkan form untuk permintaan laporan baru.
  3. **store**: Menghandle penyimpanan permintaan laporan baru, termasuk validasi input, pembuatan log laporan, dan dispatching job.
  4. **show**: Menampilkan detail laporan transaksi ATM berdasarkan log laporan.
  5. **download**: Melakukan unduhan file laporan jika telah selesai diproses.
  6. **authorize**: Menghandle otorisasi permintaan laporan, termasuk validasi status `approved` atau `rejected`.
  7. **dataForDatatables**: Memberikan data laporan untuk tabular dengan filter, sorting, dan pagination.
  8. **destroy**: Menghapus laporan transaksi ATM, termasuk file terkait jika ada.
  9. **sendEmail**: Mengirim laporan ke email jika laporan dan alamat email tersedia.

- Fitur tambahan:
  - Memastikan validasi input untuk keamanan data pengguna.
  - Menambahkan updating log laporan seperti status, error, hingga metadata unduhan.
  - Mendukung pencarian dan filtering data untuk pengelolaan laporan berjumlah besar.

- Dispatch job `GenerateAtmTransactionReportJob` untuk menghasilkan laporan transaksi secara background:
  - Menambahkan log detail jika terjadi kegagalan saat dispatch.

- Tujuan pembaruan:
  - Mempermudah pengelolaan dan pelacakan laporan transaksi ATM.
  - Menyediakan antarmuka user-friendly untuk pengguna, termasuk validasi dan feedback status laporan.
  - Meningkatkan fleksibilitas dan efisiensi pengelolaan laporan dengan mendukung filter, sorting, dan job asynchronous.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-08 23:42:25 +07:00
Daeng Deni Mardaeni
3720a24690 feat(webstatement): dukung multiple file r23 pada proses combine PDF
- Memperbarui `CombinePdfController`:
  - Menambahkan logika untuk mendukung multiple file r23, baik dari `local` maupun `sftp`.
  - Mengimplementasikan pencarian file secara dinamis menggunakan pola glob untuk file lokal (`local`).
  - Menambahkan proses pengunduhan file r23 secara bertahap berdasarkan urutan dari SFTP.
  - Menyortir file r23 berdasarkan urutan numerik untuk memastikan urutan yang benar dalam penggabungan PDF.
  - Memindahkan semua file r23 ke direktori sementara sebelum proses gabungan.

- Memungkinkan konfigurasi sumber file r23:
  - Jika `local`, sistem akan mencari semua file dengan nama akun dan variasi urutan di folder penyimpanan lokal.
  - Jika `sftp`, sistem akan mengunduh semua file r23 dengan pola tertentu dari SFTP dan menyimpannya secara temporer.

- Memperbarui log:
  - Menambahkan informasi jumlah file r23 yang ditemukan untuk setiap akun.
  - Menambahkan log error detail saat terjadi kegagalan pengunduhan file dari SFTP.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-08 10:33:27 +07:00
Daeng Deni Mardaeni
d85954bdf2 feat(webstatement): tambahkan pengaturan tujuan output dan unggah ke SFTP untuk combine PDF
- Memperbarui `CombinePdfJob`:
  - Menambahkan parameter baru `outputDestination`, `branchCode`, dan `period` pada constructor untuk pengaturan tujuan output.
  - Menambahkan opsi tujuan output ke `local` atau `sftp` pada proses combine PDF.
  - Menambahkan metode baru `uploadToSftp` untuk mengunggah file PDF hasil gabungan ke SFTP.
  - Mengatur jalur unggahan SFTP ke `combine/{period}/{branchCode}/{filename}`.
  - Menambahkan log informasi terkait jalur dan status unggahan file PDF ke SFTP.

- Memperbarui `CombinePdfController`:
  - Menambahkan konfigurasi `output_destination` untuk menentukan tujuan output (`local` atau `sftp`).
  - Memperbarui pemanggilan `CombinePdfJob::dispatch` dengan parameter baru untuk konfigurasi output dan SFTP.
  - Menyesuaikan log dan respons untuk mencerminkan tujuan output yang disetel.

- Tujuan pembaruan ini:
  - Memungkinkan pengaturan flexibel tujuan penyimpanan file PDF ke lokal atau SFTP.
  - Menyediakan log yang lebih informatif terkait proses combine PDF dan unggahan SFTP.
  - Mempermudah integrasi dan pengelolaan file PDF dengan pengaturan jalur dan periodisasi yang jelas.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-05 11:37:09 +07:00
Daeng Deni Mardaeni
db99465690 feat(webstatement): tambahkan konfigurasi sumber file r23 dan optimalkan log combine PDF
- Memperbarui fungsi `combinePdfs` di `CombinePdfController`:
  - Menambahkan konfigurasi sumber file `r23` dengan opsi `local` atau `sftp`.
  - Memindahkan logika pencarian file `r23` ke dalam pengaturan berbasis konfigurasi:
    - Jika menggunakan `local`, sistem mencari file `r23` dalam penyimpanan lokal.
    - Jika menggunakan `sftp`, sistem mengunduh file `r23` dari SFTP dan menyimpannya ke direktori sementara.
  - Menambahkan log informasi untuk menentukan sumber file `r23` yang digunakan (`local` atau `sftp`).
  - Merubah pencatatan log yang sebelumnya statis menjadi dinamis berdasarkan konfigurasi.

- Menyesuaikan pengelolaan jalur file `r23`:
  - Menambahkan jalur sementara untuk penyimpanan file hasil unduhan SFTP.
  - Memisahkan logika jalur file lokal dan file unduhan berdasarkan konfigurasi.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-05 11:31:31 +07:00
Daeng Deni Mardaeni
df5d0c420b feat(webstatement): optimalkan logika combine PDF dan pengaturan password dinamis
- Memperbarui fungsi `combinePdfs` di `CombinePdfController`:
  - Menambahkan dukungan pengunduhan file `r23` dari SFTP dan penyimpanan sementara ke direktori lokal.
  - Mengubah filter `branch_code` dari `ID0010001` menjadi `ID0010052` untuk pemrosesan akun.
  - Menambahkan log peringatan dan error untuk mengelola skenario file yang tidak ditemukan atau error saat unduhan dari SFTP.

- Memperkenalkan logika baru untuk pengaturan password dinamis pada file PDF:
  - Menambahkan metode `generatePassword` untuk menghasilkan password berdasarkan data customers.
  - Format password: kombinasi `ddMmmyyyyXX` (contoh: 05Oct202585), menggunakan tanggal yang relevan dan 2 digit terakhir nomor rekening.
  - Handling fallback ke nomor rekening jika tidak ada data tanggal yang tersedia.
  - Menambahkan validasi parsing tanggal untuk menghindari error format.

- Tujuan pembaruan ini:
  - Memastikan proses combine PDF lebih fleksibel dengan pengunduhan file dari SFTP.
  - Meningkatkan keamanan PDF dengan pengaturan password dinamis berdasarkan data customers.
  - Mempermudah troubleshooting dengan penambahan log yang lebih informatif terkait proses file dan password.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-05 11:19:25 +07:00
Daeng Deni Mardaeni
336ef8cf3a feat(webstatement): perbarui logika pemrosesan combine PDF dan parameter periode
- Memperbarui fungsi `combinePdfs` di `CombinePdfController`:
  - Menghapus penggunaan parameter dari request dan mengganti dengan parameter langsung `$period`.
  - Menambahkan filter `branch_code` `ID0010001` pada pemanggilan data akun untuk memastikan hanya akun tertentu yang diproses.
  - Mengubah jalur pencarian file PDF ke direktori baru: `app/STMT/r14` dan `app/STMT/r23` untuk menyelaraskan struktur penyimpanan file.

- Memperbarui command `webstatement:combine-pdf`:
  - Menambahkan opsi baru `--period` untuk menyederhanakan pengaturan periode penggabungan PDF melalui format `Ym` (contoh: 202506).
  - Menghapus penggunaan `request()` pada command untuk memaksimalkan pengelolaan periode langsung dari opsi command-line.

- Tujuan pembaruan ini:
  - Memastikan proses combine PDF hanya memproses data relevan berdasarkan filter branch dan struktur direktori baru.
  - Menyempurnakan fleksibilitas parameter periode pada command-line untuk mengurangi dependensi terhadap input request.
  - Meningkatkan konsistensi dan efisiensi dalam pengelolaan file PDF sesuai periode dan filter branch tertentu.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-04 18:55:29 +07:00
Daeng Deni Mardaeni
b71fc1b3f9 feat(webstatement): ubah format respons menjadi JSON pada fungsi ekspor pernyataan
- Memperbarui fungsi dalam `WebstatementController`:
  - Mengganti format respons sebelumnya dengan `array` menjadi `response()->json()` untuk semua respon sukses maupun error.
  - Menyesuaikan return pada kasus keberhasilan pengantrean job ekspor pernyataan.
  - Menambahkan handling kesalahan menggunakan `response()->json()` untuk memberikan informasi error yang lebih terstruktur dan konsisten.

- Perubahan ini bertujuan untuk:
  - Mengkonsolidasikan format respons API menjadi JSON agar lebih sesuai dengan praktik terbaik pengembangan API.
  - Mempermudah pengguna dalam memproses respons API, terutama yang bekerja dengan data JSON.
  - Meningkatkan konsistensi logika penanganan respons dalam aplikasi.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-04 15:28:41 +07:00
Daeng Deni Mardaeni
e5f3a67374 feat(webstatement): tambahkan command untuk ekspor pernyataan rekening berdasarkan periode
- Menambahkan command baru `webstatement:export-period-statements`:
  - Mendukung opsi parameter `--account_number` dan `--period` untuk menentukan rekening dan periode ekspor.
  - Memproses data pernyataan rekening dengan memanggil fungsi `printStatementRekening` pada `WebstatementController`.
  - Menampilkan log proses, termasuk jumlah job ekspor yang berhasil diajukan dan pesan error jika terjadi.

- Memperbarui fungsi `printStatementRekening` di `WebstatementController`:
  - Menambahkan parameter input `$accountNumber` dan `$period` untuk mendukung multi-periode secara dinamis.
  - Menyesuaikan periode default ke bulan dan tahun saat ini jika parameter tidak disediakan.
  - Memvalidasi dan mengambil data saldo berdasarkan `account_number` dan `period`.

- Tujuan pembaruan ini:
  - Mendukung efisiensi proses ekspor data rekening dalam periode tertentu.
  - Memberikan fleksibilitas lebih dalam command-line operasi pengolahan data pernyataan.
  - Menyediakan feedback proses yang jelas kepada pengguna, baik sukses maupun error.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-04 15:20:14 +07:00
Daeng Deni Mardaeni
701432a6e7 feat(webstatement): sesuaikan logika pemrosesan parameter migrasi harian
- Memperbarui pemrosesan parameter pada `ProcessDailyMigration`:
  - Mengubah logika pengiriman parameter `process_parameter` ke `MigrasiController`:
    - Sebelumnya mengirimkan parameter dalam bentuk array.
    - Sekarang parameter dikirimkan langsung tanpa pembungkusan array.
  - Memastikan parameter diterima dan diproses sesuai dengan perubahan pada controller.

- Memodifikasi fungsi `index` pada `MigrasiController`:
  - Menambahkan parameter opsional `$processParameter` pada fungsi.
  - Mengganti penggunaan `request('process_parameter')` dengan langsung memeriksa `$processParameter`.
  - Menghilangkan dependensi langsung terhadap input request untuk meningkatkan fleksibilitas pemrosesan.

- Tujuan pembaruan ini:
  - Menyederhanakan struktur parameter yang digunakan dalam pemrosesan migrasi harian.
  - Mengurangi gangguan yang mungkin terjadi akibat ketergantungan terhadap input langsung dari request.
  - Memastikan konsistensi dan kompatibilitas pengiriman parameter dari command ke controller.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-04 15:09:08 +07:00
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
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
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
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
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
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
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
Daeng Deni Mardaeni
29ed72ad8b feat(webstatement): tambahkan atribut client untuk pemisahan data per klien
- 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>
2025-05-24 14:55:36 +07:00
Daeng Deni Mardaeni
d6915aef1c fix(migrasi): perbaiki pesan respons untuk pengecekan folder dan proses data
- Memperbarui pesan respons ketika folder periode tidak ditemukan di penyimpanan SFTP agar menyertakan informasi periode secara dinamis.
- Memperbaiki pesan respons ketika pekerjaan pemrosesan data berhasil untuk menyertakan informasi periode yang diproses.
- Meningkatkan kejelasan informasi dalam respon JSON untuk kebutuhan debugging dan pelacakan yang lebih baik.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-24 14:33:32 +07:00
Daeng Deni Mardaeni
d1962113ed feat(webstatement): update migrasi workflow and optimize period handling
- Menambahkan metode `index_manual` pada `MigrasiController` untuk pemrosesan manual.
- Mengganti implementasi metode `index` di `MigrasiController` agar secara otomatis menentukan dan memproses data dengan periode hari sebelumnya.
- Menambahkan validasi untuk memeriksa keberadaan folder periode pada storage SFTP sebelum melakukan pemrosesan.
- Menyesuaikan logika pemanggilan fungsi-fungsi pemrosesan data sesuai urutan:
  - `ProcessCategoryData`
  - `ProcessCompanyData`
  - `processCustomerData`
  - `processAccountData`
  - `processStmtEntryData`
  - `ProcessDataCaptureData`
  - `processFundsTransferData`
  - `ProcessTellerData`
  - `ProcessAtmTransaction`
  - `processArrangementData`
  - `processBillDetailData`
- Memodifikasi daftar periode pada metode `listPeriod` di `WebstatementController` untuk secara dinamis mengambil periode hari sebelumnya menggunakan `date('Ymd', strtotime('-1 day'))`.
- Menghapus elemen hardcoded pada daftar periode untuk efisiensi kustomisasi.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-24 13:54:49 +07:00
daengdeni
a3f2244fee refactor(webstatement): simplify and enhance statement export process
- Menghapus logika dan kode terkait pengunduhan, pembuatan, dan pengelolaan file statement yang berlebihan.
- Menambahkan fungsi `listAccount` untuk mendapatkan daftar nomor akun secara langsung.
- Menambahkan fungsi `listPeriod` untuk mengatur daftar periode yang digunakan dalam proses.
- Menambahkan fungsi `getAccountBalance` untuk mengakses saldo akun berdasarkan nomor akun dan periode.
- Mengubah metode `index` menjadi lebih modular, menggunakan fungsi tambahan untuk menyederhanakan pembuatan data dan queue statement.
- Menyederhanakan tanggapan JSON untuk pesan keberhasilan pengajuan job export.
- Mengimpor model `AccountBalance` yang diperlukan untuk fungsi baru.
2025-05-24 08:59:20 +07:00
Daeng Deni Mardaeni
ed4ffb4254 feat(migrasi): aktifkan kembali pemrosesan data untuk berbagai periode
- Mengubah daftar periode yang diproses dengan mengaktifkan subset baru ('20250520', '20250521', '20250522') dan menonaktifkan subset lama dengan kondisi komentar.
- Mengaktifkan kembali berbagai metode pemrosesan data:
  - `ProcessCategoryData` dan `ProcessCompanyData` diaktifkan untuk setiap periode.
  - `processCustomerData` serta `processAccountData` mendapatkan aktifasi penuh.
  - Pemrosesan detail: `processStmtEntryData`, `ProcessDataCaptureData`, `processFundsTransferData`, `ProcessTellerData`, dan `ProcessAtmTransaction` juga diaktifkan.
- Metode `processArrangementData` dan `processBillDetailData` juga dimasukkan kembali dalam workflow pemrosesan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-23 20:20:17 +07:00
Daeng Deni Mardaeni
ac6d139b4a refactor(migrasi): ubah logika pengolahan folder periode dan data di SFTP
- Nonaktifkan penggunaan SFTP disk untuk mendapatkan daftar folder periode.
- Gantikan `allDirectories` dengan daftar hardcoded periode langsung di kode.
- Tambahkan daftar periode berupa array statis untuk menggantikan logika filter otomatis.
- Ubah proses iterasi data:
  - Nonaktifkan pemanggilan metode `ProcessCategoryData` dan `ProcessCompanyData`.
  - Aktifkan pemanggilan metode `processAccountData` untuk setiap periode.
  - Nonaktifkan proses data lainnya seperti `processCustomerData`, `ProcessTellerData`, dan `ProcessAtmTransaction`.
- Pastikan response JSON tetap konsisten dengan hasil dan status HTTP.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-23 19:57:39 +07:00
daengdeni
eab14ff1e1 feat(webstatement): support batch processing for export statement jobs
- Ubah data menjadi array untuk memungkinkan pemrosesan batch.
- Tambahkan loop untuk memproses setiap data entry dan mendispatch job secara individual.
- Simpan job id dari setiap job yang didispatch ke array `jobIds`.
- Update respons JSON untuk mencantumkan daftar job yang telah didispatch:
  - Tambahkan informasi `job_id`, `account_number`, `period`, dan `file_name` untuk setiap job.
- Memperbaiki pesan respons agar sesuai dengan perubahan proses yang mendukung banyak job.
2025-05-22 11:55:32 +07:00
Daeng Deni Mardaeni
04f6f02702 feat(webstatement): tambahkan fitur eksport dan download statement
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>
2025-05-22 09:03:34 +07:00
Daeng Deni Mardaeni
d5495d721e feat(webstatement): tambah pemrosesan data ATM Transaction
- 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>
2025-05-21 22:14:58 +07:00
Daeng Deni Mardaeni
e511025307 feat(webstatement): tambahkan fitur proses data teller
- 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>
2025-05-21 22:01:31 +07:00
Daeng Deni Mardaeni
285c2409ea feat(webstatement): tambah fitur pemrosesan data kategori
- 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>
2025-05-21 21:36:45 +07:00
daengdeni
3c061f40f7 feat(webstatement): enhance statement generation and add narrative formatting logic
- Menambahkan logika baru untuk menghasilkan data statement dalam format JSON dan CSV.
- Memuat data transaksi statement menggunakan model `StmtEntry` dengan relasi `ft` dan `transaction`.
- Mengimplementasikan proses mapping data untuk:
  - Penambahan urutan nomor (sequential numbering).
  - Format tanggal transaksi menggunakan properti `booking_date` dan `date_time`.
  - Klasifikasi jenis transaksi (debit atau kredit).
  - Perhitungan running balance.
  - Pembangkitan narrative deskripsi transaksi.
- Menambahkan fungsi `generateNarrative` untuk menghasilkan deskripsi transaksi berdasarkan logika parameter dinamis.
- Menggunakan model `TempStmtNarrFormat` dan `TempStmtNarrParam` untuk format dan parameter narrative.
- Menambahkan fungsi `getFormatNarrative` untuk mem-parsing format narrative dan memasukkan placeholder value sesuai data transaksi.
- Fungsi `getTransaction` ditambahkan sebagai fallback untuk mengambil field secara spesifik dari transaksi.
- Menyediakan opsi data dalam format CSV menggunakan stream response dengan pemisah data berupa pipe (`|`).
- Menambahkan route baru pada `/` untuk mengakses controller `WebstatementController` dan fungsionalitas ini di route `webstatement.index`.
2025-05-21 21:18:40 +07:00
Daeng Deni Mardaeni
39e356e2ff refactor(webstatement): update data processing and migration logic
- 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>
2025-05-21 08:17:47 +07:00
Daeng Deni Mardaeni
fb6fd534d5 feat(webstatement): tambah fitur pemrosesan data "Data Capture"
- 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>
2025-05-20 22:15:44 +07:00
Daeng Deni Mardaeni
359cfea905 feat(webstatement): tambahkan proses data company
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>
2025-05-20 22:06:25 +07:00
Daeng Deni Mardaeni
24700c5bd8 feat(webstatement): tambahkan proses pengolahan data FtTxnTypeCondition
- 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>
2025-05-20 21:38:27 +07:00
daengdeni
fb47064dd4 refactor(data-processing): adjust data processing logic and update file handling
- 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.
2025-05-20 17:18:20 +07:00
Daeng Deni Mardaeni
c442b27dad feat(webstatement): optimalkan proses migrasi data SFTP
- 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>
2025-05-20 16:44:59 +07:00
Daeng Deni Mardaeni
427d1291f8 feat(webstatement): tambah fitur pengiriman statement ke email
- Menambahkan kolom `email` dan `email_sent_at` pada tabel `print_statement_logs`.
- Menambah endpoint baru untuk mengirim statement via email (`/send-email`).
- Mengupdate form request untuk validasi email pada `PrintStatementRequest`.
- Menambah logika pengiriman email dengan menggunakan `Mailable` (`StatementEmail`).
- Memvalidasi ketersediaan file statement sebelum dikirimkan via email.
- Menambahkan tombol baru pada tampilan frontend untuk opsi `Send to Email`.
- Mengupdate file zip untuk pengiriman email ketika ada statement dalam rentang waktu.
- Refaktor dan perbaikan minor pada kode terkait check statement availability.
- Menyesuaikan title menu pada `module.json` dari "Periode Statement" ke "Create Periode" dan "Print Statement" ke "Statement".

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-13 16:44:22 +07:00
Daeng Deni Mardaeni
8e5c2ce79e feat(webstatement): update print statement functionalities
- Menambahkan kolom `remarks` pada tabel print_statement_logs untuk menyimpan catatan tambahan.
- Mengubah validasi periode pada `PrintStatementRequest` untuk mencegah request duplikasi periode.
- Memperbaiki tampilan di `statements.index` dan `statements.show` agar lebih responsif dan informatif.
- Mengubah logika download statement untuk mendukung file range periode dalam format zip.
- Menambahkan logika cek file statement berdasarkan ketersediaan file di storage SFTP.
- Menghapus file legacy `create.blade.php` yang tidak lagi digunakan.
- Menyesuaikan ikon menu dari `calendar` ke `printer` agar lebih relevan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-13 14:01:41 +07:00
Daeng Deni Mardaeni
823ccf0fe7 refactor(webstatement): improve ATM card sync logic and error handling
- 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>
2025-05-12 18:28:34 +07:00
Daeng Deni Mardaeni
eaa847e7e7 feat(webstatement): tambah fitur request dan pengelolaan print statement
- Tambah menu baru untuk "Print Statement" di konfigurasi module.
- Tambah route baru untuk pengelolaan statement seperti list, download, otorisasi, dan datatables.
- Implementasi `PrintStatementController` untuk operasi terkait request dan manajemen statement.
- Implementasi model `PrintStatementLog` untuk mencatat log request statement, termasuk validasi dan relasi yang dibutuhkan.
- Tambah form request `PrintStatementRequest` untuk validasi input.
- Tambah migration untuk tabel `print_statement_logs` yang menyimpan rekaman log statement.
- Tambah halaman blade untuk index dan form request statement.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-11 18:15:21 +07:00
Daeng Deni Mardaeni
7df50b5141 feat(webstatement): implement periode statement management feature
- Menambahkan menu "Periode Statement" pada module.json dengan akses untuk role administrator.
- Menambahkan model `PeriodeStatement` dengan fitur tracking user dan scoped query.
- Menyediakan controller `PeriodeStatementController` dengan fungsi CRUD, otorisasi, proses, ekspor data ke Excel, dan datatables.
- Menambahkan request validation melalui `PeriodeStatementRequest`.
- Menyediakan view untuk list, create, edit, dan otorisasi periode statement.
- Menambahkan routing termasuk resource routes dan breadcrumbs untuk mendukung fitur ini.
- Menambahkan migrasi database `periode_statements` dengan kolom untuk menyimpan data periode, status, otorisasi, serta metadata.
- Fitur ini memungkinkan pengelolaan dan pemrosesan periode statement secara terstruktur dan aman.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-11 15:58:49 +07:00
Daeng Deni Mardaeni
f899fed8a7 refactor(webstatement): perbarui logika filter dan pencarian untuk SyncLogs
- Mengubah logika pengambilan nilai filter pencarian dari `request` menjadi format JSON terstruktur.
- Menambahkan validasi untuk memastikan hanya filter yang memiliki nilai diterapkan.
- Memperbaiki logika filter di frontend dengan menggabungkan parameter pencarian dan filter lainnya sebelum mengirimkannya.
- Mengganti metode `setRequestParams` di frontend menjadi `search` untuk pengiriman parameter pencarian yang lebih terstruktur.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-10 16:26:10 +07:00
Daeng Deni Mardaeni
e1a0167c78 feat(sync-logs): tambahkan fitur download file CSV
- Tambahkan tombol download file di modal detail sinkronisasi.
- Implementasikan pengecekan dan mekanisme download file di `SyncLogsController`.
- Tambahkan route baru untuk mendukung proses download file.
- Perbarui tampilan dan logika modal untuk mendukung fitur download.
- Pastikan validasi file sebelum proses download dan berikan pesan error jika file tidak ditemukan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-10 15:36:16 +07:00
Daeng Deni Mardaeni
e1e52f78fb ```
feat(sync-logs): tambah fitur sinkronisasi log biaya kartu

- Menambahkan route, controller, model, dan migration untuk fitur baru `sync-logs`.
- Mengganti referensi `BiayaKartuController` menjadi `SyncLogsController`.
- Menyediakan halaman untuk menampilkan data log sinkronisasi dengan filter, pencarian, dan pagination.
- Menambahkan kemampuan melihat detail proses sinkronisasi langsung dari modal.
- Memperbarui `module.json` dengan item menu baru untuk fitur log sinkronisasi.
- Menghapus `BiayaKartuController` yang sudah tidak digunakan lagi.
```

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-10 15:12:56 +07:00
Daeng Deni Mardaeni
68cfb9fb2c feat(webstatement): tambahkan fitur pengelolaan kartu ATM
- Tambahkan menu "Kartu ATM" pada konfigurasi menu module.
- Implementasi controller `KartuAtmController` dengan fungsi `index` dan `dataForDatatables`.
- Tambahkan route untuk pengelolaan "Kartu ATM" termasuk datatables.
- Tambahkan model relasi `biaya` pada model `Atmcard`.
- Tambahkan view halaman daftar kartu ATM dengan fitur datatables.
- Tambahkan breadcrumbs untuk halaman "Kartu ATM".

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-10 13:18:46 +07:00
Daeng Deni Mardaeni
496d7f58c7 feat(webstatement): tambah fitur manajemen Jenis Kartu
- Menambahkan model, migrasi, seed, controller, request, dan tampilan untuk fitur Jenis Kartu.
- Menambahkan routing dan breadcrumbs untuk Jenis Kartu.
- Mengimplementasikan fungsi CRUD, ekspor data ke Excel, dan penghapusan multiple records pada Jenis Kartu.
- Memperbarui `module.json` untuk menampilkan menu Jenis Kartu di bagian Master.
- Menambah seeder untuk data awal Jenis Kartu.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-10 10:47:10 +07:00
Daeng Deni Mardaeni
d4ef7280ce feat(webstatement): tambahkan command dan job untuk generate CSV biaya kartu ATM
- Tambahkan `GenerateBiayaKartuCsvCommand` untuk membuat file CSV biaya kartu ATM melalui console command.
- Implementasikan job `GenerateBiayaKartuCsvJob` sebagai pengganti proses manual pembuatan CSV di controller.
- Hapus logika pembuatan CSV manual di `BiayaKartuController`.
- Update scheduler untuk menjalankan command baru (`webstatement:generate-biaya-kartu-csv`) setiap tanggal 15 pukul 00:00.
- Perbarui waktu schedule command `webstatement:generate-biaya-kartu` menjadi pukul 22:00 setiap tanggal 14.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-09 09:07:39 +07:00