Commit Graph

21 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
35bb173056 feat(webstatement): tambah fitur Laporan Closing Balance
Perubahan yang dilakukan:

**Controller LaporanClosingBalanceController:**
- Membuat controller baru untuk laporan closing balance dengan method index(), dataForDatatables(), export(), dan show().
- Menggunakan model AccountBalance dengan field actual_balance dan cleared_balance.
- Implementasi filter nomor rekening dan rentang tanggal.
- Menambahkan DB transaction dan rollback untuk keamanan data.
- Logging dan error handling komprehensif untuk proses data dan export.

**View laporan-closing-balance/index.blade.php:**
- Form filter dengan input nomor rekening dan rentang tanggal (default 30 hari terakhir).
- Implementasi DataTables dengan kolom: Nomor Rekening, Periode, Saldo Cleared, Saldo Aktual, Tanggal Update, dan Action.
- Tombol Filter, Reset, dan Export CSV.
- JavaScript untuk format currency IDR, format tanggal, dan dynamic export URL.
- Menggunakan TailwindCSS dan KTDataTable untuk desain yang responsive.

**View laporan-closing-balance/show.blade.php:**
- Halaman detail per record dengan visual saldo yang menarik (color-coded cards).
- Menampilkan Saldo Cleared, Saldo Aktual, dan Selisih Saldo secara otomatis.
- Informasi rekening dan periode disertai fitur copy ke clipboard.
- Tombol aksi: Kembali, Export, dan Print (dengan print style khusus).
- Responsive untuk berbagai ukuran layar.

**Routing dan Navigasi:**
- Menambahkan routing resource dengan prefix 'laporan-closing-balance' di web.php.
- Tambahan route untuk datatables, export, dan show dengan middleware auth.
- Breadcrumb dinamis untuk index dan show, menampilkan nomor rekening dan periode.

**Penyesuaian Model:**
- Menggunakan relasi Account di model AccountBalance melalui account_number.
- Menyesuaikan field dari opening_balance ke cleared_balance sesuai skema.
- Tetap mempertahankan actual_balance untuk saldo akhir.

**Fitur Keamanan dan Performance:**
- Input validation dan sanitization untuk semua request.
- Pagination dan filter query untuk efisiensi dan mencegah memory overflow.
- Error logging dengan context untuk debugging lebih mudah.

**User Experience:**
- Interface user-friendly dengan feedback visual dan loading state.
- Export CSV untuk kebutuhan analisis lebih lanjut.
- Print-friendly layout untuk kebutuhan cetak data.
- Clipboard integration untuk kemudahan salin data.

Tujuan perubahan:
- Menyediakan fitur monitoring dan analisis closing balance secara komprehensif di modul Webstatement.
- Mempermudah user dalam melihat detail saldo akhir dengan filtering, export, dan cetak yang optimal.
2025-07-15 09:32:01 +07:00
Daeng Deni Mardaeni
34571483eb feat(webstatement): optimalkan proses PDF statement dan hapus fitur tidak terpakai
- **Optimalisasi Pembuatan dan Pengunduhan PDF:**
  - Tambahkan validasi untuk mengecek keberadaan file sebelum pembuatan ulang PDF.
  - Tambahkan mekanisme pengunduhan langsung file PDF jika sudah tersedia di storage.
  - Mengelompokkan path penyimpanan dan nama file PDF secara dinamis berdasarkan periode dan nomor rekening.
  - Integrasi update status `is_available` pada tabel `PrintStatementLog` setelah file berhasil dibuat.

- **Refaktor dan Perbaikan Logika Pembuatan PDF:**
  - Perbarui fungsi `generateStatementPdf` untuk mendukung parameter tambahan terkait penyimpanan file.
  - Hapus duplikasi logika terkait pembuatan path storage dan file PDF.
  - Tambahkan handling error untuk memastikan file PDF berhasil dibuat.

