fix(suveyor/penilai/so): perbaikan print out, form survey dan laporan dan paparan
This commit is contained in:
@@ -662,8 +662,8 @@
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tambah mb-10" id="tambah-npw" style="margin-bottom: 20px;">
|
||||
<button type="button" class="btn btn-primary">
|
||||
<div class="tambah mb-10" style="margin-bottom: 20px;">
|
||||
<button type="button" id="tambah-npw" class="btn btn-primary">
|
||||
<i class="ki-filled ki-plus"></i>
|
||||
Tambah NPW </button>
|
||||
</div>
|
||||
@@ -723,7 +723,7 @@
|
||||
@if (!empty($lpjData['keterangan_penilai']) && is_array($lpjData['keterangan_penilai']))
|
||||
@foreach ($lpjData['keterangan_penilai'] as $index => $item)
|
||||
<div class="keterangan_penilai flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea name="keterangan_penilai[]" class="textarea mt-2 " placeholder="Masukkan catatan penting" rows="10" >{{ old("keterangan_penilai.$index", $item) }}</textarea>
|
||||
<textarea name="keterangan_penilai[]" class="textarea mt-2 " placeholder="Masukkan catatan penting" rows="10">{{ old("keterangan_penilai.$index", $item) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
@@ -1000,88 +1000,100 @@
|
||||
}
|
||||
|
||||
function calculateTotal() {
|
||||
const parseInput = (value) => parseFloat(value.replace(/[^0-9]/g, '')) || 0;
|
||||
const parseInput = (value) => {
|
||||
if (!value) return 0;
|
||||
return parseFloat(value.replace(/[^0-9]/g, '')) || 0;
|
||||
};
|
||||
|
||||
// Bagian Likuidasi
|
||||
let persentaseLikuidasiInput = document.getElementById('likuidasi');
|
||||
let persentaseLikuidasi = parseInput(persentaseLikuidasiInput.value);
|
||||
persentaseLikuidasiInput.value = formatPercentage(persentaseLikuidasiInput.value);
|
||||
|
||||
let totalNilaiPasarLikuidasi = document.querySelector('input[name="likuidasi_nilai_1"]');
|
||||
let totalLikuidasi = document.querySelector('input[name="likuidasi_nilai_2"]');
|
||||
|
||||
// Bagian Asuransi
|
||||
let luasBangunanAsuransi = parseInput(document.getElementById('asuransi_luas_bangunan').value);
|
||||
let hargaPerMeterAsuransi = parseInput(document.querySelector('input[name="asuransi_nilai_1"]').value);
|
||||
let totalNilaiAsuransi = document.querySelector('input[name="asuransi_nilai_2"]');
|
||||
|
||||
// Perhitungan Asuransi
|
||||
const hasilAsuransi = luasBangunanAsuransi * hargaPerMeterAsuransi;
|
||||
|
||||
let totalNilaiPasarWajar = 0;
|
||||
|
||||
// Perhitungan untuk input yang sudah ada
|
||||
const jenisAsetData = @json($jenisAset);
|
||||
|
||||
// Menentukan input yang akan dihitung berdasarkan jenis aset
|
||||
let standardInputs = [];
|
||||
|
||||
if (jenisAsetData.toUpperCase() === 'RUKO/RUKAN') {
|
||||
standardInputs = [{
|
||||
luas: 'luas_bangunan',
|
||||
nilai: 'nilai_bangunan_1',
|
||||
output: 'nilai_bangunan_2'
|
||||
}];
|
||||
} else {
|
||||
standardInputs = [{
|
||||
luas: 'luas_tanah',
|
||||
nilai: 'nilai_tanah_1',
|
||||
output: 'nilai_tanah_2'
|
||||
},
|
||||
{
|
||||
luas: 'luas_bangunan',
|
||||
nilai: 'nilai_bangunan_1',
|
||||
output: 'nilai_bangunan_2'
|
||||
}
|
||||
];
|
||||
// Function to format currency
|
||||
function formatCurrency(value) {
|
||||
// Ensure we have a valid number to format
|
||||
const num = parseFloat(value.replace(/[^0-9]/g, '')) || 0;
|
||||
return num.toLocaleString('id-ID');
|
||||
}
|
||||
|
||||
standardInputs.forEach(input => {
|
||||
let luas = parseInput(document.getElementById(input.luas).value);
|
||||
let hargaPerMeter = parseInput(document.querySelector(`input[name="${input.nilai}"]`).value);
|
||||
let totalNilai = luas * hargaPerMeter;
|
||||
// Function to format percentage
|
||||
function formatPercentage(value) {
|
||||
if (!value) return '';
|
||||
const num = parseFloat(value.replace(/[^0-9.]/g, '')) || 0;
|
||||
return num.toString();
|
||||
}
|
||||
|
||||
document.querySelector(`input[name="${input.output}"]`).value = formatCurrency(totalNilai
|
||||
.toString());
|
||||
totalNilaiPasarWajar += totalNilai;
|
||||
// Calculate total nilai pasar wajar
|
||||
let totalNilaiPasarWajar = 0;
|
||||
|
||||
// Get all kategori unik elements dynamically
|
||||
const kategoriItems = document.querySelectorAll('[id^="luas_"]');
|
||||
|
||||
kategoriItems.forEach(item => {
|
||||
const kategori = item.id.replace('luas_', '');
|
||||
const luasInput = document.getElementById(`luas_${kategori}`);
|
||||
const nilaiInput = document.querySelector(`input[name="nilai_${kategori}_1"]`);
|
||||
const outputElement = document.querySelector(`input[name="nilai_${kategori}_2"]`);
|
||||
|
||||
if (luasInput && nilaiInput && outputElement) {
|
||||
const luas = parseInput(luasInput.value);
|
||||
const nilai = parseInput(nilaiInput.value);
|
||||
const hasil = luas * nilai;
|
||||
|
||||
outputElement.value = formatCurrency(hasil.toString());
|
||||
totalNilaiPasarWajar += hasil;
|
||||
}
|
||||
});
|
||||
|
||||
// Tambahkan perhitungan untuk NPW tambahan
|
||||
const npwRows = document.querySelectorAll('.npw-row');
|
||||
npwRows.forEach(row => {
|
||||
let luasNPW = parseInput(row.querySelector('input[id^="luas_npw_"]').value);
|
||||
let nilaiNPW = parseInput(row.querySelector('input[id^="nilai_npw_"][id$="_1"]').value);
|
||||
let totalNilaiNPW = luasNPW * nilaiNPW;
|
||||
const luasInput = row.querySelector('input[id^="luas_npw_"]');
|
||||
const nilaiInput = row.querySelector('input[id^="nilai_npw_"][id$="_1"]');
|
||||
const outputElement = row.querySelector('input[id^="nilai_npw_"][id$="_2"]');
|
||||
|
||||
row.querySelector('input[id^="nilai_npw_"][id$="_2"]').value = formatCurrency(totalNilaiNPW
|
||||
.toString());
|
||||
totalNilaiPasarWajar += totalNilaiNPW;
|
||||
if (luasInput && nilaiInput && outputElement) {
|
||||
const luas = parseInput(luasInput.value);
|
||||
const nilai = parseInput(nilaiInput.value);
|
||||
const hasil = luas * nilai;
|
||||
|
||||
outputElement.value = formatCurrency(hasil.toString());
|
||||
totalNilaiPasarWajar += hasil;
|
||||
}
|
||||
});
|
||||
|
||||
// Update total nilai pasar wajar
|
||||
document.getElementById('total_nilai_pasar_wajar').value = formatCurrency(totalNilaiPasarWajar.toString());
|
||||
const totalElement = document.getElementById('total_nilai_pasar_wajar');
|
||||
if (totalElement) {
|
||||
totalElement.value = formatCurrency(totalNilaiPasarWajar.toString());
|
||||
}
|
||||
|
||||
// Perhitungan Likuidasi
|
||||
const hasilLikuidasi = (persentaseLikuidasi / 100) * totalNilaiPasarWajar;
|
||||
// Bagian Likuidasi
|
||||
const persentaseLikuidasiInput = document.getElementById('likuidasi');
|
||||
if (persentaseLikuidasiInput) {
|
||||
let persentaseLikuidasi = parseInput(persentaseLikuidasiInput.value);
|
||||
persentaseLikuidasiInput.value = formatPercentage(persentaseLikuidasiInput.value);
|
||||
|
||||
// Tampilkan nilai likuidasi dan asuransi
|
||||
totalNilaiPasarLikuidasi.value = formatCurrency(totalNilaiPasarWajar.toString());
|
||||
totalNilaiAsuransi.value = formatCurrency(hasilAsuransi.toString());
|
||||
const totalNilaiPasarLikuidasi = document.querySelector('input[name="likuidasi_nilai_1"]');
|
||||
const totalLikuidasi = document.querySelector('input[name="likuidasi_nilai_2"]');
|
||||
|
||||
// Total likuidasi (total nilai pasar wajar + nilai likuidasi)
|
||||
// const totalPasarWajarDenganLikuidasi = totalNilaiPasarWajar + hasilLikuidasi;
|
||||
totalLikuidasi.value = formatCurrency(hasilLikuidasi.toString());
|
||||
if (totalNilaiPasarLikuidasi && totalLikuidasi) {
|
||||
totalNilaiPasarLikuidasi.value = formatCurrency(totalNilaiPasarWajar.toString());
|
||||
|
||||
// Perhitungan Likuidasi
|
||||
const hasilLikuidasi = (persentaseLikuidasi / 100) * totalNilaiPasarWajar;
|
||||
totalLikuidasi.value = formatCurrency(hasilLikuidasi.toString());
|
||||
}
|
||||
}
|
||||
|
||||
// Bagian Asuransi (jika ada)
|
||||
const luasBangunanAsuransi = document.getElementById('asuransi_luas_bangunan');
|
||||
const hargaPerMeterAsuransi = document.querySelector('input[name="asuransi_nilai_1"]');
|
||||
const totalNilaiAsuransi = document.querySelector('input[name="asuransi_nilai_2"]');
|
||||
|
||||
if (luasBangunanAsuransi && hargaPerMeterAsuransi && totalNilaiAsuransi) {
|
||||
const luas = parseInput(luasBangunanAsuransi.value);
|
||||
const nilai = parseInput(hargaPerMeterAsuransi.value);
|
||||
const hasilAsuransi = luas * nilai;
|
||||
|
||||
totalNilaiAsuransi.value = formatCurrency(hasilAsuransi.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user