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 contextMenu = document.getElementById('contextMenu'); let totalSold = 0; // Общее количество проданных товаров let totalRevenue = 0; // Общая выручка let cart = []; // Корзина let selectedProductId = null; // ID выбранного товара // Загрузка данных из 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); if (productName && !isNaN(purchasePrice) && !isNaN(salePrice) && !isNaN(quantity)) { addProduct(productName, purchasePrice, salePrice, quantity); 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 row = e.target.closest('tr'); if (row) { selectedProductId = parseInt(row.getAttribute('data-id')); const rect = row.getBoundingClientRect(); contextMenu.style.display = 'block'; contextMenu.style.top = `${rect.bottom}px`; contextMenu.style.left = `${rect.left}px`; } }); // Закрытие контекстного меню при клике вне его document.addEventListener('click', function (e) { if (!contextMenu.contains(e.target) && !e.target.closest('tr')) { contextMenu.style.display = 'none'; } }); // Функция добавления товара function addProduct(name, purchasePrice, salePrice, quantity) { const product = { id: Date.now(), // Уникальный ID на основе времени name, purchasePrice, salePrice, quantity }; // Получаем текущие товары из 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 = ` ${product.name} ${product.purchasePrice} ${product.salePrice} ${product.quantity} `; } // Функция загрузки товаров из 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 }; totalSold = stats.totalSold; totalRevenue = stats.totalRevenue; updateStatsDisplay(); } // Функция загрузки корзины из localStorage function loadCart() { cart = JSON.parse(localStorage.getItem('cart')) || []; updateCartDisplay(); } // Функция обновления отображения статистики function updateStatsDisplay() { totalSoldElement.textContent = totalSold; totalRevenueElement.textContent = totalRevenue.toFixed(2); } // Функция обновления отображения корзины function updateCartDisplay() { cartTable.innerHTML = ''; // Очищаем корзину перед обновлением cart.forEach(item => { const row = cartTable.insertRow(); row.innerHTML = ` ${item.name} ${item.quantity} ${item.salePrice} ${item.quantity * item.salePrice} `; }); } // Обработчик добавления в корзину window.handleAddToCart = function () { const quantity = prompt('Введите количество для добавления в корзину:'); if (quantity && !isNaN(quantity) && quantity > 0) { const products = JSON.parse(localStorage.getItem('products')) || []; const product = products.find(p => p.id === selectedProductId); if (product && product.quantity >= quantity) { const cartItem = cart.find(item => item.id === selectedProductId); if (cartItem) { cartItem.quantity += parseInt(quantity); } else { cart.push({ id: selectedProductId, name: product.name, salePrice: product.salePrice, quantity: parseInt(quantity) }); } localStorage.setItem('cart', JSON.stringify(cart)); updateCartDisplay(); } else { alert('Недостаточно товара на складе.'); } } else { alert('Пожалуйста, введите корректное количество.'); } contextMenu.style.display = 'none'; }; // Обработчик прихода товара window.handleAddStock = function () { const quantityToAdd = prompt('Введите количество для прихода:'); if (quantityToAdd && !isNaN(quantityToAdd) && quantityToAdd > 0) { let products = JSON.parse(localStorage.getItem('products')) || []; const productIndex = products.findIndex(p => p.id === selectedProductId); if (productIndex !== -1) { products[productIndex].quantity += parseInt(quantityToAdd); localStorage.setItem('products', JSON.stringify(products)); // Обновляем таблицу productTable.innerHTML = ''; loadProducts(); } } else { alert('Пожалуйста, введите корректное количество.'); } contextMenu.style.display = 'none'; }; // Обработчик удаления товара window.handleDeleteProduct = function () { if (confirm('Вы уверены, что хотите удалить этот товар?')) { let products = JSON.parse(localStorage.getItem('products')) || []; products = products.filter(p => p.id !== selectedProductId); localStorage.setItem('products', JSON.stringify(products)); // Обновляем таблицу productTable.innerHTML = ''; loadProducts(); } contextMenu.style.display = 'none'; }; // Функция удаления товара из корзины window.removeFromCart = function (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 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; } else { alert(`Недостаточно товара "${cartItem.name}" на складе.`); } }); localStorage.setItem('products', JSON.stringify(products)); localStorage.setItem('stats', JSON.stringify({ totalSold, totalRevenue })); localStorage.removeItem('cart'); cart = []; updateCartDisplay(); productTable.innerHTML = ''; loadProducts(); updateStatsDisplay(); }; });