let sepet = []; let askidakiSepetler = []; let iskontoOrani = 0; let seciliMusteri = null; let sonOkunan = ""; // 1. Ekran Parlama / Titreşim Efekti function efektiTetikle(tur) { let body = document.getElementById('mainBody'); if (!body) return; body.classList.remove('scan-flash-success', 'scan-flash-error'); void body.offsetWidth; // Reflow if (tur === 'ok') { body.classList.add('scan-flash-success'); if ("vibrate" in navigator) navigator.vibrate(80); } else { body.classList.add('scan-flash-error'); if ("vibrate" in navigator) navigator.vibrate([100, 50, 100]); } } // 2. AJAX Barkod Sorgulama function sorgula(barkod) { if (!barkod) return; let formData = new FormData(); formData.append('barkod', barkod); fetch('api.php?action=sorgula', { method: 'POST', body: formData }) .then(res => res.json()) .then(res => { if (res.success && res.data) { sepeteEkle(res.data); efektiTetikle('ok'); } else { efektiTetikle('hata'); alert(res.message || 'Ürün bulunamadı!'); } }) .catch(err => { console.error("Sorgu Hatası:", err); efektiTetikle('hata'); }); } // 3. Manuel Input ile Arama function manualArama() { let inp = document.getElementById('manualInput'); if (inp && inp.value.trim() !== '') { sorgula(inp.value.trim()); inp.value = ''; } } // 4. Sepete Ürün Ekleme Mantığı (DÜZELTİLDİ) function sepeteEkle(urun) { // Fiyat güvenliği kontrolü let fiyat = parseFloat(urun.net_fiyat || urun.birim_fiyat || urun.fiyat || 0); let urunNesnesi = { id: urun.id, barkod: urun.barkod, urun_adi: urun.urun_adi, net_fiyat: fiyat, stok: urun.stok || 0, resim_url: urun.resim_url || 'https://via.placeholder.com/150', gramaj: urun.gramaj || 1, adet: 1 }; let varolanIndex = sepet.findIndex(item => item.barkod === urunNesnesi.barkod); // Eğer standart adetli ürünse adedini artır, terazi ürünü ise ayrı satır ekle if (varolanIndex > -1 && urunNesnesi.gramaj === 1) { sepet[varolanIndex].adet++; } else { sepet.push(urunNesnesi); } sepetGuncelle(); } // 5. Adet Değiştirme function adetDegistir(index, fark) { if (sepet[index]) { sepet[index].adet += fark; if (sepet[index].adet <= 0) { sepet.splice(index, 1); } sepetGuncelle(); } } // 6. Sepeti Temizle function sepetiTemizle() { sepet = []; iskontoOrani = 0; seciliMusteri = null; let custEl = document.getElementById('seciliMusteriText'); if (custEl) custEl.innerText = "Müşteri Seç"; sepetGuncelle(); } // 7. Canlı Sepet Render & Hesaplama (DÜZELTİLDİ) function sepetGuncelle() { let liste = document.getElementById('sepetListesi'); if (!liste) return; let araToplam = 0; let toplamAdet = 0; if (sepet.length === 0) { liste.innerHTML = `
Sepet boş. Barkod okutun veya hızlı ürün seçin.
`; } else { liste.innerHTML = ''; sepet.forEach((item, index) => { let urunToplam = item.net_fiyat * item.adet; araToplam += urunToplam; toplamAdet += item.adet; liste.innerHTML += `
${item.urun_adi}
${item.net_fiyat.toFixed(2)} ₺ x ${item.adet}
${urunToplam.toFixed(2)} ₺
`; }); } let iskontoTutar = araToplam * (iskontoOrani / 100); let genelToplam = araToplam - iskontoTutar; let kdvTutar = genelToplam * 0.20; let totEl = document.getElementById('toplamTutar'); let adtEl = document.getElementById('toplamAdet'); let iskEl = document.getElementById('iskontoTutar'); let kdvEl = document.getElementById('kdvTutar'); if (totEl) totEl.innerText = genelToplam.toFixed(2) + ' ₺'; if (adtEl) adtEl.innerText = toplamAdet + ' Kalem'; if (iskEl) iskEl.innerText = iskontoTutar.toFixed(2) + ' ₺'; if (kdvEl) kdvEl.innerText = kdvTutar.toFixed(2) + ' ₺'; paraUstuHesapla(); } // 8. Para Üstü Hesabı function paraUstuHesapla() { let totEl = document.getElementById('toplamTutar'); if (!totEl) return; let genelTutarText = totEl.innerText.replace(' ₺', '').replace(',', '.'); let genelToplam = parseFloat(genelTutarText) || 0; let verilenInp = document.getElementById('verilenNakit'); let verilen = verilenInp ? (parseFloat(verilenInp.value) || 0) : 0; let fark = verilen - genelToplam; let pEl = document.getElementById('paraUstu'); if (pEl) { pEl.innerText = (fark >= 0 && genelToplam > 0) ? `P.Ü: ${fark.toFixed(2)} ₺` : 'P.Ü: 0,00 ₺'; } } // 9. Enter Tuşu Dinleyicisi document.addEventListener('DOMContentLoaded', () => { let inp = document.getElementById('manualInput'); if (inp) { inp.addEventListener('keypress', function(e) { if (e.key === 'Enter') { e.preventDefault(); manualArama(); } }); } });