document.addEventListener('DOMContentLoaded', function () {
    const productForm = document.getElementById('productForm');
    const productTable = document.getElementById('productTable').getElementsByTagName('tbody')[0];
    const searchInput = document.getElementById('searchInput');
    const cartTable = document.getElementById('cartTable').getElementsByTagName('tbody')[0];
    const totalSoldElement = document.getElementById('totalSold');
    const totalRevenueElement = document.getElementById('totalRevenue');
    const totalProfitElement = document.getElementById('totalProfit');

    let totalSold = 0; // Общее количество проданных товаров
    let totalRevenue = 0; // Общая выручка
    let totalProfit = 0; // Общая прибыль
    let cart = []; // Корзина

    // Загрузка данных из localStorage при загрузке страницы
    loadProducts();
    loadStats();
    loadCart();

    // Обработка добавления товара
    productForm.addEventListener('submit', function (e) {
        e.preventDefault();

        const productName = document.getElementById('productName').value;
        const purchasePrice = parseFloat(document.getElementById('purchasePrice').value);
        const salePrice = parseFloat(document.getElementById('salePrice').value);
        const quantity = parseInt(document.getElementById('quantity').value);
        const itemsPerPack = parseInt(document.getElementById('itemsPerPack').value);

        if (productName && !isNaN(purchasePrice) && !isNaN(salePrice) && !isNaN(quantity) && !isNaN(itemsPerPack)) {
            addProduct(productName, purchasePrice, salePrice, quantity, itemsPerPack);
            productForm.reset(); // Очистка формы после добавления
        } else {
            alert('Пожалуйста, заполните все поля корректно.');
        }
    });

    // Поиск по товарам
    searchInput.addEventListener('input', function () {
        const searchTerm = searchInput.value.toLowerCase();
        const rows = productTable.getElementsByTagName('tr');

        for (let row of rows) {
            const name = row.getElementsByTagName('td')[0]?.textContent.toLowerCase();
            if (name) {
                row.style.display = name.includes(searchTerm) ? '' : 'none';
            }
        }
    });

    // Делегирование событий для кнопок в таблице товаров
    productTable.addEventListener('click', function (e) {
        const target = e.target;
        const row = target.closest('tr');
        const productId = parseInt(row.getAttribute('data-id'));

        if (target.classList.contains('add-to-cart-btn')) {
            const quantityInput = row.querySelector('.quantity-input');
            const quantity = parseInt(quantityInput.value);
            if (quantity && quantity > 0) {
                addToCart(productId, quantity);
            } else {
                alert('Пожалуйста, введите корректное количество.');
            }
        } else if (target.classList.contains('add-stock-btn')) {
            addStock(productId);
        } else if (target.classList.contains('delete-btn')) {
            deleteProduct(productId);
        }
    });

    // Делегирование событий для кнопок в корзине
    cartTable.addEventListener('click', function (e) {
        const target = e.target;
        if (target.classList.contains('delete-btn')) {
            const row = target.closest('tr');
            const productId = parseInt(row.getAttribute('data-id'));
            removeFromCart(productId);
        }
    });

    // Функция добавления товара
    function addProduct(name, purchasePrice, salePrice, quantity, itemsPerPack) {
        const product = {
            id: Date.now(), // Уникальный ID на основе времени
            name,
            purchasePrice,
            salePrice,
            quantity,
            itemsPerPack
        };

        // Получаем текущие товары из localStorage
        let products = JSON.parse(localStorage.getItem('products')) || [];
        products.push(product); // Добавляем новый товар
        localStorage.setItem('products', JSON.stringify(products)); // Сохраняем в localStorage

        // Добавляем товар в таблицу
        addProductToTable(product);
    }

    // Функция добавления товара в таблицу
    function addProductToTable(product) {
        const row = productTable.insertRow();
        row.setAttribute('data-id', product.id);

        row.innerHTML = `
            <td>${product.name}</td>
            <td>${product.purchasePrice}</td>
            <td>${product.salePrice}</td>
            <td>${product.quantity}</td>
            <td>${product.itemsPerPack}</td>
            <td class="actions">
                <input type="number" min="1" max="${product.quantity}" class="quantity-input" placeholder="Количество">
                <button class="add-to-cart-btn">Добавить в корзину</button>
                <button class="add-stock-btn">Приход</button>
                <button class="delete-btn">Удалить</button>
            </td>
        `;
    }

    // Функция загрузки товаров из localStorage
    function loadProducts() {
        const products = JSON.parse(localStorage.getItem('products')) || [];
        productTable.innerHTML = ''; // Очищаем таблицу перед загрузкой
        products.forEach(product => addProductToTable(product));
    }

    // Функция загрузки статистики из localStorage
    function loadStats() {
        const stats = JSON.parse(localStorage.getItem('stats')) || { totalSold: 0, totalRevenue: 0, totalProfit: 0 };
        totalSold = stats.totalSold;
        totalRevenue = stats.totalRevenue;
        totalProfit = stats.totalProfit;
        updateStatsDisplay();
    }

    // Функция загрузки корзины из localStorage
    function loadCart() {
        cart = JSON.parse(localStorage.getItem('cart')) || [];
        updateCartDisplay();
    }

    // Функция обновления отображения статистики
    function updateStatsDisplay() {
        totalSoldElement.textContent = totalSold;
        totalRevenueElement.textContent = totalRevenue.toFixed(2);
        totalProfitElement.textContent = totalProfit.toFixed(2);
    }

    // Функция обновления отображения корзины
    function updateCartDisplay() {
        cartTable.innerHTML = ''; // Очищаем корзину перед обновлением
        cart.forEach(item => {
            const row = cartTable.insertRow();
            row.setAttribute('data-id', item.id);
            row.innerHTML = `
                <td>${item.name}</td>
                <td>${item.quantity}</td>
                <td>${item.salePrice}</td>
                <td>${item.quantity * item.salePrice}</td>
                <td><button class="delete-btn">Удалить</button></td>
            `;
        });
    }

    // Функция добавления товара в корзину
    function addToCart(productId, quantity) {
        const products = JSON.parse(localStorage.getItem('products')) || [];
        const product = products.find(p => p.id === productId);

        if (product && product.quantity >= quantity) {
            const cartItem = cart.find(item => item.id === productId);

            if (cartItem) {
                cartItem.quantity += quantity;
            } else {
                cart.push({
                    id: productId,
                    name: product.name,
                    salePrice: product.salePrice,
                    purchasePrice: product.purchasePrice,
                    quantity: quantity
                });
            }

            localStorage.setItem('cart', JSON.stringify(cart));
            updateCartDisplay();
        } else {
            alert('Недостаточно товара на складе.');
        }
    }

    // Функция удаления товара из корзины
    function removeFromCart(productId) {
        cart = cart.filter(item => item.id !== productId);
        localStorage.setItem('cart', JSON.stringify(cart));
        updateCartDisplay();
    }

    // Функция продажи товаров из корзины
    window.sellCart = function () {
        if (cart.length === 0) {
            alert('Корзина пуста.');
            return;
        }

        // Получаем сумму скидки
        const discountInput = document.getElementById('discountInput');
        const discount = parseFloat(discountInput.value) || 0; // Если скидка не указана, считаем её равной 0

        // Получаем текущую дату и время по бишкекскому времени
        const now = new Date();
        const options = { timeZone: 'Asia/Bishkek', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit' };
        const receiptDateTime = now.toLocaleString('ru-RU', options);

        // Заполняем дату и время в модальном окне
        document.getElementById('receiptDateTime').textContent = receiptDateTime;

        // Заполняем таблицу товаров в чеке
        const receiptTable = document.getElementById('receiptTable').getElementsByTagName('tbody')[0];
        receiptTable.innerHTML = ''; // Очищаем таблицу перед заполнением
        let totalAmount = 0;

        cart.forEach(item => {
            const products = JSON.parse(localStorage.getItem('products')) || [];
            const product = products.find(p => p.id === item.id);

            if (product) {
                const row = receiptTable.insertRow();
                row.innerHTML = `
                    <td>${item.name}</td>
                    <td>${item.quantity}</td>
                    <td>${product.itemsPerPack}</td>
                    <td>${item.salePrice}</td>
                    <td>${item.quantity * item.salePrice}</td>
                `;
                totalAmount += item.quantity * item.salePrice;
            }
        });

        // Отображаем общую сумму, скидку и итоговую сумму
        document.getElementById('receiptTotal').textContent = totalAmount.toFixed(2);
        document.getElementById('receiptDiscount').textContent = discount.toFixed(2);
        document.getElementById('receiptFinalTotal').textContent = (totalAmount - discount).toFixed(2);

        // Показываем модальное окно
        const modal = document.getElementById('receiptModal');
        modal.style.display = 'flex';

        // Обработка подтверждения продажи
        document.getElementById('confirmSaleBtn').onclick = function () {
            const products = JSON.parse(localStorage.getItem('products')) || [];

            cart.forEach(cartItem => {
                const product = products.find(p => p.id === cartItem.id);

                if (product && product.quantity >= cartItem.quantity) {
                    product.quantity -= cartItem.quantity; // Уменьшаем остаток товара
                    totalSold += cartItem.quantity;
                    totalRevenue += cartItem.quantity * cartItem.salePrice;
                    totalProfit += cartItem.quantity * (cartItem.salePrice - cartItem.purchasePrice);
                } else {
                    alert(`Недостаточно товара "${cartItem.name}" на складе.`);
                }
            });

            // Вычитаем скидку из прибыли
            totalProfit -= discount;

            // Сохраняем обновленные данные
            localStorage.setItem('products', JSON.stringify(products));
            localStorage.setItem('stats', JSON.stringify({ totalSold, totalRevenue, totalProfit }));
            localStorage.removeItem('cart');

            // Очищаем корзину и обновляем отображение
            cart = [];
            updateCartDisplay();
            productTable.innerHTML = '';
            loadProducts();
            updateStatsDisplay();

            // Сбрасываем поле скидки
            discountInput.value = '';

            // Закрываем модальное окно
            modal.style.display = 'none';
        };

        // Обработка отмены продажи
        document.getElementById('cancelSaleBtn').onclick = function () {
            modal.style.display = 'none';
        };

        // Закрытие модального окна при клике на крестик
        document.querySelector('.modal .close').onclick = function () {
            modal.style.display = 'none';
        };

        // Закрытие модального окна при клике вне его области
        window.onclick = function (event) {
            if (event.target === modal) {
                modal.style.display = 'none';
            }
        };
    };

    // Функция добавления остатков
    function addStock(productId) {
        const quantityToAdd = prompt('Введите количество для прихода:');
        if (quantityToAdd && !isNaN(quantityToAdd) && quantityToAdd > 0) {
            let products = JSON.parse(localStorage.getItem('products')) || [];
            const productIndex = products.findIndex(p => p.id === productId);

            if (productIndex !== -1) {
                products[productIndex].quantity += parseInt(quantityToAdd);
                localStorage.setItem('products', JSON.stringify(products));

                // Обновляем таблицу
                productTable.innerHTML = '';
                loadProducts();
            }
        } else {
            alert('Пожалуйста, введите корректное количество.');
        }
    }

    // Функция удаления товара
    function deleteProduct(productId) {
        if (confirm('Вы уверены, что хотите удалить этот товар?')) {
            let products = JSON.parse(localStorage.getItem('products')) || [];
            products = products.filter(p => p.id !== productId);
            localStorage.setItem('products', JSON.stringify(products));

            // Обновляем таблицу
            productTable.innerHTML = '';
            loadProducts();
        }
    }

    // Функция для переключения бургер-меню
    window.toggleMenu = function () {
        const menuItems = document.querySelector('.menu-items');
        menuItems.style.display = menuItems.style.display === 'block' ? 'none' : 'block';
    };

    // Функция для отображения выбранного раздела
    window.showSection = function (sectionId) {
        // Скрываем все колонки
        document.querySelectorAll('.column').forEach(column => {
            column.classList.remove('active');
        });

        // Показываем выбранную колонку
        document.getElementById(sectionId).classList.add('active');

        // Скрываем меню после выбора
        document.querySelector('.menu-items').style.display = 'none';
    };

    // Показываем Инвентарь по умолчанию
    showSection('inventory');
});