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
Perubahan yang dilakukan:
- Menambahkan dropdown filter "Jenis Penilaian" (Internal/External) pada halaman index memo penyelesaian
- Mengimplementasikan filter gabungan menggunakan separator '|' untuk kombinasi filter dan search
- Memperbaiki fungsi clearSelectedCheckboxes dengan selector '#memo-table thead input[type="checkbox"]' agar lebih spesifik
- Menambahkan event listener untuk filter jenis penilaian yang terintegrasi dengan fungsi search datatable
- Mengupdate MemoController untuk memisahkan parameter filter menjadi jenis penilaian dan search term menggunakan explode('|')
- Menambahkan log untuk debugging filter dan proses checkbox
- Memodifikasi tampilan dengan class `gap-2` pada container filter untuk spacing yang lebih baik
- Menambahkan console.log pada fungsi handleCheckboxChange untuk tracking interaksi user
- Memperbaiki error handling pada fungsi clearSelectedCheckboxes untuk memastikan checkbox ter-reset dengan benar
- Menampilkan jumlah item terpilih pada tombol "Create Memo" untuk meningkatkan feedback user
Tujuan perubahan:
- Mempermudah pengguna dalam memfilter data berdasarkan jenis penilaian langsung di datatable memo
- Memastikan fungsi checkbox selection berjalan dengan konsisten dan lebih robust
- Meningkatkan user experience dengan feedback visual yang lebih jelas saat filter dan selection digunakan
- Menyederhanakan interaksi user sekaligus menjaga akurasi proses pembuatan memo penyelesaian
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
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
Perubahan yang dilakukan:
- Memperbaiki indentasi pada loop foreach untuk update NOC dan permohonan agar lebih readable
- Mengomentari sementara kondisi whereHas('noc') pada dataForDatatables untuk keperluan pengujian
- Merapikan struktur kode pada method storeMemopenyelesaian agar lebih konsisten dan mudah dipahami
- Menambahkan konsistensi formatting pada blok kode update NOC untuk meningkatkan maintainability
- Memastikan logging tetap aktif untuk kebutuhan audit dan tracking perubahan data
- Menjaga integritas proses dengan tetap menggunakan database transaction (commit/rollback)
Tujuan perubahan:
- Meningkatkan keterbacaan dan konsistensi kode di MemoController
- Mempermudah proses debugging dan pengujian dengan menonaktifkan filter NOC sementara
- Memastikan struktur kode tetap rapih dan mudah dikelola tanpa mengubah logika bisnis utama
- Menambahkan field memo_penyelesaian_pdf_path ke tabel noc untuk menyimpan path file PDF
- Membuat migrasi baru untuk menambahkan field PDF path ke tabel noc
- Menambahkan field memo_penyelesaian_pdf_path ke model Noc dalam fillable array
- Memodifikasi fungsi generatePdf di MemoController untuk menyimpan path PDF ke database
- Menambahkan route baru memo.download-pdf untuk download file PDF memo penyelesaian
- Membuat method downloadPdf di MemoController dengan validasi file dan error handling
- Memodifikasi kolom select di datatables untuk disable checkbox jika sudah ada memo
- Menambahkan tooltip pada checkbox yang disabled untuk memberikan informasi kepada user
- Memodifikasi kolom actions untuk menampilkan tombol download PDF jika memo sudah ada
- Menampilkan informasi nomor memo dan tanggal memo di kolom actions
- Memodifikasi fungsi handleCheckboxChange untuk mengabaikan checkbox yang disabled
- Menambahkan styling untuk tombol download dengan icon dan warna yang sesuai
- Menambahkan logging untuk tracking aktivitas download PDF memo penyelesaian
- Menambahkan validasi keberadaan file di storage sebelum mengizinkan download
- Menggunakan Storage facade untuk operasi file yang lebih aman dan konsisten
Menambahkan filter pada datatables memo penyelesaian agar hanya menampilkan permohonan yang sudah memiliki NOC.
Perubahan yang dilakukan:
- Menambahkan kondisi whereHas('noc') pada query dataForDatatables
- Memastikan hanya permohonan dengan relasi NOC yang ditampilkan
- Filtering dilakukan langsung di level database untuk efisiensi
- Konsisten dengan logika bisnis memo penyelesaian
- Update MemoController:
- Memodifikasi fungsi dataForDatatables di baris 184-193
- Menambahkan ->whereHas('noc') setelah kondisi filter existing
- Mempertahankan semua parameter request dan struktur response yang sudah ada
- Logging tetap aktif untuk kebutuhan audit dan monitoring
Tujuan perubahan:
- Menjamin konsistensi proses memo penyelesaian hanya pada permohonan yang sudah memiliki NOC
- Menghindari proses memo pada data yang belum lengkap
- Menjaga data integrity dengan relasi yang lebih jelas antara permohonan dan NOC
- Meningkatkan efisiensi query dengan filtering langsung di database
Menambahkan penyimpanan data memo penyelesaian ke tabel NOC dan memperbarui fungsi generatePdf di MemoController agar lebih terintegrasi.
Perubahan yang dilakukan:
- Menambahkan migrasi untuk field baru di tabel NOC:
- memo_penyelesaian_number: nomor memo penyelesaian
- memo_penyelesaian_date: tanggal memo
- memo_penyelesaian_payment_date: tanggal pembayaran
- memo_penyelesaian_pdf_path: path file PDF memo
- memo_penyelesaian_created_at: timestamp pembuatan memo
- Update model NOC:
- Menambahkan field baru ke $fillable array untuk mass assignment
- Menambahkan casting untuk field date dan datetime agar otomatis diconvert oleh Eloquent
- Mempertahankan struktur model dan relasi yang sudah ada
- Update MemoController:
- Mengubah proses penyimpanan memo dari tabel permohonan ke tabel NOC
- Menambahkan pencarian NOC berdasarkan permohonan_id
- Menyimpan semua informasi memo penyelesaian langsung ke NOC
- Tetap memperbarui status permohonan agar proses bisnis tetap berjalan
- Menambahkan logging untuk mempermudah monitoring dan debugging
- Menggunakan DB transaction untuk menjaga konsistensi data
Struktur data memo penyelesaian:
- Disimpan secara terpusat di tabel NOC sebagai source of truth
- Memiliki relasi langsung dengan tabel permohonan untuk referensi data
- Menyimpan path PDF memo untuk akses file yang lebih mudah
- Menyediakan timestamp lengkap untuk kebutuhan audit trail
Tujuan perubahan:
- Memusatkan data memo penyelesaian di tabel NOC untuk kemudahan query dan reporting
- Menjamin konsistensi data dengan mekanisme transaction
- Memperjelas struktur relasi antara memo penyelesaian dan permohonan
- Memudahkan proses tracking, pelaporan, dan audit memo penyelesaian
Melakukan sinkronisasi tampilan memo penyelesaian antara preview dan PDF serta memperbaiki struktur layout bagian tanda tangan untuk kompatibilitas PDF.
Perubahan yang dilakukan:
- Menyesuaikan header dan logo dengan ukuran yang sama (53.55px) untuk preview dan PDF.
- Mengubah judul memo menjadi "Memo Instruksi Penyelesaian Rekening Escrow / KSL Penilai Jaminan".
- Menyesuaikan informasi memo (Kepada, Dari, Perihal) agar konsisten antara preview dan PDF.
- Menggunakan format tabel yang konsisten untuk detail memo dan lampiran.
- Menambahkan daftar lampiran dengan kolom Nomor Registrasi dan AO sesuai format preview.
- Mengimplementasikan fungsi `terbilang()` untuk konversi angka ke teks dalam lampiran.
- Menyesuaikan font size, spacing, dan styling agar seragam di semua output.
- Menambahkan page break yang presisi antara halaman memo utama dan lampiran.
Perbaikan section tanda tangan:
- Mengganti struktur flexbox dengan table layout pada bagian tanda tangan untuk stabilitas PDF.
- Menggunakan 3 kolom dengan lebar 33.33% untuk pembagian tanda tangan yang rata.
- Menambahkan `vertical-align: top` untuk posisi tanda tangan yang konsisten secara vertikal.
- Menambahkan padding horizontal agar antar kolom tanda tangan tidak saling berdekatan.
- Memastikan garis tanda tangan tetap center dengan `margin: auto`.
- Mengoptimalkan layout agar kompatibel dengan berbagai PDF viewer dan environment printing.
Tujuan perubahan:
- Menjamin konsistensi tampilan antara preview di aplikasi dan file PDF yang dihasilkan.
- Memastikan dokumen tercetak rapi, profesional, dan sesuai dengan format dokumen resmi perbankan.
- Meningkatkan kompatibilitas layout untuk berbagai perangkat dan proses cetak.
Memperbaiki tampilan preview memo penyelesaian agar sesuai dengan standar dokumen resmi bank.
Perubahan yang dilakukan:
- Mengganti logo placeholder AGI dengan logo resmi Bank Artha Graha Internasional.
- Mengubah layout dari card-based menjadi full-width format A4 untuk preview, print, dan PDF.
- Menambahkan header controls dengan class `no-print` agar tersembunyi saat dicetak atau di-generate PDF.
- Memperbaiki struktur header bank dengan logo dan nama perusahaan yang proper.
- Menyesuaikan judul memo menjadi lebih compact dan professional.
- Memperbaiki struktur tabel informasi memo dengan penggunaan inline styling untuk konsistensi PDF.
- Menambahkan helper `dateFormat()` untuk penulisan tanggal yang lebih rapi.
- Memperbaiki posisi tanda tangan agar lebih proporsional dan sesuai format resmi.
- Menambahkan class `page-memo` untuk styling halaman memo secara khusus.
- Menyempurnakan responsive design dengan flex layout yang lebih baik.
- Menambahkan path logo: `assets/media/images/logo-arthagraha.png` untuk keperluan cetak dan PDF.
- Memperbaiki typography dan spacing agar sesuai dengan standar dokumen resmi.
- Menambahkan kontrol print-friendly menggunakan class `no-print`.
Tujuan perubahan:
- Menjamin tampilan memo penyelesaian sesuai standar corporate identity bank.
- Memastikan output PDF dan print preview konsisten dengan dokumen resmi.
- Meningkatkan profesionalitas tampilan dan mempermudah proses administrasi.
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.
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.
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.
refactor: update laporan user service and views for simplified report
style: improve daftar pustaka views and remove unused code
fix: correct date field names in laporan sla penilai service
- **Controller (NocController)**:
- Perbaikan nama route pada **index()** dari `noc.pembayaran` menjadi `noc.pembayaran.index`.
- Menghapus komentar kode tak terpakai pada logika update **status permohonan** di metode penyimpanan.
- **Blade Views**:
- Perbaikan konsistensi atribut HTML dan struktur elemen di berbagai template: `index.blade.php`, `pembayaran.blade.php`, dan `form.blade.php`.
- Penghapusan spasi yang tidak diperlukan dan optimasi indentasi pada atribut elemen seperti `class`, `data-*`, dan lainnya.
- Perbaikan label input dan placeholder untuk keterbacaan dan kesesuaian desain.
- Penyelarasan nama variabel dan logika validasi berdasarkan kondisi file dan data yang ada.
- **Form NOC**:
- Penyesuaian form handling untuk berbagai atribut seperti `status_pembayar`, `nominal_bayar`, dan `bukti_ksl`.
- Penyesuaian aksi form untuk **update** atau **store** tergantung kondisi form.
- **Datatables**:
- Pengoptimalan tabel untuk hierarki atribut dan nilai default seperti pagination, sorting, atau data filtering.
- Menambahkan metode baru pada `NocController` untuk mendukung pengelolaan NOC pembayaran dan penyelesaian.
- `pembayaran()` untuk menampilkan daftar NOC Pembayaran.
- `penyelesaian()` untuk menampilkan daftar NOC Penyelesaian.
- Menambahkan fitur baru datatables untuk pembayaran dan penyelesaian:
- `dataForDatatablesPembayaran()` untuk filter pembayaran tanpa memo penyelesaian.
- `dataForDatatablesPenyelesaian()` untuk filter penyelesaian dengan memo penyelesaian.
- Memperbarui routing untuk mendukung fitur baru:
- `noc/pembayaran` untuk daftar pembayaran.
- `noc/penyelesaian` untuk daftar penyelesaian.
- Tambah endpoint datatables baru: `/noc/datatables/pembayaran` dan `/noc/datatables/penyelesaian`.
- Menambahkan file blade baru untuk menampilkan daftar NOC pembayaran dan penyelesaian:
- `pembayaran.blade.php`.
- `penyelesaian.blade.php`.
- Menambahkan breadcrumbs untuk fitur pembayaran dan penyelesaian:
- `noc.pembayaran` dan `noc.penyelesaian`.
- Update `module.json` untuk mendukung UI navigasi baru pada NOC:
- Tambahkan submenu "Pembayaran" dan "Penyelesaian".
- Ubah ikon menu NOC dari `ki-two-credit-cart` menjadi `ki-briefcase`.
- Menambahkan validasi, filter, dan sorting baru untuk datatables pembayaran dan penyelesaian.
- Mengoptimalkan tabel datatables sehingga mendukung input pencarian, sorting, dan download file terkait bukti pembayaran atau memo penyelesaian.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>