Spaces:
Running
Running
Update script.js
Browse files
script.js
CHANGED
@@ -5,13 +5,10 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
5 |
const cartTable = document.getElementById('cartTable').getElementsByTagName('tbody')[0];
|
6 |
const totalSoldElement = document.getElementById('totalSold');
|
7 |
const totalRevenueElement = document.getElementById('totalRevenue');
|
8 |
-
const modal = document.getElementById('modal');
|
9 |
-
const closeModal = document.querySelector('.close');
|
10 |
|
11 |
let totalSold = 0; // Общее количество проданных товаров
|
12 |
let totalRevenue = 0; // Общая выручка
|
13 |
let cart = []; // Корзина
|
14 |
-
let selectedProductId = null; // ID выбранного товара
|
15 |
|
16 |
// Загрузка данных из localStorage при загрузке страницы
|
17 |
loadProducts();
|
@@ -48,27 +45,6 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
48 |
}
|
49 |
});
|
50 |
|
51 |
-
// Открытие модального окна при клике на товар
|
52 |
-
productTable.addEventListener('click', function (e) {
|
53 |
-
const row = e.target.closest('tr');
|
54 |
-
if (row) {
|
55 |
-
selectedProductId = parseInt(row.getAttribute('data-id'));
|
56 |
-
modal.style.display = 'flex';
|
57 |
-
}
|
58 |
-
});
|
59 |
-
|
60 |
-
// Закрытие модального окна
|
61 |
-
closeModal.addEventListener('click', function () {
|
62 |
-
modal.style.display = 'none';
|
63 |
-
});
|
64 |
-
|
65 |
-
// Закрытие модального окна при клике вне его
|
66 |
-
window.addEventListener('click', function (e) {
|
67 |
-
if (e.target === modal) {
|
68 |
-
modal.style.display = 'none';
|
69 |
-
}
|
70 |
-
});
|
71 |
-
|
72 |
// Функция добавления товара
|
73 |
function addProduct(name, purchasePrice, salePrice, quantity) {
|
74 |
const product = {
|
@@ -98,6 +74,12 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
98 |
<td>${product.purchasePrice}</td>
|
99 |
<td>${product.salePrice}</td>
|
100 |
<td>${product.quantity}</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
`;
|
102 |
}
|
103 |
|
@@ -143,24 +125,26 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
143 |
});
|
144 |
}
|
145 |
|
146 |
-
//
|
147 |
-
window.
|
148 |
-
const
|
149 |
-
|
|
|
|
|
150 |
const products = JSON.parse(localStorage.getItem('products')) || [];
|
151 |
-
const product = products.find(p => p.id ===
|
152 |
|
153 |
if (product && product.quantity >= quantity) {
|
154 |
-
const cartItem = cart.find(item => item.id ===
|
155 |
|
156 |
if (cartItem) {
|
157 |
-
cartItem.quantity +=
|
158 |
} else {
|
159 |
cart.push({
|
160 |
-
id:
|
161 |
name: product.name,
|
162 |
salePrice: product.salePrice,
|
163 |
-
quantity:
|
164 |
});
|
165 |
}
|
166 |
|
@@ -172,12 +156,77 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
172 |
} else {
|
173 |
alert('Пожалуйста, введите корректное количество.');
|
174 |
}
|
175 |
-
modal.style.display = 'none';
|
176 |
};
|
177 |
|
178 |
-
//
|
179 |
-
window.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
const quantityToAdd = prompt('Введите количество для прихода:');
|
181 |
if (quantityToAdd && !isNaN(quantityToAdd) && quantityToAdd > 0) {
|
182 |
let products = JSON.parse(localStorage.getItem('products')) || [];
|
183 |
-
const productIndex = products.findIndex(p =>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
const cartTable = document.getElementById('cartTable').getElementsByTagName('tbody')[0];
|
6 |
const totalSoldElement = document.getElementById('totalSold');
|
7 |
const totalRevenueElement = document.getElementById('totalRevenue');
|
|
|
|
|
8 |
|
9 |
let totalSold = 0; // Общее количество проданных товаров
|
10 |
let totalRevenue = 0; // Общая выручка
|
11 |
let cart = []; // Корзина
|
|
|
12 |
|
13 |
// Загрузка данных из localStorage при загрузке страницы
|
14 |
loadProducts();
|
|
|
45 |
}
|
46 |
});
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
// Функция добавления товара
|
49 |
function addProduct(name, purchasePrice, salePrice, quantity) {
|
50 |
const product = {
|
|
|
74 |
<td>${product.purchasePrice}</td>
|
75 |
<td>${product.salePrice}</td>
|
76 |
<td>${product.quantity}</td>
|
77 |
+
<td class="actions">
|
78 |
+
<input type="number" min="1" max="${product.quantity}" class="quantity-input" placeholder="Количество">
|
79 |
+
<button class="add-to-cart-btn" onclick="addToCart(${product.id})">Добавить в корзину</button>
|
80 |
+
<button class="add-stock-btn" onclick="addStock(${product.id})">Приход</button>
|
81 |
+
<button class="delete-btn" onclick="deleteProduct(${product.id})">Удалить</button>
|
82 |
+
</td>
|
83 |
`;
|
84 |
}
|
85 |
|
|
|
125 |
});
|
126 |
}
|
127 |
|
128 |
+
// Функция добавления товара в корзину
|
129 |
+
window.addToCart = function (productId) {
|
130 |
+
const quantityInput = document.querySelector(`tr[data-id="${productId}"] .quantity-input`);
|
131 |
+
const quantity = parseInt(quantityInput.value);
|
132 |
+
|
133 |
+
if (quantity && quantity > 0) {
|
134 |
const products = JSON.parse(localStorage.getItem('products')) || [];
|
135 |
+
const product = products.find(p => p.id === productId);
|
136 |
|
137 |
if (product && product.quantity >= quantity) {
|
138 |
+
const cartItem = cart.find(item => item.id === productId);
|
139 |
|
140 |
if (cartItem) {
|
141 |
+
cartItem.quantity += quantity;
|
142 |
} else {
|
143 |
cart.push({
|
144 |
+
id: productId,
|
145 |
name: product.name,
|
146 |
salePrice: product.salePrice,
|
147 |
+
quantity: quantity
|
148 |
});
|
149 |
}
|
150 |
|
|
|
156 |
} else {
|
157 |
alert('Пожалуйста, введите корректное количество.');
|
158 |
}
|
|
|
159 |
};
|
160 |
|
161 |
+
// Функция удаления товара из корзины
|
162 |
+
window.removeFromCart = function (productId) {
|
163 |
+
cart = cart.filter(item => item.id !== productId);
|
164 |
+
localStorage.setItem('cart', JSON.stringify(cart));
|
165 |
+
updateCartDisplay();
|
166 |
+
};
|
167 |
+
|
168 |
+
// Функция продажи товаров из корзины
|
169 |
+
window.sellCart = function () {
|
170 |
+
if (cart.length === 0) {
|
171 |
+
alert('Корзина пуста.');
|
172 |
+
return;
|
173 |
+
}
|
174 |
+
|
175 |
+
const products = JSON.parse(localStorage.getItem('products')) || [];
|
176 |
+
|
177 |
+
cart.forEach(cartItem => {
|
178 |
+
const product = products.find(p => p.id === cartItem.id);
|
179 |
+
|
180 |
+
if (product && product.quantity >= cartItem.quantity) {
|
181 |
+
product.quantity -= cartItem.quantity;
|
182 |
+
totalSold += cartItem.quantity;
|
183 |
+
totalRevenue += cartItem.quantity * cartItem.salePrice;
|
184 |
+
} else {
|
185 |
+
alert(`Недостаточно товара "${cartItem.name}" на складе.`);
|
186 |
+
}
|
187 |
+
});
|
188 |
+
|
189 |
+
localStorage.setItem('products', JSON.stringify(products));
|
190 |
+
localStorage.setItem('stats', JSON.stringify({ totalSold, totalRevenue }));
|
191 |
+
localStorage.removeItem('cart');
|
192 |
+
|
193 |
+
cart = [];
|
194 |
+
updateCartDisplay();
|
195 |
+
productTable.innerHTML = '';
|
196 |
+
loadProducts();
|
197 |
+
updateStatsDisplay();
|
198 |
+
};
|
199 |
+
|
200 |
+
// Функция добавления остатков
|
201 |
+
window.addStock = function (productId) {
|
202 |
const quantityToAdd = prompt('Введите количество для прихода:');
|
203 |
if (quantityToAdd && !isNaN(quantityToAdd) && quantityToAdd > 0) {
|
204 |
let products = JSON.parse(localStorage.getItem('products')) || [];
|
205 |
+
const productIndex = products.findIndex(p => p.id === productId);
|
206 |
+
|
207 |
+
if (productIndex !== -1) {
|
208 |
+
products[productIndex].quantity += parseInt(quantityToAdd);
|
209 |
+
localStorage.setItem('products', JSON.stringify(products));
|
210 |
+
|
211 |
+
// Обновляем таблицу
|
212 |
+
productTable.innerHTML = '';
|
213 |
+
loadProducts();
|
214 |
+
}
|
215 |
+
} else {
|
216 |
+
alert('Пожалуйста, введите корректное количество.');
|
217 |
+
}
|
218 |
+
};
|
219 |
+
|
220 |
+
// Функция удаления товара
|
221 |
+
window.deleteProduct = function (productId) {
|
222 |
+
if (confirm('Вы уверены, что хотите удалить этот товар?')) {
|
223 |
+
let products = JSON.parse(localStorage.getItem('products')) || [];
|
224 |
+
products = products.filter(p => p.id !== productId);
|
225 |
+
localStorage.setItem('products', JSON.stringify(products));
|
226 |
+
|
227 |
+
// Обновляем таблицу
|
228 |
+
productTable.innerHTML = '';
|
229 |
+
loadProducts();
|
230 |
+
}
|
231 |
+
};
|
232 |
+
});
|