perbaikan pembanding kendaraan, alat berat, pesawat, kapal, print out dan ukuran foto pada objek jaminan

This commit is contained in:
majid
2025-01-08 13:53:18 +07:00
parent 92ac480c9b
commit 029260bcef
12 changed files with 434 additions and 396 deletions

View File

@@ -268,7 +268,7 @@ class PenilaiController extends Controller
);
$resume = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
$lpjData = null;
$rap = null;
$forminspeksi= null;
@@ -729,7 +729,8 @@ class PenilaiController extends Controller
if ($lpj) {
$lpjData = json_decode($lpj->lpj, true);
$memo = json_decode($lpj->memoe, true);
$memo = json_decode($lpj->memo, true);
$resumeData = json_decode($lpj->resume, true);
}
$inputAddress = $forminspeksi['asset']['alamat']['sesuai'] ?? $forminspeksi['asset']['alamat']['tidak sesuai'];
@@ -757,7 +758,9 @@ class PenilaiController extends Controller
'statusLpj',
'alamat',
'dataPembanding',
'nomorLaporan'
'nomorLaporan',
'memo',
'resumeData'
));
$pdf->setPaper('A4', 'portrait');
@@ -776,9 +779,11 @@ class PenilaiController extends Controller
'alamat',
'dataPembanding',
'nomorLaporan',
'memo'
'memo',
'resumeData'
));
// return $pdf;
$pdf->setPaper('A4', 'portrait');
return $pdf->download('Laporan_'. $tipeLaporan . '_' . $permohonan->nomor_registrasi . '_' .$permohonan->debiture->name .'_data.pdf');
}
@@ -864,24 +869,24 @@ class PenilaiController extends Controller
$permohonanId = $request->query('permohonanId');
$documentId = $request->query('documentId');
$inspeksiId = $request->query('inspeksiId');
// Ambil data berdasarkan ID
$statusLpj = Penilai::where('permohonan_id', $permohonanId)
->where('dokument_id', $documentId)
->where('inspeksi_id', $inspeksiId)
->first();
// Jika data tidak ditemukan, kembalikan status null
if (!$statusLpj) {
return response()->json(['status' => null]);
return response()->json(['status' => null]);
}
// Tentukan tipe berdasarkan kondisi
$type = $statusLpj->type_penilai ?? null;
// Kembalikan respons dengan tipe yang sesuai
return response()->json(['status' => $type]);
}
}

View File

