Commit Graph

6 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
cf0059fe66 feat(memo): implementasi jenis penilaian dinamis dan perbaikan checkbox pada memo penyelesaian
Perubahan yang dilakukan:
- Menghapus validasi input pada method `preview()` untuk mendukung fleksibilitas data preview
- Mengganti eager loading dari `tujuanPenilaian` menjadi `jenisPenilaian` agar sesuai dengan kebutuhan data dinamis
- Menambahkan method chaining `->get()` pada akhir query untuk memastikan eksekusi query yang benar
- Menambahkan field `jenisPenilaian` ke dalam memoData agar template dapat menampilkan instruksi pembayaran secara dinamis
- Mengimplementasikan checkbox visual yang disabled dengan hidden input untuk tetap mengirim data saat form submit
- Memisahkan antara checkbox untuk tampilan (disabled) dan input data (hidden) untuk meningkatkan UX
- Mengubah lebar label dari 80px menjadi 200px pada template PDF dan preview untuk layout yang lebih baik
- Mengganti informasi jaminan menjadi statis "Tanah & Bangunan" pada template PDF dan preview
- Menambahkan conditional rendering untuk menampilkan instruksi pembayaran sesuai dengan jenis penilaian (Internal/KJPP)
- Menyesuaikan layout dan formatting pada template PDF dan preview agar lebih konsisten secara visual
- Menambahkan logika text dinamis untuk jenis penilaian pada bagian instruksi pembayaran
- Mengoptimalkan struktur query agar lebih efisien dan menghindari duplikasi

Tujuan perubahan:
- Mendukung proses memo penyelesaian dengan jenis penilaian yang lebih fleksibel (Internal/KJPP)
- Meningkatkan pengalaman pengguna dengan tampilan checkbox yang jelas namun tetap menyimpan data dengan aman
- Menyederhanakan layout dan formatting agar lebih profesional dan konsisten di preview maupun PDF
- Memastikan proses generate memo berjalan sesuai kebutuhan bisnis dengan instruksi pembayaran yang tepat
2025-07-17 16:05:56 +07:00
Daeng Deni Mardaeni
cd46a3b0dc feat(memo): tambahkan kembali checkbox selection dengan status disabled
Perubahan yang dilakukan:
- Menambahkan kembali kolom checkbox "select-all" di header tabel dengan atribut disabled
- Menambahkan kembali input checkbox di setiap baris permohonan dengan status disabled
- Menjaga struktur tabel tetap konsisten dengan design system yang ada
- Mempertahankan value checkbox untuk kebutuhan form submission meskipun tidak interaktif
- Menggunakan class `checkbox-sm` untuk ukuran checkbox yang sesuai tampilan

Tujuan perubahan:
- Memberikan indikasi visual bahwa semua permohonan dianggap sudah terpilih secara otomatis
- Memastikan user memahami bahwa selection tidak perlu dilakukan secara manual
- Meningkatkan konsistensi UI sekaligus menjaga flow proses pembuatan memo penyelesaian
- Menyederhanakan interaksi user dengan feedback visual yang jelas tanpa menghilangkan elemen penting
2025-07-17 14:49:09 +07:00
Daeng Deni Mardaeni
3486b97aee refactor(memo): hapus checkbox selection
Perubahan yang dilakukan:
- Menghapus kolom checkbox "select-all" dari header tabel pada halaman create memo penyelesaian
- Menghapus input checkbox di setiap baris permohonan dalam tabel untuk menghilangkan fitur selection
- Menyederhanakan tampilan tabel menjadi daftar permohonan tanpa opsi pilih banyak
- Memperbaiki user experience dengan interface yang lebih bersih dan sederhana
- Mengurangi kompleksitas form dengan menghilangkan proses multiple selection
2025-07-17 14:44:00 +07:00
Daeng Deni Mardaeni
0c2c0c9e20 feat(memo): Tambah halaman preview dan PDF memo penyelesaian
Menambahkan fitur preview memo penyelesaian sebelum data disimpan ke database, untuk memastikan user dapat memeriksa kembali detail permohonan dan biaya terkait.

Perubahan pada Controller:
- Menambahkan method `preview()` di MemoController untuk menampilkan halaman preview memo penyelesaian.
- Menambahkan method `generatePdf()` untuk menghasilkan PDF resmi memo dengan format sesuai standar bank.
- Mengimplementasikan validasi input lengkap sebelum proses preview dan PDF generation.
- Mengintegrasikan helper fungsi terbilang untuk konversi total biaya ke dalam format huruf.

