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 = `