@@ -649,15 +649,22 @@ class PenilaianController extends Controller
if ($lpj) {
$lpjData = json_decode($lpj->lpj, true);
$resumeData = json_decode($lpj->resume, true);
$memo = json_decode($lpj->memo, true);
$rap = json_decode($lpj->rap, true);
}
if (empty($lpj->type_penilai)) {
return redirect()->back()->with('error', 'Masih diproses');
}
$viewLaporan = $this->getViewLaporan($lpj->type_penilai);
if (empty($viewLaporan)) {
return redirect()->back()->with('error', 'Laporan belum dibuat');
}
return view('lpj::'. $viewLaporan, compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces'));
return view('lpj::'. $viewLaporan, compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces','resumeData', 'rap','memo'));
}
private function getViewLaporan($tipe)

View File

@@ -909,8 +909,8 @@ class SurveyorController extends Controller
$jenisJaminan = $inspeksi->dokument->jenisJaminan->name ?? '';
$isTanahBangunan = !in_array(
strtoupper($jenisJaminan->name ?? ''),
['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT']
strtoupper($jenisJaminan ?? ''),
['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN']
);
$isInvalid =
@@ -968,7 +968,9 @@ class SurveyorController extends Controller
->route('surveyor.index')
->with('success', 'Jadwal berhasil dibuat.');
} catch (\Exception $e) {
return response()->json(['buttonDisable' => $e->getMessage()]);
return redirect()
->route('surveyor.index')
->with('error', 'Tanggal dan catatan tidak boleh kosong');
}
}
@@ -1052,6 +1054,19 @@ class SurveyorController extends Controller
private function formatSinglePembanding($request, $index)
{
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
if (isset($request->action) &&
in_array(strtoupper($request->action), array_map('strtoupper', $tanahBangunanTypes))) {
$fields = [
'address', 'village_code', 'district_code', 'city_code', 'province_code',
'nama', 'type','warna','lokasi', 'total', 'diskon', 'harga_diskon',
'sumber_data', 'harga', 'tahun','transmisi','telepon',
'kordinat_lat', 'kordinat_lng', 'tahun_pembuatan','merek_buatan','kapasitas','power','kondisi'
];
}else{
$fields = [
'address', 'village_code', 'district_code', 'city_code', 'province_code',
'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan',
@@ -1059,6 +1074,7 @@ class SurveyorController extends Controller
'peruntukan', 'penawaran', 'telepon','hak_properti',
'kordinat_lat', 'kordinat_lng', 'jenis_aset','foto_objek'
];
}
$pembanding = [];
foreach ($fields as $field) {
@@ -1252,6 +1268,104 @@ class SurveyorController extends Controller
return $objekPenilaian;
}
private function formatObjekPenilaiankendaraan($request)
{
$fields = [
'address', 'village_code', 'district_code', 'city_code', 'province_code',
'nama', 'type','warna','lokasi', 'total', 'diskon', 'harga_diskon',
'sumber_data', 'harga', 'tahun','transmisi','telepon',
'kordinat_lat', 'kordinat_lng', 'tahun_pembuatan','merek_buatan','kapasitas','power','kondisi'
];
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('dokument_id', $request->input('dokument_id'))
->first();
if ($inspeksi) {
$needsSave = false;
// Handle foto_form
$fotoForm = json_decode($inspeksi->foto_form, true) ?: [];
if (!isset($fotoForm['object_jaminan'])) {
$fotoForm['object_jaminan'] = [['foto_objek' => null]];
$needsSave = true;
}
// Handle data_form
$dataForm = json_decode($inspeksi->data_form, true) ?: [];
// Update data dengan mempertahankan struktur sesuai/tidak sesuai
foreach ($fields as $field) {
if ($request->filled($field)) {
$newValue = $request->input($field);
// Fields untuk alamat dalam asset
if (in_array($field, ['address', 'village_code', 'district_code', 'city_code', 'province_code'])) {
if (!isset($dataForm['alamat'])) {
$dataForm['alamat'] = [];
}
$alamatStatus = $dataForm['alamat'] == 'sesuai' ? 'sesuai' : 'tidak sesuai';
if (!isset($dataForm['alamat'][$alamatStatus])) {
$dataForm['alamat'][$alamatStatus] = [];
}
$dataForm['alamat'][$alamatStatus][$field] = $newValue;
}
else {
if (!isset($dataForm[$field])) {
$dataForm[$field] = [];
}
$dataForm[$field] = $newValue;
}
$needsSave = true;
}
}
if ($needsSave) {
$inspeksi->foto_form = json_encode($fotoForm);
$inspeksi->data_form = json_encode($dataForm);
$inspeksi->save();
}
$existingFoto = $fotoForm['object_jaminan'][0]['foto_objek'] ?? null;
// Gabungkan data dari tanah, bangunan, dan asset
$objekPenilaian = array_merge(
['foto_objek' => $existingFoto],
array_reduce($fields, function ($carry, $field) use ($request, $dataForm) {
if (isset($dataForm[$field])) {
if (is_array($dataForm[$field])) {
if (isset($dataForm[$field]['sesuai'])) {
$carry[$field] = $dataForm[$field]['sesuai'];
} elseif (isset($dataForm[$field]['tidak sesuai'])) {
$carry[$field] = $dataForm[$field]['tidak sesuai'];
}
} else {
$carry[$field] = $dataForm[$field];
}
} else {
$carry[$field] = $request->input($field);
}
return $carry;
}, [])
);
} else {
// Inisialisasi data baru
$objekPenilaian = array_reduce($fields, function ($carry, $field) use ($request) {
$carry[$field] = $request->input($field);
return $carry;
}, ['foto_objek' => null]);
}
return $objekPenilaian;
}
private function saveInspeksi($formattedData)
@@ -1283,7 +1397,15 @@ class SurveyorController extends Controller
'foto_objek_pembanding.*' => 'nullable|image|max:'.$maxSize,
]);
$objekPenilaian = $this->formatObjekPenilaian($request);
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
if (isset($request->action) &&
in_array(strtoupper($request->action), array_map('strtoupper', $tanahBangunanTypes))) {
$objekPenilaian = $this->formatObjekPenilaiankendaraan($request);
}else{
$objekPenilaian = $this->formatObjekPenilaian($request);
}
if ($request->hasFile('foto_objek')) {
$newFoto = $this->handleupdateOrDeleteFile(
$request->file('foto_objek'),
@@ -1583,16 +1705,21 @@ class SurveyorController extends Controller
public function getCodeAlamat($code, $inspectionData)
{
$cekAlamat = isset(
$inspectionData['asset']['alamat']['sesuai'],
)
? 'sesuai'
: 'tidak sesuai';
$selectedProvince =
$inspectionData['asset']['alamat'][$cekAlamat][
$code
] ?? null;
return $selectedProvince;
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
if (isset($inspectionData['action']) &&
in_array(strtoupper($inspectionData['action']), array_map('strtoupper', $tanahBangunanTypes))) {
return $selectedProvince = $inspectionData['alamat']['sesuai'][$code] ?? null;
}
if (isset($inspectionData['asset'])) {
$cekAlamat = isset($inspectionData['asset']['alamat']['sesuai']) ? 'sesuai' : 'tidak sesuai';
$selectedProvince = $inspectionData['asset']['alamat'][$cekAlamat][$code] ?? null;
return $selectedProvince;
}
return null;
}

View File

@@ -264,196 +264,7 @@
</div>
</div>
<div class="card">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Peta lokasi
</h3>
</div>
<div class="card-body grid gap-5">
<div class="border-t mt-5">
<div class="flex card-header border border-agi-100 bg-agi-50 justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Rute Menuju Lokasi
</h3>
</div>
<div class="">
@if (isset($formPeta))
@php
$foto = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat'];
@endphp
@foreach ($foto as $item)
@if (isset($formPeta[$item]) && $formPeta[$item])
<div class="flex items-center justify-between mt-5 border-b">
<div class="grid gap-5">
<h2 class="text-gray-600 font-semibold text-xl">
{{ ucwords(str_replace('_', ' ', $item)) }}
</h2>
<div class="flex items-center mt-5">
<img src="{{ Storage::url($formPeta[$item]) }}"
alt="{{ $item }}">
</div>
</div>
</div>
@endif
@endforeach
@endif
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Foto jaminan
</h3>
</div>
<div class="card-body grid gap-5">
<div class="border-t mt-5">
<div class="flex card-header border border-agi-100 bg-agi-50 justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Rute Menuju Lokasi
</h3>
</div>
<div class="">
@if (isset($formFoto) && isset($formFoto['rute_menuju_lokasi']) && is_array($formFoto['rute_menuju_lokasi']))
@foreach ($formFoto['rute_menuju_lokasi']['rute_menuju_lokasi'][0] as $item)
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class="text-gray-600 font-semibold text-xl">
{{ ($item['name'] ?? "") . ' ' . $loop->index + 1 }}
</h2>
<div class="flex items-center">
@if(isset($item['path']))
<img src="{{ Storage::url($item['path']) }}" alt="">
@endif
</div>
</div>
</div>
@endforeach
@else
<p>No route information available.</p>
@endif
</div>
</div>
<div class="border-t mt-5">
<div class="flex card-header border border-agi-100 bg-agi-50 justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Object Jaminan
</h3>
</div>
<div class="">
@if (isset($formFoto['object_jaminan']))
@foreach ($formFoto['object_jaminan'] as $item)
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class=" font-semibold text-xl">
{{ $item['name_objek'] ?? "" }}
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($item['foto_objek']) }}" alt="">
</div>
</div>
</div>
@endforeach
@endif
</div>
</div>
@if (isset($formFoto['foto_basement']))
<div class="border-t mt-5">
<div class="flex card-header border border-agi-100 bg-agi-50 justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Basement
</h3>
</div>
<div class="">
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class=" font-semibold text-xl">
Basemnt
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($formFoto['foto_basement']) }}" alt="">
</div>
</div>
</div>
</div>
</div>
@endif
@if (isset($formFoto['foto_gerbang']))
<div class="border-t mt-5">
<div class="flex card-header border border-agi-100 bg-agi-50 justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Gerbang
</h3>
</div>
<div class="">
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class=" font-semibold text-xl">
Gerbang
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($formFoto['foto_gerbang']) }}" alt="">
</div>
</div>
</div>
</div>
</div>
@endif
@if (isset($formFoto['pendamping']))
<div class="border-t mt-5">
<div class="flex card-header border border-agi-100 bg-agi-50 justify-center" id="basic_settings">
<h3 class="card-title uppercase">
Pendamping
</h3>
</div>
<div class="">
<div class="flex items-center justify-between mt-5">
<div class="grid gap-5">
<h2 class=" font-semibold text-xl">
Pendamping
</h2>
<div class="flex items-center">
<img src="{{ Storage::url($formFoto['pendamping']) }}" alt="">
</div>
</div>
</div>
</div>
</div>
@endif
</div>
</div>
@include('lpj::penilai.components.foto-lampiran')
<div class="flex justify-start gap-5">
<a class="btn btn-success" onclick="saveMemo()">