Perubahan pada View:
- Menambahkan view `preview.blade.php` sebagai template resmi memo penyelesaian dengan layout AGI header, informasi memo, daftar permohonan, total biaya PJ, dan tanda tangan.
- Menampilkan tabel daftar permohonan terlampir dengan informasi debitur, cabang, AO, dan nominal biaya PJ.
- Menyediakan fitur print preview dengan styling khusus untuk pencetakan dokumen resmi.
- Menambahkan UI interaktif untuk mempermudah navigasi sebelum menyimpan data.

Perubahan pada Form Create:
- Mengubah alur form `create.blade.php` agar mengarahkan ke halaman preview terlebih dahulu sebelum penyimpanan.
- Menambahkan tombol untuk melanjutkan proses ke simpan atau kembali ke pengisian form.

Routing dan Navigasi:
- Menambahkan route baru `memo.preview` untuk preview dan `memo.generate-pdf` untuk generate PDF memo penyelesaian.
- Menambahkan breadcrumb untuk halaman preview agar navigasi lebih jelas.

Fitur Tambahan:
- Implementasi JavaScript untuk interaksi form preview, print action, dan konfirmasi user.
- Penambahan fitur terbilang untuk memudahkan verifikasi nominal dalam format teks.
- Penanganan error secara komprehensif dengan logging dan rollback pada transaksi jika terjadi kesalahan.
- Menjamin data tetap konsisten meskipun user hanya melakukan preview tanpa menyimpan.

Tujuan Perubahan:
- Memberikan fasilitas preview agar user dapat memverifikasi data sebelum menyimpan memo penyelesaian.
- Memastikan output memo dalam format PDF resmi yang sesuai dengan template bank.
- Meningkatkan user experience dan mengurangi potensi kesalahan input sebelum proses finalisasi.
- Mempermudah proses cetak memo dengan fitur print-friendly dan PDF yang siap dikirim atau diarsipkan.
2025-07-17 09:55:06 +07:00
Daeng Deni Mardaeni
274addb069 refactor(memo): Sesuaikan struktur form dan tambahkan kalkulasi Total Biaya PJ
Melakukan refactor dan penyesuaian form memo penyelesaian agar lebih sesuai dengan kebutuhan bisnis, serta menambahkan fitur perhitungan otomatis Total Biaya PJ.

Perubahan pada Form Input:
- Mengubah field "Judul Memo" menjadi "Nomor Memo" untuk identifikasi memo yang lebih spesifik.
- Menghapus field "Isi Memo" karena tidak relevan dengan proses bisnis saat ini.
- Menambahkan field "Tanggal Pembayaran" untuk tracking proses pembayaran.
- Mengatur "Tanggal Memo" menjadi otomatis mengikuti tanggal hari ini dan disimpan sebagai hidden field untuk keperluan audit.
- Menambahkan field readonly "Total Biaya PJ" untuk menampilkan akumulasi biaya dari NOC terkait permohonan yang dipilih.

Perubahan pada Controller:
- Mengupdate validasi request agar sesuai dengan field baru: `memo_number`, `payment_date`, dan `permohonan_ids`.
- Menghapus validasi `memo_content` karena field tersebut tidak lagi digunakan.
- Menambahkan method `getTotalBiayaPJ()` untuk endpoint AJAX yang menghitung total biaya PJ secara real-time.
- Menggunakan relasi model `Noc` dan `Permohonan` untuk menghitung sum dari `nominal_bayar`.
- Mengupdate method `create()` agar langsung menghitung total biaya PJ saat form dibuka.
- Tetap menggunakan DB transaction untuk memastikan integritas data.

Perubahan pada Database Schema:
- Mengganti field `memo_penyelesaian_title` menjadi `memo_penyelesaian_number`.
- Menghapus field `memo_penyelesaian_content`.
- Menambahkan field baru `memo_penyelesaian_payment_date` untuk menyimpan tanggal pembayaran.
- Mempertahankan field `memo_penyelesaian_date` sebagai audit trail.

