https://drive.google.com/file/d/1tJd...ew?usp=sharing
Gönderim olduğum videoda input otomatik veri geliyor bu veri ara-toplama gelmiyor otomatik kendim güncelleme yaparsam gelmekte bu konuda yardımcı olabilir misiniz?
<div class="row fiyat-toplama-row">
<div class="col-sm-9"></div>
<div class="col-sm-3">
<div class="ara-toplam-row">Ara Toplam: <span class="ara-toplam">0,00</span> <span class="icon-ekstra-iskonto"><i class="fi fi-rr-plus"></i></span></div>
<div class="ekstra-iskonto-row"></div>
<div class="iskonto-row" id="iskontogoster" style="display: none;">İskonto: <span id="iskontoToplam">0.00</span></div>
<div class="toplu-iskonto-row" id="topluIskontoGoster" style="display: none;">Toplu İskonto: <span id="topluIskontoDeger"></span></div>
<div class="genel-toplam-row">Genel Toplam: <span id="genel-toplam">0,00</span></div>
</div>
</div><script>
document.addEventListener("DOMContentLoaded", function () {
const araToplamSpan = document.querySelector(".ara-toplam");
const genelToplamSpan = document.getElementById("genel-toplam");
const discountValueInput = document.getElementById("discountValue");
const discountTypeSelect = document.getElementById("discountType");
const paraBirimiRadyolar = document.querySelectorAll('input[name="para"]');
const addRowButton = document.getElementById("addRow");
const tableBody = document.querySelector("tbody");
const iskontoGosterDiv = document.getElementById("iskontogoster");
const iskontoToplamSpan = document.getElementById("iskontoToplam");
const topluIskontoGosterDiv = document.getElementById("topluIskontoGoster");
const topluIskontoDegerSpan = document.getElementById("topluIskontoDeger");
const ekstraIskontoIcon = document.querySelector(".icon-ekstra-iskonto");
const ekstraIskontoRow = document.querySelector(".ekstra-iskonto-row");
let ekstraIskontoInput;
let ekstraIskontoLabel;
function hesaplaAraToplam() {
let araToplam = 0;
const toplamFiyatiInputs = document.querySelectorAll("input[name='toplam-fiyati']");
toplamFiyatiInputs.forEach(function (input) {
let value = parseFloat(input.value.replace(/[^0-9.-]+/g, ""));
araToplam += isNaN(value) ? 0 : value;
});
const selectedCurrency = document.querySelector('input[name="para"]:checked')?.value || "TL";
let symbol = selectedCurrency === "TL" ? "₺" : selectedCurrency === "USD" ? "$" : "";
if (araToplamSpan) {
araToplamSpan.textContent = araToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol;
}
return araToplam;
}
function hesaplaGenelToplam() {
const araToplam = hesaplaAraToplam();
let topluIskontoDeger = 0;
let topluIskontoIndirimMiktari = 0;
if (discountValueInput && discountValueInput.value) {
topluIskontoDeger = parseFloat(discountValueInput.value.replace(/[^0-9.-]+/g, "")) || 0;
}
const topluIskontoTuru = discountTypeSelect ? discountTypeSelect.value : "%";
if (topluIskontoDeger > 0) {
topluIskontoGosterDiv.style.display = "block";
const currency = document.querySelector('input[name="para"]:checked')?.value || "₺";
if (topluIskontoTuru === "%") {
const gercekIskonto = Math.min(topluIskontoDeger, 100);
topluIskontoIndirimMiktari = (araToplam * gercekIskonto) / 100;
topluIskontoDegerSpan.textContent = "(%" + gercekIskonto + ") - " + topluIskontoIndirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency;
} else if (topluIskontoTuru === "birim") {
topluIskontoIndirimMiktari = topluIskontoDeger;
topluIskontoDegerSpan.textContent = "(" + topluIskontoDeger.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency + ") - " + topluIskontoIndirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency;
}
} else {
topluIskontoDegerSpan.textContent = "";
topluIskontoGosterDiv.style.display = "none";
topluIskontoIndirimMiktari = 0;
}
let ekstraIskonto = 0;
if (ekstraIskontoInput && ekstraIskontoInput.value) {
ekstraIskonto = parseFloat(ekstraIskontoInput.value.replace(/[^0-9.-]+/g, "")) || 0;
}
let genelToplam = araToplam - topluIskontoIndirimMiktari - ekstraIskonto;
genelToplam = genelToplam < 0 ? 0 : genelToplam;
if (genelToplamSpan) {
genelToplamSpan.textContent = genelToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + (document.querySelector('input[name="para"]:checked')?.value || "₺");
}
}
function temizleBireyselIskontolar() {
const rows = document.querySelectorAll('tbody tr');
rows.forEach(row => {
const iskontoInput = row.querySelector('.iskonto-td input[type="number"]');
const iskontoTuruSelect = row.querySelector('.iskonto-td select.iskonto-turu');
const iskontoMiktariSpan = row.querySelector('.iskonto-miktari');
if (iskontoInput) iskontoInput.value = '';
if (iskontoTuruSelect) iskontoTuruSelect.value = '%';
if (iskontoMiktariSpan) iskontoMiktariSpan.textContent = '';
});
iskontoGosterDiv.style.display = "none";
iskontoToplamSpan.textContent = "0.00";
}
document.addEventListener('input', function (event) {
if (event.target && event.target.name === 'toplam-fiyati') {
hesaplaAraToplam();
hesaplaGenelToplam();
} else if (event.target && event.target.id === 'discountValue') {
temizleBireyselIskontolar();
hesaplaAraToplam();
hesaplaGenelToplam();
} else if (event.target && event.target.id === 'ekstraIskontoValue') {
hesaplaGenelToplam();
}
});
document.addEventListener('change', function (event) {
if (event.target && event.target.id === 'discountType') {
temizleBireyselIskontolar();
hesaplaAraToplam();
hesaplaGenelToplam();
} else if (event.target && event.target.name === 'para') {
hesaplaAraToplam();
hesaplaGenelToplam();
}
});
if (addRowButton && tableBody) {
addRowButton.addEventListener('click', function() {
const newRow = tableBody.insertRow();
const cell1 = newRow.insertCell();
const cell2 = newRow.insertCell();
cell1.textContent = "Yeni Ürün";
cell2.innerHTML = '<input type="number" name="toplam-fiyati" value="0.00">';
});
}
if (ekstraIskontoIcon && ekstraIskontoRow) {
ekstraIskontoIcon.addEventListener('click', function() {
if (!ekstraIskontoInput) {
ekstraIskontoLabel = document.createElement('label');
ekstraIskontoLabel.textContent = 'Ekstra İskonto:';
ekstraIskontoLabel.classList.add('me-2');
ekstraIskontoInput = document.createElement('input');
ekstraIskontoInput.type = 'number';
ekstraIskontoInput.id = 'ekstraIskontoValue';
ekstraIskontoInput.classList.add('form-control', 'd-inline-block', 'w-auto', 'ms-2');
ekstraIskontoInput.placeholder = 'İskonto Tutarı';
ekstraIskontoRow.appendChild(ekstraIskontoLabel);
ekstraIskontoRow.appendChild(ekstraIskontoInput);
ekstraIskontoInput.addEventListener('input', hesaplaGenelToplam);
} else {
const visible = ekstraIskontoInput.style.display !== 'none';
ekstraIskontoLabel.style.display = visible ? 'none' : 'inline';
ekstraIskontoInput.style.display = visible ? 'none' : 'inline-block';
}
});
}
hesaplaAraToplam();
hesaplaGenelToplam();
});
const toplamInput = row.querySelector("input[name='toplam-fiyati']");
const adet = 2;
const birimFiyat = 150;
toplamInput.value = (adet * birimFiyat).toFixed(2);
hesaplaAraToplam();
hesaplaGenelToplam();
</script>