// Функції для роботи з корзиною (замінити в cart.php) function changeQuantity(sku, change) { const input = document.querySelector(`[data-sku="${sku}"] .quantity-input`); const currentValue = parseInt(input.value); const newValue = Math.max(1, currentValue + change); input.value = newValue; updateQuantity(sku, newValue); } function updateQuantity(sku, quantity) { quantity = Math.max(1, parseInt(quantity)); // Показуємо індикатор завантаження showLoadingState(sku); const formData = new FormData(); formData.append('action', 'update'); formData.append('product_sku', sku); formData.append('quantity', quantity); fetch('/cart/cart.php', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { // Оновлюємо лічільник в хедері if (typeof updateCartCount === 'function') { updateCartCount(data.cart_count); } // Оновлюємо дані на сторінці updateCartDisplay(data); // Приховуємо індикатор завантаження hideLoadingState(sku); } else { alert('Помилка: ' + data.message); hideLoadingState(sku); } }) .catch(error => { console.error('Error:', error); alert('Помилка оновлення'); hideLoadingState(sku); }); } function removeItem(sku) { if (!confirm('Ви впевнені що хочете видалити цей товар з корзини?')) { return; } // Показуємо індикатор завантаження showLoadingState(sku); const formData = new FormData(); formData.append('action', 'remove'); formData.append('product_sku', sku); fetch('/cart/cart.php', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { // Оновлюємо лічільник в хедері if (typeof updateCartCount === 'function') { updateCartCount(data.cart_count); } // Видаляємо товар з DOM const itemElement = document.querySelector(`[data-sku="${sku}"]`); if (itemElement) { itemElement.style.opacity = '0.5'; setTimeout(() => { itemElement.remove(); // Перевіряємо чи корзина порожня checkEmptyCart(); // Оновлюємо суми updateCartDisplay(data); }, 300); } } else { alert('Помилка: ' + data.message); hideLoadingState(sku); } }) .catch(error => { console.error('Error:', error); alert('Помилка видалення'); hideLoadingState(sku); }); } // Функція для оновлення відображення корзини function updateCartDisplay(data) { // Перераховуємо суми на основі поточних даних в DOM recalculateCartTotals(); // Оновлюємо повідомлення про знижку updateDiscountNotice(data.has_discount); } // Функція для перерахунку сум function recalculateCartTotals() { let originalTotal = 0; let totalPairs = 0; // Проходимо по всіх товарах в корзині document.querySelectorAll('.cart-item').forEach(item => { const quantityInput = item.querySelector('.quantity-input'); const priceText = item.querySelector('.item-price-inline').textContent; const totalElement = item.querySelector('.item-total'); if (quantityInput && priceText && totalElement) { const quantity = parseInt(quantityInput.value); const price = parseInt(priceText.replace(/\D/g, '')); const itemTotal = quantity * price; // Оновлюємо суму товару totalElement.textContent = itemTotal.toLocaleString('uk-UA') + ' грн'; originalTotal += itemTotal; totalPairs += quantity; } }); // Перевіряємо знижку const hasDiscount = totalPairs >= 2; let finalTotal = originalTotal; let discountAmount = 0; if (hasDiscount) { discountAmount = originalTotal * 0.20; finalTotal = originalTotal - discountAmount; } // Оновлюємо summary в корзині (якщо є) const summaryContainer = document.querySelector('.cart-summary'); if (summaryContainer) { let summaryHTML = `