From cf0059fe6617a7d4f027f6bfab349c72773d64a1 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 17 Jul 2025 16:05:56 +0700 Subject: [PATCH] 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 --- app/Http/Controllers/MemoController.php | 39 ++++++++++----------- resources/views/memo/create.blade.php | 7 ++-- resources/views/memo/pdf-template.blade.php | 22 +++++++++--- resources/views/memo/preview.blade.php | 23 +++++++++--- 4 files changed, 58 insertions(+), 33 deletions(-) diff --git a/app/Http/Controllers/MemoController.php b/app/Http/Controllers/MemoController.php index 878e7df..c0cecb9 100644 --- a/app/Http/Controllers/MemoController.php +++ b/app/Http/Controllers/MemoController.php @@ -190,8 +190,8 @@ class MemoController extends Controller $q->whereIn('nilai_plafond_id', [1, 4]) ->whereNotNull('approval_dd_at') ->orWhereIn('nilai_plafond_id', [2, 3]); - }); - //->whereHas('noc'); // Hanya tampilkan permohonan yang memiliki NOC + }) + ->whereHas('noc'); // Hanya tampilkan permohonan yang memiliki NOC $query = $query->orderBy('nomor_registrasi', 'desc'); @@ -340,14 +340,6 @@ class MemoController extends Controller { Log::info('MemoController: Mengakses halaman preview memo penyelesaian'); - // Validasi input - $request->validate([ - 'permohonan_ids' => 'required|array', - 'permohonan_ids.*' => 'exists:permohonan,id', - 'memo_number' => 'required|string|max:255', - 'payment_date' => 'required|date', - 'memo_date' => 'required|date' - ]); $permohonanIds = $request->permohonan_ids; $memoNumber = $request->memo_number; @@ -360,14 +352,14 @@ class MemoController extends Controller 'user', 'debiture', 'branch', - 'tujuanPenilaian', 'penilaian', + 'jenisPenilaian', 'jenisFasilitasKredit', 'documents.inspeksi', 'penilai', 'documents.detail', 'noc' - ])->whereIn('id', $permohonanIds)->get(); + ])->whereIn('id', $permohonanIds); // Hitung total biaya PJ dari nominal_bayar di tabel NOC $totalBiayaPJ = Noc::whereIn('permohonan_id', $permohonanIds) @@ -379,11 +371,14 @@ class MemoController extends Controller 'memo_date' => $memoDate, 'payment_date' => $paymentDate, 'total_biaya_pj' => $totalBiayaPJ, - 'permohonan_list' => $permohonanList, - 'debitur_count' => $permohonanList->count(), - 'jaminan_info' => $this->getJaminanInfo($permohonanList) + 'permohonan_list' => $permohonanList->get(), + 'debitur_count' => $permohonanList->get()->count(), + 'jaminan_info' => $this->getJaminanInfo($permohonanList->get()), + 'jenisPenilaian' => $permohonanList->pluck('jenis_penilaian_id')->first() ]; + $permohonanList= $permohonanList->get(); + Log::info('MemoController: Data preview memo berhasil disiapkan'); return view('lpj::memo.preview', compact('memoData', 'permohonanList', 'totalBiayaPJ')); @@ -421,14 +416,14 @@ class MemoController extends Controller 'user', 'debiture', 'branch', - 'tujuanPenilaian', 'penilaian', + 'jenisPenilaian', 'jenisFasilitasKredit', 'documents.inspeksi', 'penilai', 'documents.detail', 'noc' - ])->whereIn('id', $permohonanIds)->get(); + ])->whereIn('id', $permohonanIds); // Hitung total biaya PJ dari nominal_bayar di tabel NOC $totalBiayaPJ = Noc::whereIn('permohonan_id', $permohonanIds) @@ -440,10 +435,14 @@ class MemoController extends Controller 'memo_date' => $memoDate, 'payment_date' => $paymentDate, 'total_biaya_pj' => $totalBiayaPJ, - 'permohonan_list' => $permohonanList, - 'debitur_count' => $permohonanList->count(), - 'jaminan_info' => $this->getJaminanInfo($permohonanList) + 'permohonan_list' => $permohonanList->get(), + 'debitur_count' => $permohonanList->get()->count(), + 'jaminan_info' => $this->getJaminanInfo($permohonanList->get()), + 'jenisPenilaian' => $permohonanList->pluck('jenis_penilaian_id')->first() ]; + + $permohonanList= $permohonanList->get(); + // Generate PDF dari template $pdf = Pdf::loadView('lpj::memo.pdf-template', compact('memoData', 'permohonanList', 'totalBiayaPJ')) ->setPaper('a4', 'portrait') diff --git a/resources/views/memo/create.blade.php b/resources/views/memo/create.blade.php index 06e3bd8..099a494 100644 --- a/resources/views/memo/create.blade.php +++ b/resources/views/memo/create.blade.php @@ -93,9 +93,10 @@ @foreach ($permohonanList as $permohonan) - + + {{ $permohonan->nomor_registrasi }} {{ $permohonan->debiture->name ?? '-' }} diff --git a/resources/views/memo/pdf-template.blade.php b/resources/views/memo/pdf-template.blade.php index c2de268..f8350b9 100644 --- a/resources/views/memo/pdf-template.blade.php +++ b/resources/views/memo/pdf-template.blade.php @@ -49,7 +49,7 @@ } .memo-info .label { - width: 80px; + width: 200px; } .memo-info .colon { @@ -247,7 +247,7 @@ Jaminan : - {{ $memoData['jaminan_info'] }} + Tanah & Bangunan Total Biaya PJ @@ -272,13 +272,25 @@ Jenis Penilaian : - KJPP + + @if ($memoData['jenisPenilaian'] == 2) + KJPP + @else + Internal + @endif +

Kami menginstruksikan kepada Sentra Operasi untuk menyelesaikan Rekening Escrow - / KSL Penilai Jaminan atas nama debitur tersebut diatas ke KJPP - (terlampir).

+ / KSL Penilai Jaminan atas nama debitur tersebut diatas ke + + @if ($memoData['jenisPenilaian'] == 2) + KJPP (terlampir). + @else + PDPT-Lainnya Penilaian Jaminan KPNO (IDR 57557). + @endif +

Demikian kami sampaikan, atas perhatian dan kerjasamanya kami ucapkan terima kasih.

diff --git a/resources/views/memo/preview.blade.php b/resources/views/memo/preview.blade.php index c804509..efd9f2f 100644 --- a/resources/views/memo/preview.blade.php +++ b/resources/views/memo/preview.blade.php @@ -90,7 +90,7 @@ - + @@ -98,7 +98,7 @@ - + @@ -126,14 +126,27 @@ - +
Nama DebiturNama Debitur : Terlampir ({{ $memoData['debitur_count'] }} Debitur)
Jaminan :{{ $memoData['jaminan_info'] }}Tanah & Bangunan
Total Biaya PJ
Jenis Penilaian :KJPP + + @if ($memoData['jenisPenilaian'] == 2) + KJPP + @else + Internal + @endif + +

Kami menginstruksikan kepada Sentra Operasi untuk menyelesaikan Rekening Escrow / - KSL Penilai Jaminan atas nama debitur tersebut diatas ke KJPP - (terlampir). + KSL Penilai Jaminan atas nama debitur tersebut diatas ke + + @if ($memoData['jenisPenilaian'] == 2) + KJPP (terlampir). + @else + PDPT-Lainnya Penilaian Jaminan KPNO (IDR 57557). + @endif

Demikian kami sampaikan, atas perhatian dan