- **Hapus Fitur Preview PDF:**
  - Menghapus fungsi `previewPdf()` dan rute terkait karena sudah tidak digunakan.
  - Membersihkan bagian UI yang merujuk pada fitur ini.

- **Peningkatan UI dan Tampilan:**
  - Menghapus kolom `authorization_status` pada tabel karena tidak relevan.
  - Penyesuaian styling pada kolom `is_available` untuk menampilkan status ketersediaan file.

- **Perubahan pada Rute:**
  - Membersihkan rute tidak terpakai terkait preview dan generate PDF langsung.

- **Refaktor Umum:**
  - Menghapus kode redundan yang berhubungan dengan penyimpanan file sementara.
  - Penyesuaian struktur fungsi untuk meningkatkan keterbacaan dan efisiensi.

Perubahan ini memastikan proses PDF statement lebih efisien dengan validasi ketat, pengelolaan file yang lebih baik, serta penyederhanaan sistem dengan menghapus fitur yang tidak relevan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-07-09 20:23:52 +07:00
Daeng Deni Mardaeni
8ee0dd2218 feat(webstatement): implementasi pemrosesan multi account statement berdasarkan stmt_sent_type
- Modifikasi method printStatementRekening untuk mendukung request_type multi_account
- Tambah method processMultiAccountStatement untuk mengambil data account berdasarkan branch_code dan stmt_sent_type
- Tambah method processSingleAccountStatement untuk memisahkan logika single account
- Implementasi GenerateMultiAccountPdfJob untuk generate PDF multiple account secara parallel
- Tambah fungsi generateAccountPdf untuk generate PDF per account dengan Browsershot
- Tambah fungsi createZipFile untuk mengompres multiple PDF menjadi satu ZIP file
- Tambah method downloadMultiAccountZip untuk download ZIP file hasil pemrosesan
- Implementasi validasi stmt_sent_type dengan support JSON array format
- Tambah logging komprehensif untuk monitoring proses multi account
- Tambah error handling dengan database transaction rollback
- Update PrintStatementLog dengan informasi target_accounts dan status pemrosesan
- Tambah rute baru untuk download ZIP file multi account
- Support untuk pemrosesan chunk account untuk optimasi memory usage
- Implementasi status tracking untuk success_count dan failed_count
- Tambah validasi keberadaan account berdasarkan kriteria yang ditentukan
2025-07-09 17:51:57 +07:00
Daeng Deni Mardaeni
9199a4d748 feat(webstatement): tambahkan fitur monitoring dan peningkatan pengiriman email statement
- **Perbaikan dan Penambahan Komando:**
  - Memberikan komando baru `webstatement:check-progress` untuk memantau progres pengiriman email statement.
    - Menampilkan informasi seperti `Log ID`, `Batch ID`, `Request Type`, status, hingga persentase progress.
    - Menangani secara detail jumlah akun yang diproses, sukses, gagal, dan kalkulasi tingkat keberhasilan.
    - Menyediakan penanganan error jika log tidak ditemukan atau terjadi kegagalan lainnya.
  - Memperluas komando `webstatement:send-email`:
    - Mendukung pengiriman berdasarkan `single account`, `branch`, atau `all branches`.
    - Menambahkan validasi parameter `type` (`single`, `branch`, `all`) dan input spesifik seperti `--account` atau `--branch` untuk mode tertentu.
    - Melakukan pencatatan log awal dengan metadata lengkap seperti `request_type`, `batch_id`, dan status.

- **Peningkatan Logika Proses Backend:**
  - Menambahkan fungsi `createLogEntry` untuk mencatat log pengiriman email statement secara dinamis berdasarkan tipe request.
  - Menyediakan reusable method seperti `validateParameters` dan `determineRequestTypeAndTarget` untuk mempermudah pengelolaan parameter pengiriman.
  - Memberikan feedback dan panduan kepada pengguna mengenai ID log dan komando monitoring (`webstatement:check-progress`).

