From 65ffed2f9bef50a7a947073dd79a1347eeb21c4b Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Thu, 11 Dec 2025 22:01:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BB=D0=BE=D0=BA=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8=20'?= =?UTF-8?q?=D0=9D=D0=90=20=D0=92=D0=98=D0=A2=D0=A0=D0=98=D0=9D=D0=A3'=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=BD=D0=B0=D0=BB=D0=B8=D1=87=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=B2=D0=B8=D1=82=D1=80=D0=B8=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BB=D0=B5=D0=BA=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=BE=D1=80=D0=B7=D0=B8=D0=BD=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлена проверка наличия витринных комплектов (showcase_kit) в корзине - Кнопка 'НА ВИТРИНУ' блокируется при наличии витринного букета - Добавлено визуальное оформление: opacity 0.5, disabled state, tooltip - Показывается предупреждение при попытке создать новый букет - Функция updateShowcaseButtonState() вызывается при каждом изменении корзины --- myproject/pos/static/pos/js/terminal.js | 54 ++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/myproject/pos/static/pos/js/terminal.js b/myproject/pos/static/pos/js/terminal.js index c2f4e1b..d291412 100644 --- a/myproject/pos/static/pos/js/terminal.js +++ b/myproject/pos/static/pos/js/terminal.js @@ -859,6 +859,7 @@ function renderCart() { if (cart.size === 0) { list.innerHTML = '

Корзина пуста

'; document.getElementById('cartTotal').textContent = '0.00'; + updateShowcaseButtonState(); // Обновляем состояние кнопки return; } @@ -974,6 +975,9 @@ function renderCart() { }); document.getElementById('cartTotal').textContent = formatMoney(total); + + // Обновляем состояние кнопки "НА ВИТРИНУ" + updateShowcaseButtonState(); } async function removeFromCart(cartKey) { @@ -1051,6 +1055,40 @@ async function clearCart() { document.getElementById('clearCart').onclick = clearCart; +/** + * Обновляет состояние кнопки "НА ВИТРИНУ" + * Блокирует кнопку если в корзине есть витринный комплект + */ +function updateShowcaseButtonState() { + const showcaseBtn = document.getElementById('addToShowcaseBtn'); + if (!showcaseBtn) return; + + // Проверяем наличие витринных комплектов в корзине + let hasShowcaseKit = false; + for (const [cartKey, item] of cart) { + if (item.type === 'showcase_kit') { + hasShowcaseKit = true; + break; + } + } + + if (hasShowcaseKit) { + // Блокируем кнопку + showcaseBtn.disabled = true; + showcaseBtn.classList.add('disabled'); + showcaseBtn.style.opacity = '0.5'; + showcaseBtn.style.cursor = 'not-allowed'; + showcaseBtn.title = '⚠️ В корзине уже есть витринный комплект. Удалите его перед созданием нового'; + } else { + // Разблокируем кнопку + showcaseBtn.disabled = false; + showcaseBtn.classList.remove('disabled'); + showcaseBtn.style.opacity = '1'; + showcaseBtn.style.cursor = 'pointer'; + showcaseBtn.title = 'Создать букет на витрину из текущей корзины'; + } +} + // Кнопка "На витрину" - функционал будет добавлен позже document.getElementById('addToShowcaseBtn').onclick = () => { openCreateTempKitModal(); @@ -1064,7 +1102,21 @@ async function openCreateTempKitModal() { return; } - // Проверяем что в корзине только товары (не комплекты) + // Проверяем что в корзине НЕТ витринных комплектов + let hasShowcaseKit = false; + for (const [cartKey, item] of cart) { + if (item.type === 'showcase_kit') { + hasShowcaseKit = true; + break; + } + } + + if (hasShowcaseKit) { + alert('⚠️ В корзине уже есть витринный комплект!\n\nНельзя создать новый букет на витрину, пока в корзине находится другой витринный букет.\n\nУдалите витринный букет из корзины или завершите текущую продажу.'); + return; + } + + // Проверяем что в корзине только товары (не обычные комплекты) let hasKits = false; for (const [cartKey, item] of cart) { if (item.type === 'kit') {