Perubahan yang dilakukan:
- Menambahkan kolom password (nullable) pada tabel print_statement_logs melalui migrasi baru.
- Menambahkan field password di model PrintStatementLog dengan atribut hidden untuk keamanan serialisasi.
- Menambahkan input password pada form request print statement.
- Menambahkan validasi sisi klien agar password minimal 6 karakter.
- Menambahkan konfirmasi melalui SweetAlert untuk pengisian password dan email tujuan.
- Menambahkan index pada kolom password untuk optimasi pencarian jika dibutuhkan.
- Menggunakan field password untuk proteksi file PDF melalui PDFPasswordProtect.
- Menambahkan helper text dan placeholder pada form untuk meningkatkan pengalaman pengguna.
- Menambahkan atribut autocomplete="new-password" untuk menghindari autofill browser yang tidak aman.
- Menjaga kompatibilitas ke belakang dengan membuat field bersifat opsional (nullable).
Tujuan perubahan:
- Memberikan opsi proteksi file PDF dengan password yang diatur oleh pengguna.
- Meningkatkan keamanan distribusi file statement melalui email.
- Memastikan pengalaman pengguna tetap aman dan nyaman saat mengatur proteksi.
Perubahan yang dilakukan:
- Memodifikasi PrintStatementController untuk mendukung request_type baru: multi_account.
- Menambahkan validasi stmt_sent_type dan branch_code khusus pada request multi_account.
- Menambahkan pengecekan branch_id: ID0019999 dengan penanganan error yang lebih spesifik.
- Menambahkan metode processMultiAccountStatement untuk pemrosesan berdasarkan branch_code dan stmt_sent_type.
Optimasi PDF:
- Melakukan refaktor pada GenerateMultiAccountPdfJob agar mendukung kalkulasi tanggal dinamis (startDate dan endDate).
- Mengimplementasikan Browsershot untuk opsi tambahan background dan optimasi waktu proses.
- Menambahkan validasi status dan update log pada PrintStatementLog setelah PDF berhasil dibuat.
- Menambahkan penanganan penggunaan memori secara granular untuk proses batch PDF dan pembersihan resource otomatis.
Logging dan Validasi:
- Menambahkan logging pada proses kalkulasi tanggal multi_account.
- Logging tambahan dan rollback untuk error yang terjadi saat proses statement atau PDF.
- Mengubah penggunaan Auth:: untuk konsistensi role checking.
- Mengubah validasi stmt_sent_type dari JSON menjadi array dengan implode().
UI dan Output:
- Memodifikasi blade template agar mendukung tampilan stmt_sent_type untuk kasus multi_account.
- Menambahkan logika kolom dinamis berdasarkan account_number atau stmt_sent_type.
Refaktor umum:
- Memisahkan logika antara single dan multi account di PrintStatementController.
- Perbaikan minor pada query SQL untuk entri ProcessedStatement.
Tujuan perubahan:
- Mendukung pemrosesan batch statement multi account secara lebih efisien dan terstruktur.
- Menjamin validasi dan logging yang lebih kuat.
- Meningkatkan performa pembuatan PDF dan kontrol terhadap penggunaan resource.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **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>
- **Fitur Baru:**
- Menambahkan kemampuan untuk membuat PDF statement secara dinamis menggunakan Browsershot.
- Fitur penyimpanan otomatis PDF ke dalam local storage dengan struktur direktori berdasarkan periode dan account number.
- Menyediakan fitur unduhan langsung dari storage atau melalui preview di browser.
- Mendukung penghapusan PDF dari storage dengan log terintegrasi.
- **Perubahan pada Controller:**
- Ditambah method baru `generated` untuk membangun PDF atau tampilan HTML statement.
- Integrasi penghitungan periode saldo (`calculateSaldoPeriod`) untuk menghasilkan data laporan yang lebih akurat.
- Perubahan pada `printStatementRekening` untuk mendukung pengiriman objek statement secara penuh.
- Menambahkan method tambahan untuk preview, download, dan delete PDF langsung dari storage.
- **Validasi Permintaan:**
- Menambah validasi wajib pada `branch_code` untuk memastikan data cabang sesuai.
- Menyesuaikan logika validasi di `PrintStatementRequest` untuk mendukung input cabang dan parameter lain.
- **Cakupan Logging:**
- Meningkatkan logging pada setiap proses penting:
- Mulai dari validasi data, proses pembuatan PDF, hingga penyimpanan.
- Deteksi error secara spesifik pada setiap tahapan proses.
- Menambah log debugging untuk nama file, ukuran file, dan path penyimpanan.
- **Peningkatan pada UI:**
- Penyesuaian field `branch_code` pada form UI untuk menggantikan `branch_id` dengan validasi error yang lebih eksplisit.
- Membuat halaman baru untuk tampilan preview PDF di interface.
- **Optimisasi dan Refaktor:**
- Grouping import library untuk meningkatkan keterbacaan.
- Manajemen direktori penyimpanan PDF dipastikan berjalan dinamis dan fleksibel.
- Penghilangan redundansi logika pada proses pencarian saldo awal bulan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **Peningkatan Validasi:**
- Menambahkan validasi kompleks pada field `account_number` untuk memastikan input wajib jika `stmt_sent_type` tidak diisi.
- Validasi baru untuk `stmt_sent_type` mendukung array nilai dengan parameter `in` yang diperbolehkan.
- Menambahkan pengecekan duplikasi pada `PrintStatementRequest` dengan filter tambahan `user_id` untuk scope yang lebih jelas.
- **Peningkatan Logging:**
- Mengganti penggunaan `\Log` dengan `Log` untuk konsistensi namespace.
- Menambahkan logging user pada query statement log di controller.
- Logging lebih terperinci pada proses ekspor dan error handling.
- **Perubahan UI pada Form `statements/index`:**
- Menambahkan highlight warna merah pada field input yang memiliki error validasi (`border-danger`, `bg-danger-light`).
- Memperbaiki tampilan dropdown untuk `branch_id` dan `stmt_sent_type`, termasuk pesan error yang lebih spesifik.
- Menghapus validasi wajib pada field `stmt_sent_type` dan menambah fleksibilitas form pengisian.
- **Optimalisasi Query Backend:**
- Menambah filter `whereNotNull('user_id')` pada query `PrintStatementLog` untuk meminimalisir data invalid.
- **Updated Blade Template:**
- Tombol dan validasi form lebih ramah pengguna dengan feedback langsung.
- Menambahkan badge status styling untuk kolom status otorisasi di datatable.
- Dinamika field seperti dropdown bebas error dalam kondisi tertentu.
Perubahan ini meningkatkan keakuratan validasi, logging proses lebih rinci untuk debugging, dan memberikan pengalaman pengguna yang lebih baik pada interface request statement.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **Pembaruan pada `ExportStatementPeriodJob`:**
- Menambahkan atribut baru `toCsv` untuk mendukung validasi sebelum proses ekspor CSV.
- Menyesuaikan method `__construct` untuk menerima parameter tambahan `toCsv`.
- Menambahkan validasi ekspor CSV dengan conditional check pada `toCsv` sebelum menjalankan `exportToCsv`.
- Memperbaiki logika di `getTotalEntryCount` menggunakan `booking_date` untuk query lebih akurat.
- Menambahkan logging terperinci pada proses penghitungan jumlah entri untuk meningkatkan debugging.
- **Integrasi Log Print Statement:**
- Mengupdate status kolom `is_generated` pada model `PrintStatementLog` setelah entri diproses.
- Menambahkan mekanisme pembaruan data log print statement melalui validasi entry statement.
- **Peningkatan pada Controller `PrintStatementController`:**
- Memampukan proses ekspor otomatis jika statement tidak tersedia dengan metode baru `printStatementRekening`.
- Menambahkan parameter `stmt_sent_type` untuk log print pada proses pencatatan data.
- Mengimplementasikan pemrosesan period statement melalui job `ExportStatementPeriodJob`.
- **Perubahan pada UI/Blade `statements/index`:**
- Menambahkan opsi pemilihan multiple untuk tipe laporan `stmt_sent_type`.
- Mengupdate dan merapikan komponen form untuk input branch, akun, email, dan periode laporan.
- Menambahkan kolom baru `is_generated` pada tabel untuk menampilkan status log hasil pembuatan laporan.
- **Pembaruan pada Datatable dan Skrip Frontend:**
- Menambahkan render visual dengan badge untuk status `is_generated`.
- Memperbaiki dan mengoptimalkan element HTML untuk datatable termasuk pagination dan search.
- Menambahkan konfirmasi aksi dengan Ajax untuk retry pembuatan laporan jika diperlukan.
- **Optimisasi dan Refactor:**
- Menggunakan group import pada controller untuk meningkatkan keterbacaan.
- Memperbaiki alignment dan indentasi pada beberapa file blade.
- Menghapus kode yang tidak digunakan atau redundan seperti conditional unprocessed data.
Dengan perubahan ini, sistem print statement lebih fleksibel, mencatat log lebih baik, dan mendukung fitur tracking pengeluaran laporan.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **Penambahan Fitur Konfirmasi Email:**
- Menambahkan event listener untuk form submit:
- Menampilkan SweetAlert jika field email telah diisi.
- Mengonfirmasi pengiriman statement ke alamat email yang diisi pengguna.
- Submit form hanya setelah user mengonfirmasi.
- **Optimalisasi Proses Download Statement:**
- Menangani logic download statement dalam rentang periode (period range):
- Mencatat log keberadaan file untuk setiap periode.
- Membuat file ZIP yang berisi semua file statement yang tersedia dalam rentang tersebut.
- Mengelola file sementara untuk proses kompresi dengan pembersihan otomatis.
- Menambahkan log error dan warning untuk file yang hilang dalam rentang periode.
- Mendukung mekanisme download file tunggal untuk periode tertentu.
- Menyesuaikan log dengan detail proses, seperti:
- Informasi periode yang tersedia dan tidak.
- Notifikasi penyelesaian atau kegagalan proses download ZIP.
- Menambahkan logging trace pada exception untuk debugging lebih rinci.
- **Perubahan Validasi Logic:**
- Validasi baru pada `PrintStatementRequest`:
- Menentukan `is_period_range` hanya jika `period_to` berbeda dengan `period_from`.
- **Perbaikan dan Penyesuaian Pengiriman Email:**
- Menambahkan pengecekan field email sebelum menjalankan fungsi kirim email di `PrintStatementController`.
- Mengintegrasikan fungsi `sendEmail` jika terdapat email pada statement.
- **Penambahan Dokumentasi Kode:**
- Menambahkan komentar inline di beberapa bagian:
- Logika konfirmasi email.
- Proses pembuatan ZIP dan penanganan download.
- Menjelaskan tiap langkah operasional untuk mempermudah pemahaman dan debugging.
Perubahan ini mengintegrasikan fitur konfirmasi email yang lebih interaktif, meningkatkan proses download statement berjenjang, serta memperbaiki validasi dan logging pada tiap langkah proses.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **Penambahan Fitur Multi-Branch:**
- Tambahkan dropdown pilihan cabang (branch) saat fitur multi-branch diaktifkan.
- Secara otomatis mengisi informasi branch jika hanya tersedia satu branch yang terkait dengan user.
- **Perbaikan Validasi Form:**
- Memastikan field `account_number` dan `branch_id` memiliki validasi yang lebih ketat.
- Tambahkan validasi untuk `period_from` agar hanya menerima data periode yang tersedia (`is_available`).
- **Perubahan Tampilan:**
- Menyesuaikan desain form:
- Tambahkan kondisi dynamic display pada field branch berdasarkan status multi-branch.
- Reformat struktur HTML untuk meningkatkan keterbacaan dengan indentasi lebih konsisten.
- Perbaikan tampilan elemen tabel pada daftar request statement:
- Mengoptimalkan style menggunakan properti CSS baru pada grid dan typography.
- **Optimasi Query dan Akses Data:**
- Tambahkan filter berdasarkan `branch_code` agar data hanya terlihat untuk cabang yang relevan dengan user.
- Optimalkan pengambilan data branch dengan hanya memuat cabang yang aktif.
- **Peningkatan Logging:**
- Tambahkan log pada pengolahan query untuk mendeteksi masalah akses branch saat user tidak memiliki akses multi-branch.
- **Refaktor Backend:**
- Tambahkan variable `multiBranch` pada controller untuk mengatur logika UI secara dinamis.
- Refaktor pencarian branch di server-side untuk mengantisipasi session `MULTI_BRANCH`.
Perubahan ini mendukung fleksibilitas akses cabang untuk user dengan mode multi-branch serta meningkatkan validasi dan pengalaman UI form.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
### Perubahan Utama
- Tambah validasi untuk memverifikasi bahwa nomor rekening sesuai dengan cabang pengguna.
- Cegah transaksi untuk rekening yang terdaftar di cabang khusus (`ID0019999`).
- Perbaikan sistem untuk menangani kasus rekening yang tidak ditemukan di database.
### Detail Perubahan
1. **Validasi Cabang Rekening**:
- Tambah pengecekan untuk memastikan rekening yang dimasukkan adalah milik cabang pengguna (non-multi-branch).
- Blokir transaksi jika rekening terdaftar pada cabang khusus (`ID0019999`) dengan menampilkan pesan error yang relevan.
- Tambahkan pesan error jika nomor rekening tidak ditemukan dalam sistem.
2. **Update Logika Penyimpanan**:
- Tambahkan validasi untuk mengisi kolom `branch_code` secara otomatis berdasarkan informasi rekening terkait.
- Otomatis atur nilai awal `authorization_status` menjadi `approved`.
3. **Penghapusan Atribut Tidak Digunakan**:
- Hapus form `branch_code` dari view terkait (`index.blade.php`) karena sekarang diisi secara otomatis berdasarkan data rekening.
4. **Perbaikan View dan Logika Terkait Status Otorisasi**:
- Hapus logic dan elemen UI terkait `authorization_status` di halaman statement (`index.blade.php` dan `show.blade.php`).
- Simplifikasi tampilan untuk hanya menampilkan informasi yang tersedia dan relevan.
5. **Optimasi Query Data Cabang**:
- Update query untuk memfilter cabang berdasarkan kondisi `customer_company` dan mengecualikan kode cabang khusus.
6. **Penyesuaian Struktur Request**:
- Hapus validasi terkait `branch_code` di `PrintStatementRequest` karena tidak lagi relevan.
7. **Log Aktivitas dan Kesalahan**:
- Tambahkan log untuk mencatat aktivitas seperti validasi rekening dan penyimpanan batch data.
- Penanganan lebih baik untuk logging jika terjadi error saat validasi nomor rekening atau penyimpanan statement.
### Manfaat Perubahan
- Meningkatkan akurasi data cabang dan validasi rekening sebelum penyimpanan.
- Menyederhanakan antarmuka pengguna dengan menghapus field input redundant.
- Memastikan proses menjadi lebih transparan dengan penanganan error yang lebih baik.
Langkah ini diterapkan untuk meningkatkan keamanan dan keandalan sistem dalam memverifikasi dan memproses pemintaan statement.
- Menambahkan kondisi tambahan pada tombol "kirim email" agar hanya muncul jika `data.email` tidak kosong.
- Mencegah tombol "kirim email" muncul pada kasus ketika data tersedia tetapi email kosong.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- 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>
- 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>
- 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>