- **Penambahan Controller dan Fitur UI:**
  - Menambahkan controller baru `EmailStatementLogController`:
    - Mendukung pengelolaan log seperti list, detail, dan retry untuk pengiriman ulang email statement.
    - Menyediakan fitur pencarian, filter, dan halaman data log yang responsif menggunakan datatable.
    - Menambahkan kemampuan resend email untuk log dengan status `completed` atau `failed`.
  - Mengimplementasikan UI untuk log pengiriman:
    - Halaman daftar monitoring dengan filter berdasarkan branch, account number, request type, status, dan tanggal.
    - Menampilkan kemajuan, tingkat keberhasilan, serta tombol aksi seperti detail dan pengiriman ulang.

- **Peningkatan Model dan Validasi:**
  - Menyesuaikan model `PrintStatementLog` untuk mendukung lebih banyak atribut seperti `processed_accounts`, `success_count`, `failed_count`, `request_type`, serta metode utilitas seperti `getProgressPercentage()` dan `getSuccessRate()`.
  - Memvalidasi parameter input lebih mendalam agar kesalahan dapat diminimalisasi di awal proses.

- **Peningkatan pada View dan Feedback Pengguna:**
  - Menambah daftar command berguna untuk user di interface log:
    - Status antrian dengan `php artisan queue:work`.
    - Monitoring menggunakan komando custom yang baru ditambahkan.

- **Perbaikan Logging dan Error Handling:**
  - Menambahkan logging komprehensif pada semua proses, termasuk batch pengiriman ulang.
  - Memastikan rollback pada database jika terjadi error melalui transaksi pada critical path.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-06-11 09:57:09 +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
c1c7f03c87 feat(webstatement): perbaiki endpoint debug test-statement
- 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>
2025-06-04 15:03:47 +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
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
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
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
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
24a3c0c960 feat(webstatement): tambahkan validasi pada query BiayaKartuController
- Menambahkan validasi untuk memastikan field accflag, branch, dan currency tidak kosong pada query di BiayaKartuController.
- Memperbaiki pengaturan route dengan menambahkan BiayaKartuController ke dalam daftar import.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-08 17:37:46 +07:00
Daeng Deni Mardaeni
e3d92582e0 feat(webstatement): tambahkan fitur ekspor data kartu ATM ke CSV
- Menambahkan `BiayaKartuController` untuk mengelola data kartu ATM.
- Menyediakan endpoint baru `biaya-kartu.index` untuk mengunduh data kartu ATM dalam format CSV.
- Implementasi fungsi untuk:
  - Mengambil data kartu ATM yang memenuhi syarat dari database.
  - Menentukan biaya kartu berdasarkan tipe kartu.
  - Membuat file CSV dengan format khusus dan membersihkan konten dari tanda kutip ganda.
- Memodifikasi logika pembaruan data di `BiayaKartu.php` untuk memperbaiki penempatan pemanggilan fungsi `updateOrCreate`.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-08 17:20:52 +07:00
Daeng Deni Mardaeni
0d95bf33c3 feat(customers): tambahkan rute dan breadcrumb untuk manajemen pelanggan dan email blast
- Menambahkan rute untuk manajemen pelanggan dan email blast.
- Mengimplementasikan breadcrumb untuk navigasi yang lebih baik.
- Memperbarui file module.json untuk menambahkan menu baru.
2025-02-18 16:36:20 +07:00
Daeng Deni Mardaeni
f1a163d86c feat(routes): tambahkan rute untuk MigrasiController
- Mengganti WebstatementController dengan MigrasiController pada rute web.
- Menambahkan rute baru untuk mengakses fungsi index di MigrasiController.
- Menggunakan middleware 'auth' untuk melindungi rute migrasi.
2025-01-15 09:36:20 +07:00
Daeng Deni Mardaeni
a7ec87c995 initial commits 2024-10-28 10:24:57 +07:00