- 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>
- Menambahkan view `atm-reports/show.blade.php` untuk menampilkan detail laporan transaksi ATM:
- Menampilkan informasi laporan seperti periode, tanggal laporan, status, dan status otorisasi.
- Menyediakan informasi file laporan jika status selesai, seperti path, ukuran file, dan jumlah data.
- Menampilkan pesan error jika status laporan gagal, termasuk pesan kesalahan detail.
- Menampilkan status unduhan laporan beserta waktu unduhan jika sudah diunduh.
- Menambahkan informasi pengguna terkait:
- Pihak yang membuat, memodifikasi, dan memberikan otorisasi laporan.
- Metadata tambahan seperti IP address dan user agent.
- Menambahkan form otorisasi untuk laporan dengan status `pending authorization`:
- Menyediakan opsi untuk `approve` atau `reject` laporan.
- Menyertakan field remarks sebagai catatan keputusan otorisasi.
- Memasukkan elemen navigasi:
- Tombol kembali ke daftar laporan.
- Tombol unduh file laporan (jika tersedia).
- Menyertakan scripting tambahan untuk inisialisasi dinamika halaman menggunakan JavaScript.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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>
- Menambahkan file migrasi baru `create_atm_transaction_report_logs_table`:
- Membuat tabel `atm_transaction_report_logs` untuk menyimpan log laporan transaksi ATM.
- Struktur tabel meliputi:
- Field `period` (format Ymd) untuk menyimpan periode laporan.
- Status laporan `status` dengan opsi: `pending`, `processing`, `completed`, dan `failed`.
- Status otorisasi `authorization_status` dengan opsi: `pending`, `approved`, dan `rejected`.
- Informasi file laporan seperti `file_path`, `file_size`, dan `record_count`.
- Informasi kesalahan dengan `error_message`.
- Status unduhan laporan dengan `is_downloaded` dan `downloaded_at`.
- Informasi user terkait (`user_id`, `created_by`, `updated_by`, dan `authorized_by`).
- Metadata lain seperti `ip_address`, `user_agent`, serta timestamps.
- Menambahkan beberapa indeks untuk optimasi:
- Indeks untuk kolom `period`, `status`, `authorization_status`, dan `created_at`.
- Menambahkan fungsi rollback untuk menghapus tabel jika migrasi dibatalkan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan command baru `webstatement:generate-atm-report`:
- Membuat laporan transaksi ATM berdasarkan periode yang ditentukan melalui opsi `--period` dengan format `Ymd` (contoh: 20250512).
- Melakukan validasi format periode untuk memastikan input sesuai.
- Menampilkan pesan error jika format periode tidak valid atau tidak disertakan.
- Mengintegrasikan dengan job `GenerateAtmTransactionReportJob`:
- Mendukung antrian jalur background untuk pengelolaan laporan besar.
- Menyediakan informasi log tambahan, seperti periode laporan dan status pembuatan laporan di background.
- Menangani error saat proses:
- Menampilkan pesan error detail jika terjadi exception saat dispatch job.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan class baru `GenerateAtmTransactionReportJob` untuk menghasilkan laporan transaksi ATM dalam format CSV.
- Memproses transaksi ATM berdasarkan periode tertentu dengan pagination menggunakan `chunk`.
- Mendukung inisialisasi log laporan menggunakan model `AtmTransactionReportLog`.
- Menyertakan fitur untuk menulis header CSV dan data transaksi, termasuk handling escape karakter pada nilai CSV.
- Memperkenalkan direktori penyimpanan baru:
- Path: `reports/atm_transactions/<period>.csv`.
- Membuat direktori jika belum ada sebelum menyimpan laporan.
- Menambahkan logging:
- Menyertakan informasi waktu mulai, lokasi file laporan CSV, dan jumlah transaksi yang diproses.
- Menangani error dengan logging error message dan memperbarui status log laporan.
- Menambahkan logika pembaruan log laporan:
- Field `status`, `file_path`, `file_size`, dan `record_count` akan diperbarui setelah proses selesai.
- Handling error pada log laporan jika proses gagal.
- Fitur tambahan:
- Handling escape untuk nilai CSV guna memastikan format tetap valid.
- Menangani error dengan throwing exception jika terjadi masalah selama proses.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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>
- Menghapus penggunaan batching data (`transferBatch`) untuk penyederhanaan logika:
- Menghapus konstanta `CHUNK_SIZE`.
- Menghapus variabel dan metode terkait batching, seperti `transferBatch`, `addToBatch`, dan `saveBatch`.
- Memproses dan menyimpan setiap baris data langsung melalui metode `saveRecord`.
- Memperbarui metode `processRow`:
- Menggantikan logika penambahan batch dengan langsung memanggil `saveRecord`.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengganti pemanggilan trait `Userstamps` dari `Wildside\Userstamps\Userstamps` menjadi `Mattiverse\Userstamps\Traits\Userstamps`:
- Update dilakukan pada file `Modules/Webstatement/app/Models/Base.php`.
- Perubahan ini memastikan penggunaan namespace yang sesuai dan kompatibel dengan library yang terbaru.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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>
- 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>
- 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>
- Mengubah tampilan informasi pada log command `ExportPeriodStatements`:
- Mengganti variabel yang ditampilkan di log dari `jobCount` menjadi `accountNumber`.
- Memastikan log lebih relevan dengan konteks data yang diproses.
- Perubahan ini bertujuan untuk:
- Menyediakan informasi log yang lebih jelas dan sesuai dengan proses yang dijalankan.
- Meningkatkan keakuratan komunikasi informasi kepada pengguna command.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Memperbarui logika untuk memfilter atribut array `fillable` pada model `Sector`:
- Menambahkan filter untuk mengabaikan atribut `id` agar tidak terikut dalam proses.
- Mengoptimalkan proses pengambilan header CSV dengan hanya menggunakan atribut yang relevan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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>
- 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>
- Menambahkan kelas command `ExportPeriodStatements` ke dalam register provider `WebstatementServiceProvider`.
- Memungkinkan penggunaan command ini untuk mengolah dan mengekspor data pernyataan rekening dengan periode tertentu.
- Menyempurnakan fungsionalitas ekspor data untuk mendukung kebutuhan laporan sesuai interval waktu yang ditentukan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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>
- 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>
- Memperbarui rute pada file `web.php`:
- Mengubah fungsi controller untuk endpoint `/debug/test-statement` dari `index` menjadi `printStatementRekening` pada `WebstatementController`.
- Tujuan pembaruan:
- Mengarahkan fungsi endpoint ke proses yang sesuai (cetak statement rekening).
- Memastikan konsistensi dan keakuratan logika pada pengelolaan rute.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
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>
- 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>
- 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>
- 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>
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>
- 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>
- 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>
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.
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.
- 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.
- 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.
- Menambahkan konstanta `CHUNK_SIZE` dengan nilai 1000 untuk memungkinkan pemrosesan data dalam bentuk batch guna mengurangi penggunaan memori.
- Memperkenalkan atribut batch baru (`atmTransactionBatch`, `captureBatch`, `transferBatch`, dan `tellerBatch`) untuk menyimpan data sementara sebelum disimpan ke database.
- Mengganti metode penyimpanan langsung dengan menambahkan data ke batch melalui fungsi baru `addToBatch()`.
- Menambahkan fungsi `saveBatch()` untuk melakukan operasi penyimpanan data dalam jumlah besar (bulk) menggunakan metode `upsert`.
- Memastikan batch akan di-reset setelah penyimpanan, termasuk dalam kasus kegagalan, untuk mencegah reprocessing catatan yang gagal.
- Menambahkan logging tambahan untuk mencatat jumlah batch (chunk) yang telah selesai diproses, memberikan wawasan lebih dalam proses.
- Menambahkan validasi jumlah kolom pada setiap baris data, logging peringatan jika data tidak sesuai, dan mencatat jumlah kesalahan (`errorCount`).
- Secara otomatis menambahkan atribut timestamp (`created_at` dan `updated_at`) pada setiap data sebelum dimasukkan ke dalam batch untuk pelacakan waktu.
- Memodifikasi log error untuk menangani kesalahan pada level yang lebih spesifik, seperti pada baris tertentu dalam file yang diproses.
- Mengoptimalkan pemrosesan data pada job:
- `ProcessAtmTransactionJob` untuk data transaksi ATM.
- `ProcessDataCaptureDataJob` untuk data capture.
- `ProcessFundsTransferDataJob` untuk data transfer dana.
- `ProcessTellerDataJob` untuk data teller.
- Meningkatkan efisiensi dan skalabilitas dengan menyisipkan data secara bulk, mengurangi overhead database, dan menghindari pengolahan data secara satu per satu.
- Menambahkan konstanta `CHUNK_SIZE` untuk membatasi ukuran batch selama proses data.
- Memperkenalkan properti `$entryBatch` untuk menyimpan batch data sementara sebelum disimpan ke database.
- Mengubah metode `saveRecord` menjadi `addToBatch` untuk menambahkan record ke batch alih-alih langsung menyimpannya.
- Menambahkan metode `saveBatch` untuk menyimpan batch data ke database secara efisien menggunakan `upsert`.
- Menangani chunking dalam proses CSV untuk menghindari masalah memori dengan memproses data dalam batch.
- Menambahkan logging pada setiap batch yang selesai diproses untuk melacak kemajuan pemrosesan.
- Memastikan batch yang tersisa diproses setelah selesai membaca file CSV.
- Menambahkan penanganan error saat menyimpan batch untuk mencegah reprocessing pada batch yang gagal memproses.
- Otomatis menambahkan timestamp (`created_at` dan `updated_at`) pada setiap record sebelum dimasukkan ke batch.
- Tambahkan konstanta `CHUNK_SIZE` untuk memproses data dalam ukuran batch guna mengurangi penggunaan memori.
- Perkenalkan properti baru `customerBatch` untuk menyimpan data sementara sebelum disimpan ke database.
- Ubah metode `processRow` agar menambahkan data ke batch menggunakan metode baru `addToBatch` daripada langsung menyimpannya.
- Tambahkan metode `saveBatch` untuk melakukan penyimpanan batch secara bulk menggunakan `Customer::upsert` dengan pengelolaan kolom unik dan kolom yang perlu diperbarui.
- Tambahkan log untuk setiap chunk yang telah berhasil diproses, membantu memonitor progres saat pemrosesan file CSV dengan ukuran besar.
- Pastikan sisa data yang belum diproses di akhir loop juga disimpan dengan memanggil `saveBatch`.
- Tangani kegagalan penyimpanan batch dengan log error dan reset batch untuk menghindari re-pemrosesan data yang gagal.
- Optimalkan performa dengan menambahkan timestamp (`created_at` dan `updated_at`) secara langsung saat menambahkan data ke batch.