Spaces:
Running
Running
document.addEventListener('DOMContentLoaded', function () { | |
const productForm = document.getElementById('productForm'); | |
const productTable = document.getElementById('productTable').getElementsByTagName('tbody')[0]; | |
const searchInput = document.getElementById('searchInput'); | |
const totalSoldElement = document.getElementById('totalSold'); | |
const totalRevenueElement = document.getElementById('totalRevenue'); | |
let totalSold = 0; // Общее количество проданных товаров | |
let totalRevenue = 0; // Общая выручка | |
// Загрузка данных из localStorage при загрузке страницы | |
loadProducts(); | |
loadStats(); | |
// Обработка добавления товара | |
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'; | |
} | |
} | |
}); | |
// Функция добавления товара | |
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 = ` | |
<td>${product.name}</td> | |
<td>${product.purchasePrice}</td> | |
<td>${product.salePrice}</td> | |
<td>${product.quantity}</td> | |
<td class="actions"> | |
<button class="sell-btn" onclick="sellProduct(${product.id})">Продать</button> | |
<button class="add-stock-btn" onclick="addStock(${product.id})">Приход</button> | |
<button class="delete-btn" onclick="deleteProduct(${product.id})">Удалить</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 }; | |
totalSold = stats.totalSold; | |
totalRevenue = stats.totalRevenue; | |
updateStatsDisplay(); | |
} | |
// Функция обновления отображения статистики | |
function updateStatsDisplay() { | |
totalSoldElement.textContent = totalSold; | |
totalRevenueElement.textContent = totalRevenue.toFixed(2); | |
} | |
// Функция продажи товара | |
window.sellProduct = function (productId) { | |
let products = JSON.parse(localStorage.getItem('products')) || []; | |
const productIndex = products.findIndex(p => p.id === productId); | |
if (productIndex !== -1 && products[productIndex].quantity > 0) { | |
products[productIndex].quantity -= 1; // Уменьшаем количество на 1 | |
totalSold += 1; // Увеличиваем общее количество проданных товаров | |
totalRevenue += products[productIndex].salePrice; // Увеличиваем общую выручку | |
// Сохраняем обновленные данные | |
localStorage.setItem('products', JSON.stringify(products)); | |
localStorage.setItem('stats', JSON.stringify({ totalSold, totalRevenue })); | |
// Обновляем таблицу и статистику | |
productTable.innerHTML = ''; | |
loadProducts(); | |
updateStatsDisplay(); | |
} else { | |
alert('Товар закончился на складе.'); | |
} | |
}; | |
// Функция добавления остатков | |
window.addStock = function (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('Пожалуйста, введите корректное количество.'); | |
} | |
}; | |
// Функция удаления товара | |
window.deleteProduct = function (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(); | |
} | |
}; | |
}); |