Perubahan yang dilakukan:
- Memindahkan fungsi `generatePassword` dari `CombinePdfController` ke `helpers.php` untuk peningkatan reusabilitas.
- Menambahkan dependency `use Carbon\Carbon` dan `use Modules\Webstatement\Models\Account` di `helpers.php`.
- Menyesuaikan pemanggilan fungsi `generatePassword` di `CombinePdfController` dengan versi helper.
Tujuan perubahan:
- Mengurangi duplikasi kode dengan menjadikan fungsi `generatePassword` dapat diakses secara global.
- Mempermudah perawatan kode melalui pemisahan tanggung jawab fungsi.
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>
- 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>
- 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>
- 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>