fix(so/dd/eo/penilai): perbaikan otorisasi untuk paparan, pelaporan, penambahan revisi pembayaran, data pembading dan ubah class bg-agi-50 ke light:bg-agi-50

This commit is contained in:
majid
2025-03-03 15:48:03 +07:00
parent f928cf1d76
commit b8dbda153e
26 changed files with 204 additions and 105 deletions

View File

@@ -79,16 +79,18 @@
let columnCount = 1;
// Fungsi calculate prices yang diperbaiki
function calculatePrices(type = 'main', index = null) {
let hargaInput, diskonInput, totalInput, hargaDiskonInput;
let hargaInput, diskonInput, totalInput, hargaDiskonInput, hargaPenawaranInput;
// Tentukan input berdasarkan tipe (main atau pembanding)
if (type === 'main') {
hargaPenawaranInput = document.querySelector('input[name="harga_penawaran"]');
hargaInput = document.querySelector('input[name="harga"]');
diskonInput = document.querySelector('input[name="diskon"]');
totalInput = document.querySelector('input[name="total"]');
hargaDiskonInput = document.querySelector('input[name="harga_diskon"]');
} else {
// Untuk pembanding, gunakan array input dengan index
const hargaPenawarans = document.getElementsByName('harga_penawaran_pembanding[]');
const hargaInputs = document.getElementsByName('harga_pembanding[]');
const diskonInputs = document.getElementsByName('diskon_pembanding[]');
const totalInputs = document.getElementsByName('total_pembanding[]');
@@ -96,6 +98,7 @@
// Pastikan index valid
if (index !== null && index < hargaInputs.length) {
hargaPenawaranInput = hargaPenawarans[index]
hargaInput = hargaInputs[index];
diskonInput = diskonInputs[index];
totalInput = totalInputs[index];
@@ -106,11 +109,12 @@
}
// Validasi input
if (!hargaInput || !diskonInput || !totalInput || !hargaDiskonInput) {
if (!hargaPenawaranInput || !hargaInput || !diskonInput || !totalInput || !hargaDiskonInput) {
return;
}
// Ambil nilai numerik dari input
const hargaPenawaran = parseFloat(hargaPenawaranInput.value.replace(/[^\d]/g, '') || '0');
const harga = parseFloat(hargaInput.value.replace(/[^\d]/g, '') || '0');
let diskonInput_value = diskonInput.value.replace(',', '.');
let diskon = parseFloat(diskonInput_value.replace(/[^\d.]/g, '') || '0');
@@ -120,10 +124,11 @@
diskon = Math.min(diskon, 100);
const total = harga;
const hargaSetelahDiskon = harga - (harga * (diskon / 100));
const hargaPermeterSetelahDiskon = harga - (harga * (diskon / 100))
const hargaSetelahDiskon = hargaPenawaran - (hargaPenawaran * (diskon / 100));
// Update nilai dengan format currency
totalInput.value = formatCurrency(total.toString());
totalInput.value = formatCurrency(hargaPermeterSetelahDiskon.toString());
hargaDiskonInput.value = formatCurrency(hargaSetelahDiskon.toString());
}
@@ -211,7 +216,8 @@
'hak_properti_pembanding[]': currentData.hak_properti,
'telepon_pembanding[]': currentData.telepon,
'penawaran_pembanding[]': currentData.penawaran,
'tanggal_pembanding[]': currentData.tanggal
'tanggal_pembanding[]': currentData.tanggal,
'harga_penawaran_pembanding[]':currentData.harga_penawaran
};
@@ -261,11 +267,15 @@
function initializePriceCalculation() {
// Event listener untuk input utama
const mainHargaInput = document.querySelector('input[name="harga"]');
const mainHargaPenawaranInput = document.querySelector('input[name="harga_penawaran"]');
const mainDiskonInput = document.querySelector('input[name="diskon"]');
if (mainHargaInput) {
mainHargaInput.addEventListener('input', () => calculatePrices('main'));
}
if (mainHargaPenawaranInput) {
mainHargaPenawaranInput.addEventListener('input', () => calculatePrices('main'));
}
if (mainDiskonInput) {
mainDiskonInput.addEventListener('input', () => calculatePrices('main'));
@@ -273,11 +283,17 @@
// Event listener untuk input pembanding
const pembandingHargaInputs = document.getElementsByName('harga_pembanding[]');
const pembandingHargaPenawaranInput = document.getElementsByName('harga_penawaran_pembanding[]');
const pembandingDiskonInputs = document.getElementsByName('diskon_pembanding[]');
pembandingHargaInputs.forEach((input, index) => {
input.addEventListener('input', () => calculatePrices('pembanding', index));
});
pembandingHargaPenawaranInput.forEach((input, index) => {
input.addEventListener('input', () => calculatePrices('pembanding', index));
});
pembandingDiskonInputs.forEach((input, index) => {
input.addEventListener('input', () => calculatePrices('pembanding', index));