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)
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.
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