- Menyelaraskan resolusi path file foto di PreviewLaporanService dengan logika fallback seperti pada komponen foto:
- Menggunakan `originalPath = $path['path']` sebagai path utama
- Jika `statusLpj == 1` dan file asli tidak ditemukan, maka:
- Ekstrak dua bagian terakhir dari path (contoh: `251051/251051_2_2.png`)
- Bangun `fallbackPath` dengan pola `surveyor/001/{lastTwoParts}`
- Tentukan `pathToUse`:
- Apabila `fallbackPath` ada dan file fallback ditemukan, gunakan `fallbackPath`
- Jika tidak, tetap gunakan `originalPath`
- Resolusi final: `storage_path('app/public/' . $pathToUse)`
- Menambahkan logging untuk setiap operasi penting dan setiap titik pengembalian:
- `Log::warning` saat path kosong terdeteksi dalam daftar paths
- `Log::info` saat fallback kandidat dibangun dari `originalPath`
- `Log::warning` saat file tidak ditemukan pada original maupun fallback (dengan menyertakan ketiganya: original, fallback, resolved)
- `Log::info` saat file berhasil ditambahkan ke daftar unduhan
- `Log::warning` saat tidak ada file valid setelah resolusi path
- `Log::info` saat mengunduh single file
- `Log::info` saat zip file berhasil dibuat (dengan jumlah file)
- `Log::error` saat zip file gagal dibuat
- Memindahkan logika resolusi path di dalam loop pengolahan `$paths` untuk setiap item:
- Mengganti setting langsung `storage_path('app/public/' . $path['path'])` dengan resolusi path yang bisa fallback
- Menjaga struktur kontrol dengan `continue` jika file final tetap tidak ditemukan
- Menambahkan komentar level-fungsi (docblock) pada `previewLaporan`:
- Menjelaskan tanggung jawab fungsi dalam menghasilkan PDF atau unduhan foto
- Menjelaskan skenario fallback path dan tujuan mengurangi gambar hilang
- Mendokumentasikan parameter dan bentuk nilai kembali respons
- **PreviewLaporanService.php**:
- Menambahkan parsing JSON untuk mig_permohonan sebelum digunakan
- Memperbaiki kondisi untuk menentukan statusLpj dengan menambahkan validasi nilai pasar < 1
- Meningkatkan logika penentuan path foto berdasarkan status memo dan nilai total pasar wajar
- **print-out-standar.blade.php**:
- Memindahkan header tabel 'SARAN' keluar dari loop foreach untuk mencegah duplikasi header
- Menambahkan format list (ul/li) pada tampilan saran untuk meningkatkan readability
- Menambahkan margin-top 20px pada section penutup laporan untuk spacing yang lebih baik
- Memperbaiki struktur HTML dengan wrapping konten saran dalam list item
- Nonaktifkan filter dokument_id di PreviewLaporanService untuk fleksibilitas
- Tambah kondisi tampilkan DD hanya jika berbeda dengan EO
- Gunakan tanggal mig_mst_jaminan_tgl_laporan sebagai sumber utama
- Perbaiki logika nama & tanggal approval SO
- Gunakan Carbon::createFromFormat untuk parsing tanggal migrasi
- Tambah validasi kondisional agar tidak duplikasi approval
- Rapikan struktur HTML & indentasi signature-approval.blade.php
- Pastikan konsistensi data antara preview service & signature view
- Hasil: tampilan signature lebih akurat & sesuai data migrasi
- PreviewLaporanService.php:
- Aktifkan kembali filter dokument_id untuk query Penilai
- Tambahkan validasi dokumen ID agar data yang diambil tepat
- Perbaiki logika pengambilan status LPJ untuk akurasi laporan
- informasi.blade.php:
- Tambahkan section baru untuk menampilkan data saran dari form inspeksi
- Implementasi loop untuk menampilkan banyak saran (array/string)
- Styling tabel saran dengan border & alignment konsisten
- print-out-sederhana.blade.php:
- Hilangkan koma awal di nilai dengan ltrim() untuk tampilan bersih
- Konsistensi format antar section laporan
- print-out-standar.blade.php:
- Tambah field 'Fasilitas Kredit' dan 'Alamat & Telepon Debitur'
- Perbaiki logika total nilai pasar wajar dengan conditional formatting
- Tambah section saran yang konsisten dengan komponen lain
- Hapus semicolon berlebih (syntax fix)
- signature-approval.blade.php:
- Ubah sumber tanggal dari updated_at ke tanggal_kunjungan untuk akurasi
- Tambah halaman index SLIK di modul admin kredit untuk manajemen data Sistem Layanan Informasi Keuangan
- Buat tabel data dengan kolom: Sandi Bank, Tahun, No Rekening, CIF, Nama Debitur, Kolektibilitas, Fasilitas, Nilai Agunan, dan Status
- Implementasi pencarian keyword serta filter tahun, bulan, dan status agunan
- Tambahkan tombol aksi 'Detail' untuk melihat data lengkap
- Tambahkan fitur import dari Excel (.xlsx/.xls/.csv) dengan validasi format & file size ≤ 10MB
- Tambahkan fitur export Excel berdasarkan filter aktif
- Tambahkan tombol download template Excel untuk panduan format import
- Implementasi fungsi truncate/hapus semua data SLIK dengan modal konfirmasi
- Tambahkan validasi kombinasi unik (sandi bank, tahun, bulan, no rekening) untuk update data otomatis
- Gunakan KTDataTable dengan server-side processing, layout responsif, dan scroll horizontal
- Tambahkan modal import & modal konfirmasi hapus
- Tambahkan breadcrumbs, event listener untuk pencarian/filter, dan CSRF protection
- Implementasi validasi keamanan file upload dan pesan error/success
Perubahan utama pada PreviewLaporanService.php:
- Mengoptimalkan urutan import dengan mengelompokkan berdasarkan namespace
- Memperbaiki logika tanggal laporan untuk data migrasi dengan fallback ke tgl_create
- Menghapus filter dokument_id pada query LPJ untuk fleksibilitas
- Menambahkan penanganan khusus untuk tipe laporan 'memo' pada data migrasi
- Menambahkan validasi file path untuk download dokumen memo
- Memperbaiki kondisi pengecekan memo untuk non-migrasi data
Perubahan pada print-out-standar.blade.php:
- Menyembunyikan baris header dokumen yang menyebabkan duplikasi tampilan
- Menambahkan fungsi ltrim untuk membersihkan koma di awal nilai data
Perubahan ini meningkatkan stabilitas dan akurasi tampilan preview laporan,\nserta memperbaiki penanganan data migrasi dan memo khusus.
- signature-approval.blade.php: tambahkan kondisi SO==EO → render 1 kolom 'Diperiksa dan Menyetujui' (pakai jabatan EO)
- signature-approval.blade.php: bila SO≠EO → render kolom terpisah 'Diperiksa' (SO) & 'Menyetujui' (EO) seperti sebelumnya
- signature-approval.blade.php: jaga konsistensi label/jabatan & area tanda tangan agar tidak redundan
- PreviewLaporanService: ubah urutan fallback tanggal migrasi → tgl_laporan → tgl_oto → null
- PreviewLaporanService: parsing tanggal migrasi via Carbon::createFromFormat('d/m/Y H:i:s') → 'Y-m-d H:i:s'
- Akurasi tanggal laporan meningkat karena tgl_oto merefleksikan tanggal otorisasi/approval
- Tampilan blok signature lebih rapi pada kasus SO/EO sama; hilangkan duplikasi informasi
- Backward-compatible: perilaku SO≠EO & data non-migrasi tidak berubah
- Terapkan number_format(ID) (0 desimal, ',' desimal, '.' ribuan) untuk nilai pasar wajar Bagian 1
- print-out-sederhana: format nilai per kategori & nilai perbandingan (Bagian 1)
- print-out-standar: format nilai per kategori, nilai perbandingan (Bagian 1), dan nilai likuidasi
- Tambah section fakta khusus permohonan migrasi (is_mig) dengan tabel 'judul' per kategori
- Support konten fakta sebagai array/string; render dinamis & rapi
- Perbaiki logika tanggal laporan migrasi: fallback tgl_laporan → tgl_create → null
- Parsing tanggal migrasi via Carbon::createFromFormat('d/m/Y H:i:s') → 'Y-m-d H:i:s'
- Jaga konsistensi & keterbacaan angka besar (ribuan–miliaran) di semua laporan
- Menambahkan logika penyesuaian tanggal laporan untuk permohonan hasil migrasi (is_mig)
- Gunakan mig_mst_jaminan_tgl_laporan jika is_mig = true, fallback ke lpj->created_at jika false
- Tambahkan inisialisasi dataPembanding = '' sebagai default untuk mencegah undefined variable
- Tambahkan variabel mig_permohonan untuk mempermudah akses data hasil migrasi
- Menambahkan logging decode mig_permohonan dan fallback tgl_laporan untuk debugging
- Menjaga konsistensi tanggal laporan antara data migrasi dan data baru
- Meningkatkan stabilitas render preview laporan untuk permohonan tanpa inspeksi
- File yang diubah: app/Services/PreviewLaporanService.php
- Kompatibel dengan Laravel 12, PHP 8.3, PostgreSQL