View File

@@ -10,16 +10,17 @@
<style>
* {
font-size: 6px;
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
}
h2 {
font-size: 10px
font-size: 12px
}
/** Define the header rules **/
@page {
margin-top: 120px;
margin-top: 100px;
/* Ruang untuk header */
margin-bottom: 50px;
/* Ruang untuk footer */
@@ -127,29 +128,29 @@
</table>
<table style="width: 100%">
<tr>
<td style="width: 10%">Kepada</td>
<td>:</td>
<td>{{ $memo['kepada'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;">Kepada</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $memo['kepada'] ?? '' }}</td>
</tr>
<tr>
<td>Dari</td>
<td>:</td>
<td>{{ $memo['dari'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;">Dari</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $memo['dari'] ?? '' }}</td>
</tr>
<tr>
<td>No</td>
<td>:</td>
<td>{{ $memo['nomor_memo'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;">No</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $memo['nomor_memo'] ?? '' }}</td>
</tr>
<tr>
<td>Tanggal</td>
<td>:</td>
<td></td>
<td style="width: 20%; padding: 2px;">Tanggal</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ formatTanggalIndonesia($memo['tanggal']) }}</td>
</tr>
<tr>
<td>Perihal</td>
<td>:</td>
<td>{{ $memo['perihal'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;">Perihal</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $memo['perihal'] ?? '' }}</td>
</tr>
</table>
@@ -172,18 +173,17 @@
<table style="width: 100%">
<tr>
<td style="width: 10%">Nama Calon Debiture</td>
<td>:</td>
<td >{{ $permohonan->debiture->name ?? '' }}</td>
<td style="width: 20%; padding: 2px;">Nama Calon Debiture</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $permohonan->debiture->name ?? '' }}</td>
</tr>
@if (@isset($dokumen))
@foreach ($dokumen->detail as $details)
<tr>
<td>{{ $details->jenisLegalitasJaminan->name ?? '' }}
</td>
<td>:</td>
<td>
<td style="width: 20%; padding: 2px;">{{ $details->jenisLegalitasJaminan->name ?? '' }}</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">
@if (isset($detail->dokumen_jaminan))
@php
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor))
@@ -209,19 +209,19 @@
<tr>
<td>Atas Nama</td>
<td>:</td>
<td>{{ $permohonan->debiture->name ?? '' }}</td>
<td style="width: 20%; padding: 2px;">Atas Nama</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $permohonan->debiture->name ?? '' }}</td>
</tr>
<tr>
<td>Tanggal Terbit Sertifikat</td>
<td>:</td>
<td></td>
<td style="width: 20%; padding: 2px;" >Tanggal Terbit Sertifikat</td>
<td style="width: 1%; padding: 2px;" >:</td>
<td style="width: 79%; padding: 2px;"></td>
</tr>
<tr>
<td>Surat Ukur No</td>
<td>:</td>
<td></td>
<td style="width: 20%; padding: 2px;" >Surat Ukur No</td>
<td style="width: 1%; padding: 2px;" >:</td>
<td style="width: 79%; padding: 2px;"></td>
</tr>
<tr>
@php
@@ -229,9 +229,9 @@
$luas = $forminspeksi['tanah']['luas_tanah'][$cekLuas] ?? null;
@endphp
<td >Luas Tanah</td>
<td >:</td>
<td >{{ $luas ?? '' }}</td>
<td style="width: 20%; padding: 2px;">Luas Tanah</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $luas ?? '' }}</td>
</tr>
</table>
@@ -244,34 +244,34 @@
</table>
<table style="width: 100%">
<tr>
<td width="10%">Terletak di</td>
<td>:</td>
<td> {{ $alamat['address'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;">Terletak di</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;"> {{ $memo['lokasi']['address'] ?? '' }}</td>
</tr>
<tr>
<td>Kelurahan</td>
<td>:</td>
<td>{{ $alamat['village_code'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;" >Kelurahan</td>
<td style="width: 1%; padding: 2px;" >:</td>
<td style="width: 79%; padding: 2px;" >{{ $alamat['village_code'] ?? '' }}</td>
</tr>
<tr>
<td>Kecamatan</td>
<td>:</td>
<td>{{ $alamat['district_code'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;" >Kecamatan</td>
<td style="width: 1%; padding: 2px;" >:</td>
<td style="width: 79%; padding: 2px;" >{{ $alamat['district_code'] ?? '' }}</td>
</tr>
<tr>
<td>Kota</td>
<td>:</td>
<td> {{ $alamat['city_code'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;" >Kota</td>
<td style="width: 1%; padding: 2px;" >:</td>
<td style="width: 79%; padding: 2px;" > {{ $alamat['city_code'] ?? '' }}</td>
</tr>
<tr>
<td>Propinsi</td>
<td>:</td>
<td>{{ $alamat['province_code'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;" >Propinsi</td>
<td style="width: 1%; padding: 2px;" >:</td>
<td style="width: 79%; padding: 2px;" >{{ $alamat['province_code'] ?? '' }}</td>
</tr>
<tr>
<td>Titik Kordinat</td>
<td>:</td>
<td>{{ $alamat['province_code'] ?? '' }}</td>
<td style="width: 20%; padding: 2px;">Titik Kordinat</td>
<td style="width: 1%; padding: 2px;" >:</td>
<td style="width: 79%; padding: 2px;">{{ $alamat['province_code'] ?? '' }}</td>
</tr>
</table>
@@ -282,6 +282,15 @@
<h2 style=" text-transform: uppercase;">HASIL INSPEKSI</h2>
</td>
</tr>
<tr>
@isset($memo['hasil_survey'])
@foreach ($memo['hasil_survey'] as $key => $item)
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
</tr>
@endforeach
@endisset
</tr>
</table>
<table>
<tr>
@@ -289,6 +298,15 @@
<h2 style=" text-transform: uppercase;">KESIMPULAN DAN SARAN</h2>
</td>
</tr>
<tr>
@isset($memo['kesimpulan_saran'])
@foreach ($memo['kesimpulan_saran'] as $key => $item)
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
</tr>
@endforeach
@endisset
</tr>
</table>
<table style="width: 100%">
@@ -296,7 +314,7 @@
<td>Demikian Kami Sampaikan, aatas perhatiannya kami ucapkan terimakasih</td>
</tr>
<tr>
<table style="width: 100%; text-align: center;" border="1">
<table style="width: 100%; text-align: center;" >
<tr>
<td style="height: 50px"></td>
@@ -339,6 +357,11 @@
</footer>
<script>
const data = @json($memo);
console.log(data);
</script>
</body>
</html>

View File

@@ -231,7 +231,7 @@
<tr>
<td style="padding: 2px;">Waktu Penyelesaian</td>
<td style="padding: 2px;">:</td>
<td style="padding: 2px;">1</td>
<td style="padding: 2px;">-</td>
</tr>
</table>
</td>

View File

@@ -9,19 +9,20 @@
<title>Laporan Penilai Jaminan</title>
<style>
* {
font-size: 6px;
* {
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
}
h2 {
font-size: 10px
font-size: 14px
}
/** Define the header rules **/
@page {
margin-top: 120px;
margin-top: 100px;
/* Ruang untuk header */
margin-bottom: 50px;
margin-bottom: 30px;
/* Ruang untuk footer */
}
@@ -31,7 +32,7 @@
/* Posisi header di luar konten */
left: 0;
right: 0;
height: 90px;
height: 50px;
text-align: center;
padding-bottom: 10px;
}
@@ -45,7 +46,7 @@
}
.header-title {
margin-top: 20px;
margin-top: 10px;
}
#footer {
@@ -159,9 +160,9 @@
<td>{{ $alamat['village_code'] ?? '' }}, {{ $alamat['district_code'] ?? '' }}, {{ $alamat['city_code'] ?? '' }}, {{ $alamat['province_code'] ?? '' }}</td>
</tr>
<tr>
<td>Dokumen</td>
<td>:</td>
<td>
<td style="vertical-align: top; padding:2px;">Dokumen</td>
<td style="vertical-align: top; padding:2px;">:</td>
<td style="vertical-align: top; padding:2px;">
<table>
@if (@isset($dokumen))
@foreach ($dokumen->detail as $details)
@@ -218,8 +219,15 @@
<td>
<h2 style=" text-transform: uppercase;">Faktor Positif</h2>
</td>
<td>:</td>
<td></td>
</tr>
<tr>
@isset($resumeData['fakta']['fakta_positif'])
@foreach ($resumeData['fakta']['fakta_positif'] as $key => $item)
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
</tr>
@endforeach
@endisset
</tr>
</table>
@@ -228,8 +236,15 @@
<td>
<h2 style=" text-transform: uppercase;">Faktor negatif</h2>
</td>
<td>:</td>
<td></td>
</tr>
<tr>
@isset($resumeData['fakta']['fakta_negatif'])
@foreach ($resumeData['fakta']['fakta_negatif'] as $key => $item)
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
</tr>
@endforeach
@endisset
</tr>
</table>
<table style="width: 100%">
@@ -254,15 +269,18 @@
</td>
</tr>
<tr>
@foreach ($resumeData['fisik'] as $item)
<td>
{{ $item['sertifikat'] ?? '' }}
</td>
<td>
{{ $item['nilai'] ?? '' }}
</td>
<td>
-
</td>
@endforeach
</td>
<td>
Nilai Pasar Wajar
</td>
<td>
Nilai Likudasi
</td>
</tr>
</table>
<table>
@@ -271,6 +289,9 @@
<h2 style=" text-transform: uppercase;">lain lain</h2>
</td>
</tr>
<tr>
<td>{{ $resumeData['keterangan'] ?? '' }}</td>
</tr>
</table>
<table style="width: 100%">
@@ -313,6 +334,11 @@
</footer>
<script>
const data = @json($resumeData);
console.log(data);
</script>
</body>
</html>

View File

@@ -556,6 +556,7 @@
function checkLaporan(permohonanId, documentId, inspeksiId, jaminanId) {
// showLoadingSwal('Tunggu...');
fetch(
`{{ url('/penilai/check-laporan') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}`
)
@@ -563,6 +564,7 @@
.then(data => {
if (data.status) {
// Jika laporan ada, arahkan ke halaman cetak
window.location.href =
`{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}&statusLpj=0&type=${data.status}`;
} else {

View File

@@ -10,28 +10,46 @@
<div class="card-grid min-w-full" data-datatable="false" data-datatable-page-size="10"
data-datatable-state-save="false" id="data-table" data-api-url="">
@php
$processedCategories = [];
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
$dokumentName = null;
@endphp
<form id="dataPembandingForm" method="POST" enctype="multipart/form-data">
@csrf
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="type" value="tanah">
<input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<div class="card">
@include('lpj::surveyor.components.pembanding-kendaraan')
<div class="card-footer">
<div class="flex justify-end gap-2">
<button type="button" onclick="submitData()" class="btn btn-primary">
<i class="ki-duotone ki-save-2 fs-2"></i>
Simpan
</button>
@foreach ($permohonan->debiture->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$dokumentName = $dokumen->jenisJaminan->name;
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@endphp
<input type="hidden" name="action"
value="{{ is_array($formKategori) ? implode(',', $formKategori) : $formKategori }}">
@if (!in_array(strtoupper($dokumentName), $tanahBangunanTypes))
@include('lpj::surveyor.components.pembanding-tanah-bangunan-unit')
@else
@include('lpj::surveyor.components.pembanding-kendaraan')
@endif
@endif
@endforeach
<div class="card-footer">
<div class="flex justify-end gap-2">
<button type="button" onclick="submitData()" class="btn btn-primary">
<i class="ki-duotone ki-save-2 fs-2"></i>
Simpan
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('scripts')
@@ -77,12 +95,12 @@
// Ambil nilai numerik dari input
const harga = parseFloat(hargaInput.value.replace(/[^\d]/g, '') || '0');
let diskonInput_value = diskonInput.value.replace(',', '.');
let diskon = parseFloat(diskonInput_value.replace(/[^\d.]/g, '') || '0');
let diskon = parseFloat(diskonInput_value.replace(/[^\d.]/g, '') || '0');
// Batasi diskon maksimal 100%
diskon = Math.min(diskon, 100);
const total = harga;
const hargaSetelahDiskon = harga - (harga * (diskon / 100));
@@ -118,32 +136,67 @@
}
}
const inputs = {
'jenis_aset_pembanding[]': data.jenis_aset,
'luas_tanah_pembanding[]': data.luas_tanah,
'luas_bangunan_pembanding[]': data.luas_bangunan,
'status_nara_sumber_pembanding[]': data.status_nara_sumber,
'nama_nara_sumber_pembanding[]': data.nama_nara_sumber,
'kordinat_lat_pembanding[]': data.kordinat_lat,
'kordinat_lng_pembanding[]': data.kordinat_lng,
'address_pembanding[]': data.address,
'village_code_pembanding[]': data.village_code,
'district_code_pembanding[]': data.district_code,
'city_code_pembanding[]': data.city_code,
'province_code_pembanding[]': data.province_code,
'harga_pembanding[]': data.harga,
'harga_diskon_pembanding[]': data.harga_diskon,
'total_pembanding[]': data.total,
'diskon_pembanding[]': data.diskon,
'hak_properti_pembanding[]': data.hak_properti,
'telepon_pembanding[]': data.telepon,
'penawaran_pembanding[]': data.penawaran,
};
const arrayData = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
const dk = @json($dokumentName);
// Cek apakah dk memiliki data dan arrayData tidak kosong
const useFirstInputs = arrayData.length > 0 && dk.length > 0;
const inputs = useFirstInputs ?
{
'nama_pembanding[]': data.nama,
'type_pembanding[]': data.type,
'warna_pembanding[]': data.warna,
'lokasi_pembanding[]': data.lokasi,
'sumber_data_pembanding[]': data.sumber_data,
'tahun_pembanding[]': data.tahun,
'transmisi_pembanding[]': data.transmisi,
'tahun_pembuatan_pembanding[]': data.tahun_pembuatan,
'merek_buatan_pembanding[]': data.merek_buatan,
'kapasitas_pembanding[]': data.kapasitas,
'power_pembanding[]': data.power,
'kondisi_pembanding[]': data.kondisi,
'kordinat_lat_pembanding[]': data.kordinat_lat,
'kordinat_lng_pembanding[]': data.kordinat_lng,
'address_pembanding[]': data.address,
'village_code_pembanding[]': data.village_code,
'district_code_pembanding[]': data.district_code,
'city_code_pembanding[]': data.city_code,
'province_code_pembanding[]': data.province_code,
'harga_pembanding[]': data.harga,
'harga_diskon_pembanding[]': data.harga_diskon,
'total_pembanding[]': data.total,
'diskon_pembanding[]': data.diskon,
'telepon_pembanding[]': data.telepon,
'penawaran_pembanding[]': data.penawaran,
} :
{
'jenis_aset_pembanding[]': data.jenis_aset,
'luas_tanah_pembanding[]': data.luas_tanah,
'luas_bangunan_pembanding[]': data.luas_bangunan,
'status_nara_sumber_pembanding[]': data.status_nara_sumber,
'nama_nara_sumber_pembanding[]': data.nama_nara_sumber,
'kordinat_lat_pembanding[]': data.kordinat_lat,
'kordinat_lng_pembanding[]': data.kordinat_lng,
'address_pembanding[]': data.address,
'village_code_pembanding[]': data.village_code,
'district_code_pembanding[]': data.district_code,
'city_code_pembanding[]': data.city_code,
'province_code_pembanding[]': data.province_code,
'harga_pembanding[]': data.harga,
'harga_diskon_pembanding[]': data.harga_diskon,
'total_pembanding[]': data.total,
'diskon_pembanding[]': data.diskon,
'hak_properti_pembanding[]': data.hak_properti,
'telepon_pembanding[]': data.telepon,
'penawaran_pembanding[]': data.penawaran,
};
Object.entries(inputs).forEach(([name, value]) => {
setArrayInputValue(name, value, index);
});
// Handle foto objek
if (data.foto_objek) {
const imageId = `uploadedImage${index + 2}`;

View File

@@ -293,7 +293,7 @@
<img id="foto_object_jaminan_preview_{{ $loop->index }}"
src="{{ isset($matchedFoto['foto_objek']) ? asset('storage/' . $matchedFoto['foto_objek']) : '' }}"
alt="{{ $item->name }}" class="mb-2 h-auto"
style="{{ !empty($matchedFoto['foto_objek']) ? 'width: 30rem;' : 'display: none;' }}"
style="{{ !empty($matchedFoto['foto_objek']) ? 'width: 30rem;' : 'display: none; width: 30rem;' }}"
onerror="this.style.display='none';" />
<div class="input-group w-full flex gap-2">

View File

@@ -63,51 +63,51 @@
<tr>
<td class="px-4 py-2">Nama</td>
<td class="px-4 py-2">
<input type="text" name="" class="input">
<input type="text" name="nama" class="input" value="{{ $inspectionData['nama'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="" class="input">
<input type="text" name="nama_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Tipe</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah" class="input" value="">
<input type="text" name="type" class="input" value="{{ $inspectionData['type'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah_pembanding[]" class="input number-format">
<input type="text" name="type_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Warna</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah_bagunan" class="input number-format" value="">
<input type="text" name="warna" class="input " value="{{ $inspectionData['warna'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="luas_bangunan_pembanding[]" class="input number-format">
<input type="text" name="warna_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Lokasi</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah_bagunan" class="input number-format" value="">
<input type="text" name="lokasi" class="input" value="{{ $inspectionData['lokasi'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="luas_bangunan_pembanding[]" class="input number-format">
<input type="text" name="lokasi_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Sumber data</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah_bagunan" class="input number-format" value="">
<input type="text" name="sumber_data" class="input" value="{{ $inspectionData['sumber_data'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="luas_bangunan_pembanding[]" class="input number-format">
<input type="text" name="sumber_data_pembanding[]" class="input">
</td>
</tr>
@@ -115,11 +115,11 @@
<td class="px-4 py-2">Tahun</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah_bagunan" class="input number-format"
value="">
<input type="text" name="tahun" class="input number-format" value="{{ $inspectionData['tahun'] ?? '' }}"
>
</td>
<td class="px-4 py-2">
<input type="text" name="luas_bangunan_pembanding[]" class="input number-format">
<input type="text" name="tahun_pembanding[]" class="input number-format">
</td>
</tr>
@@ -127,11 +127,11 @@
<td class="px-4 py-2">Transmisi</td>
<td class="px-4 py-2">
<input type="text" name="luas_tanah_bagunan" class="input number-format"
value="">
<input type="text" name="transmisi" class="input "
value="{{ $inspectionData['transmisi'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="luas_bangunan_pembanding[]" class="input number-format">
<input type="text" name="transmisi_pembanding[]" class="input ">
</td>
</tr>
@@ -145,22 +145,23 @@
<td class="px-4 py-2">Tahun Pembuatan
</td>
<td class="px-4 py-2">
<input type="text" name="hak_properti" class="input"
value="{{ $inspectionData['asset']['hak_properti'] ?? '' }}">
<input type="text" name="tahun_pembuatan" class="input number-format"
value="{{ $inspectionData['tahun_pembuatan'] ?? '' }}"
>
</td>
<td class="px-4 py-2">
<input type="text" name="hak_properti_pembanding[]" class="input">
<input type="text" name="tahun_pembuatan_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Merek / Buatan
</td>
<td class="px-4 py-2">
<input type="text" name="penawaran" class="input"
value="{{ $inspectionData['asset']['penawaran'] ?? '' }}">
<input type="text" name="merek_buatan" class="input"
value="{{ $inspectionData['merek_buatan'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="penawaran_pembanding[]" class="input">
<input type="text" name="merek_buatan_pembanding[]" class="input">
</td>
</tr>
@@ -169,32 +170,32 @@
<td class="px-4 py-2">Kapasitas / HP
</td>
<td class="px-4 py-2">
<input type="text" name="telepon" class="input"
value="{{ $inspectionData['asset']['telepon'] ?? '' }}">
<input type="text" name="kapasitas" class="input"
value="{{ $inspectionData['kapasitas'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="telepon_pembanding[]" class="input">
<input type="text" name="kapasitas_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Power</td>
<td class="px-4 py-2">
<input type="text" name="status_nara_sumber" class="input"
value="{{ $inspectionData['asset']['status_nara_sumber'] ?? '' }}">
<input type="text" name="power" class="input"
value="{{ $inspectionData['power'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="status_nara_sumber_pembanding[]" class="input">
<input type="text" name="power_pembanding[]" class="input">
</td>
</tr>
<tr>
<td class="px-4 py-2">Kondisi</td>
<td class="px-4 py-2">
<input type="text" name="nama_nara_sumber" class="input"
value="{{ $inspectionData['asset']['nama_nara_sumber'] ?? '' }}">
<input type="text" name="kondisi" class="input"
value="{{ $inspectionData['kondisi'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="nama_nara_sumber_pembanding[]" class="input">
<input type="text" name="kondisi_pembanding[]" class="input">
</td>
</tr>
@@ -208,9 +209,9 @@
<td class="px-4 py-2">
<div class="grid grid-cols-2 gap-2">
<input type="text" name="kordinat_lat" class="input" placeholder="Latitude"
value="{{ $inspectionData['asset']['kordinat_lat'] ?? '' }}">
value="{{ $inspectionData['kordinat_lat'] ?? '' }}">
<input type="text" name="kordinat_lng" class="input" placeholder="Longitude"
value="{{ $inspectionData['asset']['kordinat_lng'] ?? '' }}">
value="{{ $inspectionData['kordinat_lng'] ?? '' }}">
</div>
</td>
<td class="px-4 py-2">
@@ -226,12 +227,9 @@
<td class="px-4 py-2">Alamat</td>
<td class="px-4 py-2">
@php
$statusAlamat = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$address = $inspectionData['asset']['alamat'][$statusAlamat]['address'] ?? null;
$address = $inspectionData['nama_jalan'] ?? null;
@endphp
<textarea name="address" class="input py-2" rows="2">{{ $address }}</textarea>
<textarea name="nama_jalan" class="input py-2" rows="2">{{ $address }}</textarea>
</td>
<td class="px-4 py-2">
<textarea name="address_pembanding[]" class="input py-2" rows="2"></textarea>
@@ -242,20 +240,13 @@
<td class="px-4 py-2">Provinsi</td>
<td class="px-4 py-2">
<select id="province_code" name="province_code" class="input w-full">
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$address = $inspectionData['asset']['alamat'][$statusKey]['province_code'] ?? null;
@endphp
<option value="">Select Province</option>
@foreach ($provinces as $province)
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedProvince =
$inspectionData['asset']['alamat'][$statusKey]['province_code'] ?? null;
$inspectionData['alamat']['sesuai']['province_code'] ?? null;
@endphp
<option value="{{ $province->code }}"
@@ -283,10 +274,8 @@
<select id="city_code" name="city_code" class="select w-full">
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedCity = $inspectionData['asset']['alamat'][$statusKey]['city_code'] ?? null;
$selectedCity = $inspectionData['alamat']['sesuai']['city_code'] ?? null;
@endphp
<option value="">Pilih Kota/Kabupaten</option>
@if (isset($selectedCity))
@@ -313,11 +302,8 @@
<select id="district_code" name="district_code" class="select w-full">
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedDisrict =
$inspectionData['asset']['alamat'][$statusKey]['district_code'] ?? null;
$inspectionData['alamat']['sesuai']['district_code'] ?? null;
@endphp
<option value="">Pilih Kecamatan</option>
@if (isset($selectedDisrict))
@@ -344,11 +330,9 @@
<td class="px-4 py-2">
<select id="village_code" name="village_code" class="select w-full">
@php
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
? 'sesuai'
: 'tidak sesuai';
$selectedDesa =
$inspectionData['asset']['alamat'][$statusKey]['village_code'] ?? null;
$inspectionData['alamat']['sesuai']['village_code'] ?? null;
@endphp
<option value="">Pilih Kecamatan</option>
@if (isset($selectedDesa))
@@ -370,14 +354,14 @@
</tr>
<tr class="bg-gray-100">
<td colspan="3" class="px-4 py-2 font-semibold">Harga Per Meter</td>
<td colspan="3" class="px-4 py-2 font-semibold">Harga</td>
</tr>
<tr>
<td class="px-4 py-2">Harga</td>
<td class="px-4 py-2">
<input type="text" name="harga" class="input currency-format"
value="{{ $inspectionData['asset']['harga'] ?? '' }}">
value="{{ $inspectionData['harga'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="harga_pembanding[]" class="input currency-format">
@@ -388,7 +372,7 @@
<td class="px-4 py-2">
<div class="input">
<input type="text" name="diskon" class=" currency"
value="{{ $inspectionData['asset']['diskon'] ?? '' }}">
value="{{ $inspectionData['diskon'] ?? '' }}">
<span class="btn btn-icon">
<i class="ki-outline ki-percentage"></i>
</span>
@@ -410,7 +394,7 @@
<td class="px-4 py-2">Total</td>
<td class="px-4 py-2">
<input type="text" name="total" class="input currency"
value="{{ $inspectionData['asset']['total'] ?? '' }}">
value="{{ $inspectionData['total'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="total_pembanding[]" class="input currency-format">
@@ -420,7 +404,7 @@
<td class="px-4 py-2">Harga Setelah Diskon</td>
<td class="px-4 py-2">
<input type="text" name="harga_diskon" class="input currency-format" readonly
value="{{ $inspectionData['asset']['harga_diskon'] ?? '' }}">
value="{{ $inspectionData['harga_diskon'] ?? '' }}">
</td>
<td class="px-4 py-2">
<input type="text" name="harga_diskon_pembanding[]" readonly

View File

@@ -252,7 +252,7 @@
render: (item, data) => {
let actionHtml = '';
if (data.penilaian.waktu_penilaian == null && data.penilaian.authorized_status == null) {
if (data.penilaian.waktu_penilaian == null || data.penilaian.waktu_penilaian && data.penilaian.authorized_status == null) {
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-primary" data-modal-toggle="#modal_jadwal" onclick="jadwal(${data.penilaian.id})" title="Buat Jadwal Kunjungan">
<i class="ki-filled ki-calendar-edit"></i>