Files
lpj/resources/views/penilai/components/resume.blade.php
2025-02-18 16:14:52 +07:00

821 lines
45 KiB
PHP

@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection
@section('content')
<style>
.list-decimal {
list-style-type: decimal;
margin: 0;
padding-left: 1.25rem;
line-height: 1.6;
font-family: Arial, sans-serif;
font-size: 16px;
color: #333333;
}
.list-decimal li {
margin-bottom: 0.5rem;
}
</style>
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<form id="formResume" method="POST" class="w-full grid gap-5">
@csrf
<div class="card">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Data Jaminan
</h3>
@php
use Illuminate\Support\Facades\Route;
@endphp
<div class="flex items-center gap-2">
@if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) &&
Route::currentRouteName('otorisator.show'))
<a href="{{ route('otorisator.show', ['id' => $permohonan->id, 'type' => 'Pelaporan']) }}"
class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@elseif (Auth::user()->hasAnyRole(['administrator', 'surveyor']) && Route::currentRouteName('penilai.show'))
<a href="{{ route('penilai.show', $permohonan->id) }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@endif
</div>
</div>
<div class="card-body grid gap-5 grid-cols-2">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nama Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->debiture))
<p class="text-2sm text-gray-700">{{ $permohonan->debiture->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Alamat Object</label>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->documents as $dokumen)
<span class="text-2sm text-gray-700">
{{ formatAlamat($dokumen->pemilik) }}
</span>
@endforeach
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Registrasi</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->nomor_registrasi }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Cab/Direktorat</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->branch))
<p class="text-2sm text-gray-700">{{ $permohonan->branch->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Laporan</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $nomorLaporan ?? '' }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">AO</label>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->user))
<p class="text-2sm text-gray-700">{{ $permohonan->user->name }}</p>
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal Resume</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="tanggal_resume" class="input w-full" placeholder="Masukkan..."
value="{{ $resumeData['tanggal_resume'] ?? '' }}">
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
faktor
</h3>
</div>
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Positif</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($resumeData['fakta']['fakta_positif']))
@foreach ($resumeData['fakta']['fakta_positif'] as $index => $positif)
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old("fakta_positif.$index", $positif) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endforeach
@else
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Faktor Negatif</label>
<div id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($resumeData['fakta']['fakta_negatif']))
@foreach ($resumeData['fakta']['fakta_negatif'] as $index => $negatif)
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old("fakta_negatif.$index", $negatif) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endforeach
@else
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old('fakta_negatif.0', $resumeData['fakta']['fakta_negatif'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-negatif-container', 'fakta_negatif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 min-w-full">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
KESIMPULAN NILAI PASAR WAJAR
</h3>
</div>
<div class="card-body grid gap-5">
<div class="gird gap-5">
<label class="form-label max-w-56">SESUAI FISIK</label>
<div class="flex flex-wrap items-baseline w-full mt-5">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
<th class="text-center">Nilai Likuidasi(%)</th>
<th class="text-center">Total Nilai Likuidasi</th>
</tr>
</thead>
</thead>
<tbody>
@if (!empty($resumeData['fisik']))
@foreach ($resumeData['fisik'] as $item)
<tr>
<td class="text-center">
<input type="text" name="fisik_sertifikat[]"
class="input number-format" value="{{ $item['sertifikat'] }}">
</td>
<td class="text-center">
<input type="text" name="fisik_luas_tanah[]"
class="input number-format" value="{{ $item['luas_tanah'] }}">
</td>
<td class="text-center"> <input type="text"
name="fisik_luas_bangunan[]" value="{{ $item['luas_bangunan'] }}"
class="input number-format"></td>
<td class="text-center">
<input type="text" name="fisik_nilai[]"
class="input currency-format nilai-pasar"
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="likuidasi[]" class="input likuidasi"
value="{{ $item['likuidasi'] ?? 0 }}"
onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="total_nilai_likuidasi[]"
class="input currency-format total-likuidasi"
value="{{ $item['total_likuidasi'] ?? 0 }}" readonly>
</td>
</tr>
@endforeach
@else
<tr>
<td class="text-center">
<input type="text" name="fisik_sertifikat[]"
class="input number-format">
</td>
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$luas_tanah = '';
$luas_bangunan = '';
if ($item->detail) {
foreach ($item->detail as $luas) {
if (
isset($luas->name) &&
$luas->name === 'Sertifikat'
) {
$details = json_decode($luas->details, true);
$luas_tanah = isset($details['luas_tanah'])
? $details['luas_tanah']
: '';
break;
}
if (isset($luas->name) && $luas->name === 'IMB') {
$details = json_decode($luas->details, true);
$luas_bangunan = isset($details['luas_bangunan'])
? $details['luas_bangunan']
: '';
break;
}
}
}
@endphp
@endforeach
@endif
<td class="text-center">
<input type="text" name="fisik_luas_tanah[]"
class="input number-format" value="{{ $luas_tanah }}">
</td>
<td class="text-center"> <input type="text" name="fisik_luas_bangunan[]"
class="input number-format" value="{{ $luas_bangunan }}"></td>
<td class="text-center">
<input type="text" name="fisik_nilai[]"
class="input currency-format nilai-pasar"
onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="likuidasi[]" class="input likuidasi"
onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="total_nilai_likuidasi[]"
class="input currency-format total-likuidasi" readonly>
</td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
<div class="gird gap-5">
<label class="form-label max-w-56">SESUAI IMB</label>
<div class="flex flex-wrap items-baseline w-full">
<table
class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
<th class="text-center">Nilai Likuidasi (%)</th>
<th class="text-center">Total Nilai Likuidasi</th>
</tr>
</thead>
</thead>
<tbody>
@if (!empty($resumeData['fisik']))
@foreach ($resumeData['fisik'] as $item)
<tr>
<td class="text-center">
<input type="text" name="sesuai_sertifikat[]"
class="input number-format" value="{{ $item['sertifikat'] }}">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_tanah[]"
class="input number-format" value="{{ $item['luas_tanah'] }}">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_bangunan[]"
class="input number-format" value="{{ $item['luas_bangunan'] }}">
</td>
<td class="text-center">
<input type="text" name="sesuai_nilai[]"
class="input currency-format nilai-pasar"
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="sesuai_likuidasi[]"
class="input likuidasi" value="{{ $item['likuidasi'] ?? '' }}"
onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="sesuai_total_likuidasi[]"
class="input currency-format total-likuidasi"
value="{{ $item['total_likuidasi'] ?? 0 }}">
</td>
</tr>
@endforeach
@else
<tr>
<td class="text-center">
<input type="text" name="sesuai_sertifikat[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_tanah[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_luas_bangunan[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="sesuai_nilai[]" class="input currency-format"
onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="sesuai_likuidasi[]" class="input likuidasi"
value="{{ $item['likuidasi'] ?? 0 }}" onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="sesuai_total_likuidasi[]"
class="input currency-format total-likudasi"
value="{{ $item['total_likuidasi'] ?? 0 }}">
</td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
@if (!empty($resumeData['tambahan']))
@foreach ($resumeData['tambahan'] as $counter => $item)
<div id="kesimpulan" class="gird gap-5">
<div class="flex flex-wrap items-baseline w-full">
<table
class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<input class="input" name="tambahan_nama_kesimpulan[]"
placeholder="Masukkan Nama Kesimpulan" type="text"
value="{{ $item['tambahan_nama_kesimpulan'] ?? '' }}">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
<th class="text-center">Nilai Likuidasi (%)</th>
<th class="text-center">Total Nilai Likuidasi</th>
</tr>
</thead>
</thead>
<tbody>
<tr>
<td class="text-center">
<input type="text" name="tambahan_sertifikat[]"
class="input number-format" value="{{ $item['sertifikat'] }}">
</td>
<td class="text-center">
<input type="text" name="tambahan_luas_tanah[]"
class="input number-format" value="{{ $item['luas_tanah'] }}">
</td>
<td class="text-center">
<input type="text" name="tambahan_luas_bangunan[]"
class="input number-format" value="{{ $item['luas_bangunan'] }}">
</td>
<td class="text-center">
<input type="text" name="tambahan_nilai[]"
class="input currency-format nilai-pasar"
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="tambahan_nilai_likuidasi[]"
class="input likuidasi " value="{{ $item['likuidasi'] ?? 0 }}"
onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="tambahan_total_likuidasi[]"
class="input currency-format total-likuidasi"
value="{{ $item['total_likuidasi'] ?? 0 }}">
</td>
</tr>
</tbody>
</table>
</div>
</div>
@endforeach
@endif
<div id="kesimpulans" class="grid gap-5 w-full"></div>
<div>
<button type="button" class="btn btn-primary btn-sm mt-5" onclick="tambahKesimpulanNilai()">
<i class="ki-outline ki-plus"></i>
Kesimpulan Nilai
</button>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label class="form-label lg:form-label max-w-56 ">Catatan yang Perlu Diperhatikan
</label>
<div class="input-group w-full flex gap-2">
<textarea name="keterangan" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3">{{ old('keterangan', $resumeData['keterangan'] ?? '') }}</textarea>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
<label class="form-label lg:form-label max-w-56 ">DISCLAIMER
</label>
<div class="input-group w-full flex gap-2">
<ol class="list-decimal pl-5 space-y-2">
<li>LAPORAN RESUME INI DIKELUARKAN DIKARENAKAN BELUM DILAKUKANNYA PEMBAYARAN BIAYA PENILAIAN
JAMINAN
</li>
<li>LAPORAN RESUME INI TIDAK BISA DIJADIKAN SEBAGAI DASAR PENGAJUAN DAN ATAU PENCAIRAN
KREDIT, LAPORAN YANG
DIGUNAKAN TETAP WAJIB BERUPA LAPORAN PENILAIAN JAMINAN (LPJ)
</li>
<li>DETAIL PER METER TANAH DAN BANGUNAN, SARANA PELENGKAP DLL AKAN TERCATAT DI LAPORAN
PENILAIAN JAMINAN
(LPJ) NANTI
</li>
<li>LAPORAN RESUME INI HANYA DIGUNAKAN UNTUK KEPENTINGAN INTERNAL BAGI
</li>
<li>LAPORAN RESUME INI HANYA BERLAKU 14 HARI KALENDER TERHITUNG DARI TANGGAL RESUME INI
DIBUAT SESUAI ATURAN
YANG BERLAKU, APABILA LEWAT MAKA HARUS DILAKUKAN ORDER ULANG SESUAI PROSEDUR YANG
BERLAKU
</li>
<li>Apabila sudah melewati 6 bulan, maka harus penilaian ulang kembali
</li>
</ol>
</div>
</div>
<div class="flex card-footer justify-end gap-5">
<button type="button" class="btn btn-primary" onclick="saveResume()">
<i class="ki-filled ki-save-2"></i>
Save</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator']))
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('documentId'), 'jenis_jaminan_id' => request('jaminanId')]) }}"
class="btn btn-light">
<i class="ki-filled ki-printer"></i> Hasil Inspeksi
</a>
<a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
</a>
@endif
</div>
</div>
</form>
</div>
@endsection
@include('lpj::surveyor.js.utils')
<script type="text/javascript">
let data = @json($resumeData ?? 0);
console.log(data);
let counter = 3;
function tambahKesimpulanNilai() {
const kesimpulan = document.getElementById('kesimpulans');
kesimpulan.innerHTML += `
<div class="grid gap-5 w-full mt-5" id="kesimpulan-${counter}">
<div class="flex flex-wrap items-baseline w-full">
<div class="tabel-container w-full">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<input type="text" name="tambahan_nama_kesimpulan[]"
class="input number-format"
placeholder="Masukkan Nama Kesimpulan.."
>
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
<th class="text-center">Nilai Likuidasi (%)</th>
<th class="text-center">Total Nilai Likuidasi</th>
<th class="text-center">Aksi</th>
</tr>
</thead>
<tbody>
<td class="text-center">
<input type="text" name="tambahan_sertifikat[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="tambahan_luas_tanah[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="tambahan_luas_bangunan[]"
class="input number-format">
</td>
<td class="text-center">
<input type="text" name="tambahan_nilai[]"
class="input currency-format nilai-pasar">
</td>
<td class="text-center">
<input type="text" name="tambahan_nilai_likuidasi[]"
class="input likuidasi"
onkeyup="calculateTotal(this)">
</td>
<td class="text-center">
<input type="text" name="tambahan_total_likuidasi[]"
class="input currency-format total-likuidasi" >
</td>
<td class="text-center">
<button type="button" class="btn btn-danger" onclick="deleteRow(this)">Delete</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
`;
const newCurrencyInputs = kesimpulan.querySelectorAll(`#kesimpulan-${counter} .currency-format`);
newCurrencyInputs.forEach(input => {
input.addEventListener('input', function() {
handleCurrencyInput(this);
});
// Format initial value jika ada
if (input.value) {
input.value = formatCurrency(input.value);
}
});
counter++;
}
function deleteRow(button) {
const rowContainer = button.closest('.grid');
rowContainer.remove();
updateLabelNumbers();
}
function updateLabelNumbers() {
const labels = document.querySelectorAll('.kesimpulan');
labels.forEach((label, index) => {
// Update setiap label dengan nomor yang benar
label.textContent = `${index + 1}. SESUAI IMB`;
});
}
function saveResume() {
showLoadingSwal('Mengirim data keserver ...');
const formElement = document.querySelector('form');
const jsonData = formToJson(formElement);
console.log('Data dalam format JSON:', JSON.stringify(formElement, null, 2));
const urlParams = new URLSearchParams(window.location.search); // Mengambil query parameters dari URL
const permohonanId = urlParams.get('permohonanId');
const documentId = urlParams.get('documentId');
const inspeksiId = urlParams.get('inspeksiId');
const requestUrl =
`{{ route('penilai.storeResume') }}`;
$.ajax({
url: requestUrl,
type: 'POST',
data: JSON.stringify({
permohonan_id: permohonanId,
document_id: documentId,
inspeksi_id: inspeksiId,
resume: jsonData,
}),
contentType: 'application/json',
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
hideLoadingSwal();
if (response.success) {
Swal.fire({
title: 'Berhasil!',
text: response.message,
icon: 'success',
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
// window.location.reload();
}
});
} else {
Swal.fire({
title: 'Error!',
text: response.message || 'Terjadi kesalahan',
icon: 'error',
confirmButtonText: 'OK'
});
}
console.log(response);
},
error: function(xhr, status, error) {
let errors = xhr.responseJSON?.errors;
$('.alert').text('');
if (errors) {
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
toastrErrorBuild(value[0]);
});
// toastrErrorBuild(error);
}
hideLoadingSwal();
console.log(errors);
}
});
}
function formToJson(formElement) {
const formData = new FormData(formElement);
const jsonData = {
tanggal_resume: "",
fakta: {
fakta_positif: [],
fakta_negatif: []
},
fisik: [],
sesuai_imb: [],
tambahan: [],
keterangan: ""
};
// Ambil fakta positif
document.querySelectorAll('textarea[name="fakta_positif[]"]').forEach(textarea => {
jsonData.fakta.fakta_positif.push(textarea.value);
});
// Ambil fakta negatif
document.querySelectorAll('textarea[name="fakta_negatif[]"]').forEach(textarea => {
jsonData.fakta.fakta_negatif.push(textarea.value);
});
// Ambil data fisik
document.querySelectorAll('table tbody tr').forEach(row => {
const fisikData = {
sertifikat: row.querySelector('input[name="fisik_sertifikat[]"]')?.value || "",
luas_tanah: row.querySelector('input[name="fisik_luas_tanah[]"]')?.value || "",
luas_bangunan: row.querySelector('input[name="fisik_luas_bangunan[]"]')?.value || "",
nilai: cleanCurrencyValue(row.querySelector('input[name="fisik_nilai[]"]')?.value || ""),
likuidasi: row.querySelector('input[name="likuidasi[]"]')?.value || "",
total_likuidasi: cleanCurrencyValue(row.querySelector(
'input[name="total_nilai_likuidasi[]"]')?.value || "")
};
if (fisikData.sertifikat) {
jsonData.fisik.push(fisikData);
}
});
// Ambil data sesuai IMB
document.querySelectorAll('table tbody tr').forEach(row => {
const imbData = {
sertifikat: row.querySelector('input[name="sesuai_sertifikat[]"]')?.value || "",
luas_tanah: row.querySelector('input[name="sesuai_luas_tanah[]"]')?.value || "",
luas_bangunan: row.querySelector('input[name="sesuai_luas_bangunan[]"]')?.value || "",
nilai: cleanCurrencyValue(row.querySelector('input[name="sesuai_nilai[]"]')?.value || ""),
likuidasi: row.querySelector('input[name="sesuai_likuidasi[]"]')?.value || "",
total_likuidasi: cleanCurrencyValue(row.querySelector(
'input[name="sesuai_total_likuidasi[]"]')?.value || "")
};
if (imbData.sertifikat) {
jsonData.sesuai_imb.push(imbData);
}
});
document.querySelectorAll('#kesimpulan > div').forEach(row => {
const imbData = {
tambahan_nama_kesimpulan: row.querySelector('input[name="tambahan_nama_kesimpulan[]"]')
?.value || "",
sertifikat: row.querySelector('input[name="tambahan_sertifikat[]"]')?.value || "",
luas_tanah: row.querySelector('input[name="tambahan_luas_tanah[]"]')?.value || "",
luas_bangunan: row.querySelector('input[name="tambahan_luas_bangunan[]"]')?.value || "",
nilai: cleanCurrencyValue(row.querySelector('input[name="tambahan_nilai[]"]')?.value || ""),
likuidasi: row.querySelector('input[name="tambahan_nilai_likuidasi[]"]')?.value || "",
total_likuidasi: cleanCurrencyValue(row.querySelector(
'input[name="tambahan_total_likuidasi[]"]')?.value || "")
};
console.log(imbData);
if (imbData.sertifikat) {
jsonData.tambahan.push(imbData);
}
});
// Ambil keterangan
const keterangan = formElement.querySelector('textarea[name="keterangan"]')?.value || "";
jsonData.keterangan = keterangan;
const tanggal_resume = formElement.querySelector('input[name="tanggal_resume"]')?.value || "";
jsonData.tanggal_resume = tanggal_resume;
return jsonData;
}
document.addEventListener('DOMContentLoaded', function() {
// Initialize currency format for existing inputs
document.querySelectorAll('.currency-format').forEach(input => {
input.addEventListener('input', function() {
handleCurrencyInput(this);
});
// Format initial values if they exist
if (input.value) {
input.value = formatCurrency(input.value);
}
});
});
function calculateTotal(element) {
const row = element.closest('tr');
const nilaiPasarInput = row.querySelector('.nilai-pasar');
let likuidasiInput = row.querySelector('.likuidasi');
const totalLikuidasiInput = row.querySelector('.total-likuidasi');
const cleanNilaiPasar = cleanCurrencyValue(nilaiPasarInput.value);
let cleanLikuidasi = cleanCurrencyValue(likuidasiInput.value);
// Batasi likuidasi maksimal hingga 100
cleanLikuidasi = Math.min(parseFloat(cleanLikuidasi) || 0, 100);
// Format nilai likuidasi dengan simbol %
likuidasiInput.value = cleanLikuidasi;
// Konversi ke angka untuk perhitungan
const nilaiPasar = parseFloat(cleanNilaiPasar) || 0;
const likuidasi = cleanLikuidasi / 100; // Konversi persentase ke desimal
// Hitung total likuidasi
const totalLikuidasi = nilaiPasar * likuidasi;
// Tampilkan hasil dengan format yang benar
totalLikuidasiInput.value = formatCurrency(totalLikuidasi.toString());
}
</script>