Perubahan pada View:
- Menambahkan field readonly "Total Biaya PJ" dengan format mata uang Rupiah.
- Menambahkan icon kalkulator dan styling sesuai dengan tema form.
- Menggunakan AJAX untuk menghitung total biaya PJ ketika user memilih atau mengubah permohonan secara dinamis.
- Menampilkan pesan error dan feedback user secara jelas jika terjadi masalah saat perhitungan.

Routing dan API:
- Menambahkan route `memo.total-biaya-pj` sebagai endpoint untuk kalkulasi biaya PJ berbasis AJAX.
- Tetap menggunakan route resource untuk operasi CRUD memo penyelesaian.

Keamanan dan Validasi:
- Implementasi CSRF protection untuk AJAX request.
- Validasi `permohonan_ids` harus berupa array yang valid dan terfilter dengan baik.
- Penanganan error yang komprehensif baik di sisi controller maupun client-side.

Peningkatan User Experience:
- Form menjadi lebih sederhana, efisien, dan fokus pada input yang memang dibutuhkan oleh proses bisnis.
- Real-time feedback saat memilih permohonan sehingga user langsung mengetahui total biaya PJ.
- Layout form tetap responsive dan mudah digunakan di berbagai perangkat.
- Memberikan pengalaman yang konsisten dengan desain aplikasi lainnya.

Tujuan Perubahan:
- Menyederhanakan proses pembuatan memo penyelesaian sesuai kebutuhan operasional terbaru.
- Memastikan proses input lebih cepat dan akurat dengan kalkulasi otomatis Total Biaya PJ.
- Mengurangi potensi kesalahan input dan mempercepat workflow divisi terkait.
- Meningkatkan maintainability dan konsistensi kode dengan standar sistem yang ada.
2025-07-17 09:41:20 +07:00
Daeng Deni Mardaeni
5c3a93c49b feat(lpj): implementasi fitur Memo Penyelesaian dengan controller, view, dan routing lengkap
Perubahan yang dilakukan:

**Controller MemoController:**
- Menambahkan MemoController untuk mengelola memo penyelesaian permohonan.
- Method index() untuk menampilkan daftar permohonan yang bisa dipilih.
- Method create() untuk form pembuatan memo dengan pemilihan data bulk.
- Method store() untuk menyimpan memo dan mengupdate status permohonan terkait.
- Method show() untuk menampilkan detail memo yang telah dibuat.
- Method dataForDatatables() untuk API datatables dengan filter, search, dan pagination.
- Implementasi DB transaction untuk menjaga integritas data.
- Logging dan error handling komprehensif di setiap method.

**View Template:**
- index.blade.php: Tabel data permohonan dengan fitur checkbox selection (bulk).
- create.blade.php: Form pembuatan memo dari data yang dipilih.
- show.blade.php: Halaman detail memo penyelesaian.
- Menggunakan Bootstrap untuk styling dan interaksi dinamis dengan JavaScript.
- Validasi client-side untuk memastikan data sesuai sebelum dikirim.

**Routing dan Navigasi:**
- Menambahkan route resource untuk operasi CRUD Memo.
- Menambahkan route khusus untuk datatables API dan bulk create.
- Integrasi menu "Memo Penyelesaian" di navigasi utama aplikasi.
- Role-based access control untuk keamanan akses fitur.

**Integrasi Data:**
- Menggunakan model Permohonan sebagai sumber data utama dengan eager loading.
- Relasi dengan tabel user, debitur, branch, dan tujuan penilaian.
- Menambahkan status management untuk mempermudah tracking progress permohonan.

**Keamanan dan Validasi:**
- Validasi input baik di sisi controller maupun client-side.
- CSRF protection dan XSS prevention untuk menjaga keamanan aplikasi.
- Permission checking sesuai level user.

**Performance dan UX:**
- Pagination dan query optimization untuk performa lebih baik.
- Caching strategi untuk data yang sering diakses.
- Interface yang intuitif, dengan loading state dan feedback message.
- Responsive design untuk desktop dan mobile.
- Shortcut keyboard untuk efisiensi power user.

**Teknis dan Testing:**
- Struktur kode mengikuti Laravel best practice dan design pattern.
- Siap untuk unit test dan integration test.
- Logging lengkap untuk monitoring dan debugging.
- Error scenario handling dan fallback yang robust.

Tujuan perubahan:
- Menyediakan fitur pengelolaan memo penyelesaian permohonan secara bulk dengan user experience yang optimal dan performa efisien.
2025-07-15 10:05:22 +07:00