- Memberikan akses penuh fitur multi-branch untuk role `administrator` dan `sentra_operasi`.
- Menambahkan akun untuk client **SILOT** dalam daftar monitoring.
- Menonaktifkan validasi duplikasi statement di `PrintStatementRequest`.
- Memindahkan struktur penyimpanan file dari `statements/{client}` menjadi `partners/{client}`.
- Menambahkan pengurutan hasil berdasarkan `branch_code` dan `account_number` untuk laporan.
- Memperbaiki tampilan dropdown branch dan menyembunyikan field `end_date` yang tidak relevan.
- Menghapus opsi `NO.PRINT` dari dropdown `stmt_sent_type` untuk penyederhanaan UI.
- Peningkatan UI dan struktur direktori untuk mempermudah pembacaan dan pengelolaan statement.
- **WebstatementController.php**:
- Menyederhanakan fungsi `index()` dengan mengubah parameter menjadi langsung `string $queueName='default'`.
- Menghapus pengambilan parameter `$queueName` dari objek `Request`.
- **ExportStatementPeriodJob.php**:
- Memperbaiki perhitungan saldo berjalan (`running balance`) dengan mempertimbangkan mata uang.
- Menambahkan logika penggunaan `amount_fcy` jika mata uang bukan IDR.
- Menyesuaikan tipe transaksi (D/C) menggunakan nilai `amount` yang telah disesuaikan.
- **GenerateBiayaKartuCsvJob.php**:
- Mengubah daftar produk yang dikecualikan menjadi `['6031','6021','6042']`.
- Memperbaiki filter khusus dengan mengecualikan `product_code` 6004 jika `ctdesc` = CLASSIC.
- Menambahkan kolom hash unik 16 digit pada data CSV untuk identifikasi setiap record.
- **ProcessCustomerDataJob.php**:
- Menambahkan mapping baru `name_1` → `name` pada `getHeaderMapping`.
- Menambahkan logging untuk field `fillable` agar debugging lebih mudah.
Menambahkan parameter queue_name untuk mengatur queue spesifik pada job processing:
- Menambahkan parameter queueName pada StagingController.processData() dan index()
- Menggunakan onQueue() method saat dispatch job di StagingController
- Memperbarui ProcessDailyStaging untuk mengirim queue_name ke controller
- Menambahkan parameter Request pada WebstatementController untuk menerima queue_name
- Menggunakan onQueue() method saat dispatch job di WebstatementController
- Menambahkan logging untuk queue_name di semua proses
- Memperbarui response JSON untuk menyertakan informasi queue_name
- Menambahkan komentar fungsi yang menjelaskan parameter queue_name
- Mempertahankan backward compatibility dengan default queue 'default'
- Meningkatkan fleksibilitas dalam manajemen queue untuk berbagai environment
- Memungkinkan pemisahan job berdasarkan prioritas atau resource yang tersedia
Menambahkan dukungan fallback untuk nilai `stmt_entry_id` yang kosong/null dengan menggunakan field `id` dari CSV (jika tersedia di akhir file).
Perubahan yang dilakukan:
- Menambahkan 'id' sebagai bagian dari expected CSV headers
- Mengimplementasikan handleStmtEntryIdFallback() untuk logika pengganti
- Menggunakan field 'id' sebagai stmt_entry_id jika nilainya kosong atau null
- Menyesuaikan validasi jumlah kolom terhadap struktur CSV terbaru
- Melakukan pembersihan field 'id' sebelum data disimpan ke database
- Memperkuat validasi di addToBatch() agar stmt_entry_id selalu valid
- Menambahkan logging untuk proses fallback dan debugging
- Meningkatkan error handling untuk kasus data tidak valid
- Menjamin kompatibilitas dengan struktur model StmtEntryDetail
- Optimasi batch insert melalui pengecekan dan pembersihan data lebih ketat
- 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 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>
- 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>
- 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>
- 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>
- 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>
- 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.
- 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.
Penambahan fitur untuk mendukung proses eksport dan download statement secara dinamis. Fitur ini mencakup:
- Penambahan `ExportStatementJob` untuk menjadwalkan proses eksport statement dalam bentuk file CSV ke dalam queue.
- Penambahan endpoint untuk:
1. `index`: Menjadwalkan pekerjaan eksport ke dalam queue.
2. `generateAndDownload`: Proses pembuatan statement secara langsung dan mengunduh hasilnya.
3. `downloadStatement`: Mendukung pengunduhan file statement yang telah dibuat sebelumnya.
4. `queueExport`: Menambahkan job eksport ke queue dengan ID job yang dirilis.
5. `checkExportStatus`: Memastikan status job apakah sedang berjalan, selesai, atau tidak ditemukan.
- Refactoring fitur narrative generator untuk mendukung format dinamis berdasarkan konfigurasi database dengan parsing format.
- Refactoring data transformation untuk memastikan urutan dan perhitungan running balance sebelum dieksport.
- Penggunaan storage lokal untuk menyimpan hasil file CSV, dan implementasi header respons yang benar untuk file unduhan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan 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`.