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])
|
$q->whereIn('nilai_plafond_id', [1, 4])
|
||||||
->whereNotNull('approval_dd_at')
|
->whereNotNull('approval_dd_at')
|
||||||
->orWhereIn('nilai_plafond_id', [2, 3]);
|
->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');
|
$query = $query->orderBy('nomor_registrasi', 'desc');
|
||||||
@@ -340,14 +340,6 @@ class MemoController extends Controller
|
|||||||
{
|
{
|
||||||
Log::info('MemoController: Mengakses halaman preview memo penyelesaian');
|
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;
|
$permohonanIds = $request->permohonan_ids;
|
||||||
$memoNumber = $request->memo_number;
|
$memoNumber = $request->memo_number;
|
||||||
@@ -360,14 +352,14 @@ class MemoController extends Controller
|
|||||||
'user',
|
'user',
|
||||||
'debiture',
|
'debiture',
|
||||||
'branch',
|
'branch',
|
||||||
'tujuanPenilaian',
|
|
||||||
'penilaian',
|
'penilaian',
|
||||||
|
'jenisPenilaian',
|
||||||
'jenisFasilitasKredit',
|
'jenisFasilitasKredit',
|
||||||
'documents.inspeksi',
|
'documents.inspeksi',
|
||||||
'penilai',
|
'penilai',
|
||||||
'documents.detail',
|
'documents.detail',
|
||||||
'noc'
|
'noc'
|
||||||
])->whereIn('id', $permohonanIds)->get();
|
])->whereIn('id', $permohonanIds);
|
||||||
|
|
||||||
// Hitung total biaya PJ dari nominal_bayar di tabel NOC
|
// Hitung total biaya PJ dari nominal_bayar di tabel NOC
|
||||||
$totalBiayaPJ = Noc::whereIn('permohonan_id', $permohonanIds)
|
$totalBiayaPJ = Noc::whereIn('permohonan_id', $permohonanIds)
|
||||||
@@ -379,11 +371,14 @@ class MemoController extends Controller
|
|||||||
'memo_date' => $memoDate,
|
'memo_date' => $memoDate,
|
||||||
'payment_date' => $paymentDate,
|
'payment_date' => $paymentDate,
|
||||||
'total_biaya_pj' => $totalBiayaPJ,
|
'total_biaya_pj' => $totalBiayaPJ,
|
||||||
'permohonan_list' => $permohonanList,
|
'permohonan_list' => $permohonanList->get(),
|
||||||
'debitur_count' => $permohonanList->count(),
|
'debitur_count' => $permohonanList->get()->count(),
|
||||||
'jaminan_info' => $this->getJaminanInfo($permohonanList)
|
'jaminan_info' => $this->getJaminanInfo($permohonanList->get()),
|
||||||
|
'jenisPenilaian' => $permohonanList->pluck('jenis_penilaian_id')->first()
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$permohonanList= $permohonanList->get();
|
||||||
|
|
||||||
Log::info('MemoController: Data preview memo berhasil disiapkan');
|
Log::info('MemoController: Data preview memo berhasil disiapkan');
|
||||||
|
|
||||||
return view('lpj::memo.preview', compact('memoData', 'permohonanList', 'totalBiayaPJ'));
|
return view('lpj::memo.preview', compact('memoData', 'permohonanList', 'totalBiayaPJ'));
|
||||||
@@ -421,14 +416,14 @@ class MemoController extends Controller
|
|||||||
'user',
|
'user',
|
||||||
'debiture',
|
'debiture',
|
||||||
'branch',
|
'branch',
|
||||||
'tujuanPenilaian',
|
|
||||||
'penilaian',
|
'penilaian',
|
||||||
|
'jenisPenilaian',
|
||||||
'jenisFasilitasKredit',
|
'jenisFasilitasKredit',
|
||||||
'documents.inspeksi',
|
'documents.inspeksi',
|
||||||
'penilai',
|
'penilai',
|
||||||
'documents.detail',
|
'documents.detail',
|
||||||
'noc'
|
'noc'
|
||||||
])->whereIn('id', $permohonanIds)->get();
|
])->whereIn('id', $permohonanIds);
|
||||||
|
|
||||||
// Hitung total biaya PJ dari nominal_bayar di tabel NOC
|
// Hitung total biaya PJ dari nominal_bayar di tabel NOC
|
||||||
$totalBiayaPJ = Noc::whereIn('permohonan_id', $permohonanIds)
|
$totalBiayaPJ = Noc::whereIn('permohonan_id', $permohonanIds)
|
||||||
@@ -440,10 +435,14 @@ class MemoController extends Controller
|
|||||||
'memo_date' => $memoDate,
|
'memo_date' => $memoDate,
|
||||||
'payment_date' => $paymentDate,
|
'payment_date' => $paymentDate,
|
||||||
'total_biaya_pj' => $totalBiayaPJ,
|
'total_biaya_pj' => $totalBiayaPJ,
|
||||||
'permohonan_list' => $permohonanList,
|
'permohonan_list' => $permohonanList->get(),
|
||||||
'debitur_count' => $permohonanList->count(),
|
'debitur_count' => $permohonanList->get()->count(),
|
||||||
'jaminan_info' => $this->getJaminanInfo($permohonanList)
|
'jaminan_info' => $this->getJaminanInfo($permohonanList->get()),
|
||||||
|
'jenisPenilaian' => $permohonanList->pluck('jenis_penilaian_id')->first()
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$permohonanList= $permohonanList->get();
|
||||||
|
|
||||||
// Generate PDF dari template
|
// Generate PDF dari template
|
||||||
$pdf = Pdf::loadView('lpj::memo.pdf-template', compact('memoData', 'permohonanList', 'totalBiayaPJ'))
|
$pdf = Pdf::loadView('lpj::memo.pdf-template', compact('memoData', 'permohonanList', 'totalBiayaPJ'))
|
||||||
->setPaper('a4', 'portrait')
|
->setPaper('a4', 'portrait')
|
||||||
|
|||||||
@@ -93,9 +93,10 @@
|
|||||||
@foreach ($permohonanList as $permohonan)
|
@foreach ($permohonanList as $permohonan)
|
||||||
<tr>
|
<tr>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<input type="checkbox" name="permohonan_ids[]"
|
<input type="checkbox" class="checkbox checkbox-sm permohonan-checkbox"
|
||||||
value="{{ $permohonan->id }}"
|
checked disabled>
|
||||||
class="checkbox checkbox-sm permohonan-checkbox" checked disabled>
|
<input type="hidden" name="permohonan_ids[]"
|
||||||
|
value="{{ $permohonan->id }}">
|
||||||
</td>
|
</td>
|
||||||
<td class="font-medium">{{ $permohonan->nomor_registrasi }}</td>
|
<td class="font-medium">{{ $permohonan->nomor_registrasi }}</td>
|
||||||
<td>{{ $permohonan->debiture->name ?? '-' }}</td>
|
<td>{{ $permohonan->debiture->name ?? '-' }}</td>
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.memo-info .label {
|
.memo-info .label {
|
||||||
width: 80px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.memo-info .colon {
|
.memo-info .colon {
|
||||||
@@ -247,7 +247,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="label">Jaminan</td>
|
<td class="label">Jaminan</td>
|
||||||
<td class="colon">:</td>
|
<td class="colon">:</td>
|
||||||
<td>{{ $memoData['jaminan_info'] }}</td>
|
<td>Tanah & Bangunan</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label">Total Biaya PJ</td>
|
<td class="label">Total Biaya PJ</td>
|
||||||
@@ -272,13 +272,25 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="label">Jenis Penilaian</td>
|
<td class="label">Jenis Penilaian</td>
|
||||||
<td class="colon">:</td>
|
<td class="colon">:</td>
|
||||||
<td><strong>KJPP</strong></td>
|
<td><strong>
|
||||||
|
@if ($memoData['jenisPenilaian'] == 2)
|
||||||
|
KJPP
|
||||||
|
@else
|
||||||
|
Internal
|
||||||
|
@endif
|
||||||
|
</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p style="margin-bottom: 16px;">Kami menginstruksikan kepada Sentra Operasi untuk menyelesaikan Rekening Escrow
|
<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
|
/ <strong>KSL Penilai Jaminan</strong> atas nama debitur tersebut diatas ke
|
||||||
(terlampir)</strong>.</p>
|
|
||||||
|
@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
|
<p style="margin-bottom: 16px;">Demikian kami sampaikan, atas perhatian dan kerjasamanya kami ucapkan terima
|
||||||
kasih.</p>
|
kasih.</p>
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
|
|
||||||
<table style="width: 100%; border-collapse: collapse; margin-bottom: 16px;">
|
<table style="width: 100%; border-collapse: collapse; margin-bottom: 16px;">
|
||||||
<tr>
|
<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="width: 10px; padding: 2px 0; vertical-align: top;">:</td>
|
||||||
<td style="padding: 2px 0; vertical-align: top;">Terlampir ({{ $memoData['debitur_count'] }}
|
<td style="padding: 2px 0; vertical-align: top;">Terlampir ({{ $memoData['debitur_count'] }}
|
||||||
Debitur)</td>
|
Debitur)</td>
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="padding: 2px 0; vertical-align: top;">Jaminan</td>
|
<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;">:</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="padding: 2px 0; vertical-align: top;">Total Biaya PJ</td>
|
<td style="padding: 2px 0; vertical-align: top;">Total Biaya PJ</td>
|
||||||
@@ -126,14 +126,27 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="padding: 2px 0; vertical-align: top;">Jenis Penilaian</td>
|
<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;">:</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>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p style="margin-bottom: 16px; text-align: justify;">
|
<p style="margin-bottom: 16px; text-align: justify;">
|
||||||
Kami menginstruksikan kepada Sentra Operasi untuk menyelesaikan Rekening Escrow /
|
Kami menginstruksikan kepada Sentra Operasi untuk menyelesaikan Rekening Escrow /
|
||||||
<strong>KSL Penilai Jaminan</strong> atas nama debitur tersebut diatas ke <strong>KJPP
|
<strong>KSL Penilai Jaminan</strong> atas nama debitur tersebut diatas ke
|
||||||
(terlampir)</strong>.
|
|
||||||
|
@if ($memoData['jenisPenilaian'] == 2)
|
||||||
|
<strong>KJPP (terlampir)</strong>.
|
||||||
|
@else
|
||||||
|
<strong>PDPT-Lainnya Penilaian Jaminan KPNO (IDR 57557)</strong>.
|
||||||
|
@endif
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p style="margin-bottom: 16px; text-align: justify;">Demikian kami sampaikan, atas perhatian dan
|
<p style="margin-bottom: 16px; text-align: justify;">Demikian kami sampaikan, atas perhatian dan
|
||||||
|
|||||||
Reference in New Issue
Block a user