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
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -93,9 +93,10 @@
|
||||
@foreach ($permohonanList as $permohonan)
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<input type="checkbox" name="permohonan_ids[]"
|
||||
value="{{ $permohonan->id }}"
|
||||
class="checkbox checkbox-sm permohonan-checkbox" checked disabled>
|
||||
<input type="checkbox" class="checkbox checkbox-sm permohonan-checkbox"
|
||||
checked disabled>
|
||||
<input type="hidden" name="permohonan_ids[]"
|
||||
value="{{ $permohonan->id }}">
|
||||
</td>
|
||||
<td class="font-medium">{{ $permohonan->nomor_registrasi }}</td>
|
||||
<td>{{ $permohonan->debiture->name ?? '-' }}</td>
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
}
|
||||
|
||||
.memo-info .label {
|
||||
width: 80px;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.memo-info .colon {
|
||||
@@ -247,7 +247,7 @@
|
||||
<tr>
|
||||
<td class="label">Jaminan</td>
|
||||
<td class="colon">:</td>
|
||||
<td>{{ $memoData['jaminan_info'] }}</td>
|
||||
<td>Tanah & Bangunan</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Total Biaya PJ</td>
|
||||
@@ -272,13 +272,25 @@
|
||||
<tr>
|
||||
<td class="label">Jenis Penilaian</td>
|
||||
<td class="colon">:</td>
|
||||
<td><strong>KJPP</strong></td>
|
||||
<td><strong>
|
||||
@if ($memoData['jenisPenilaian'] == 2)
|
||||
KJPP
|
||||
@else
|
||||
Internal
|
||||
@endif
|
||||
</strong></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p style="margin-bottom: 16px;">Kami menginstruksikan kepada Sentra Operasi untuk menyelesaikan Rekening Escrow
|
||||
/ <strong>KSL Penilai Jaminan</strong> atas nama debitur tersebut diatas ke <strong>KJPP
|
||||
(terlampir)</strong>.</p>
|
||||
/ <strong>KSL Penilai Jaminan</strong> atas nama debitur tersebut diatas ke
|
||||
|
||||
@if ($memoData['jenisPenilaian'] == 2)
|
||||
<strong>KJPP (terlampir)</strong>.
|
||||
@else
|
||||
<strong>PDPT-Lainnya Penilaian Jaminan KPNO (IDR 57557)</strong>.
|
||||
@endif
|
||||
</p>
|
||||
|
||||
<p style="margin-bottom: 16px;">Demikian kami sampaikan, atas perhatian dan kerjasamanya kami ucapkan terima
|
||||
kasih.</p>
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
<table style="width: 100%; border-collapse: collapse; margin-bottom: 16px;">
|
||||
<tr>
|
||||
<td style="width: 120px; padding: 2px 0; vertical-align: top;">Nama Debitur</td>
|
||||
<td style="width: 200px; padding: 2px 0; vertical-align: top;">Nama Debitur</td>
|
||||
<td style="width: 10px; padding: 2px 0; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px 0; vertical-align: top;">Terlampir ({{ $memoData['debitur_count'] }}
|
||||
Debitur)</td>
|
||||
@@ -98,7 +98,7 @@
|
||||
<tr>
|
||||
<td style="padding: 2px 0; vertical-align: top;">Jaminan</td>
|
||||
<td style="padding: 2px 0; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px 0; vertical-align: top;">{{ $memoData['jaminan_info'] }}</td>
|
||||
<td style="padding: 2px 0; vertical-align: top;">Tanah & Bangunan</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px 0; vertical-align: top;">Total Biaya PJ</td>
|
||||
@@ -126,14 +126,27 @@
|
||||
<tr>
|
||||
<td style="padding: 2px 0; vertical-align: top;">Jenis Penilaian</td>
|
||||
<td style="padding: 2px 0; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px 0; vertical-align: top;"><strong>KJPP</strong></td>
|
||||
<td style="padding: 2px 0; vertical-align: top;">
|
||||
<strong>
|
||||
@if ($memoData['jenisPenilaian'] == 2)
|
||||
KJPP
|
||||
@else
|
||||
Internal
|
||||
@endif
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p style="margin-bottom: 16px; text-align: justify;">
|
||||
Kami menginstruksikan kepada Sentra Operasi untuk menyelesaikan Rekening Escrow /
|
||||
<strong>KSL Penilai Jaminan</strong> atas nama debitur tersebut diatas ke <strong>KJPP
|
||||
(terlampir)</strong>.
|
||||
<strong>KSL Penilai Jaminan</strong> atas nama debitur tersebut diatas ke
|
||||
|
||||
@if ($memoData['jenisPenilaian'] == 2)
|
||||
<strong>KJPP (terlampir)</strong>.
|
||||
@else
|
||||
<strong>PDPT-Lainnya Penilaian Jaminan KPNO (IDR 57557)</strong>.
|
||||
@endif
|
||||
</p>
|
||||
|
||||
<p style="margin-bottom: 16px; text-align: justify;">Demikian kami sampaikan, atas perhatian dan
|
||||
|
||||
Reference in New Issue
Block a user