diff --git a/myproject/pos/static/pos/js/terminal.js b/myproject/pos/static/pos/js/terminal.js index 255ed0a..6c95ff7 100644 --- a/myproject/pos/static/pos/js/terminal.js +++ b/myproject/pos/static/pos/js/terminal.js @@ -2,7 +2,7 @@ const CATEGORIES = JSON.parse(document.getElementById('categoriesData').textContent); const ITEMS = JSON.parse(document.getElementById('itemsData').textContent); // Единый массив товаров и комплектов -const SHOWCASE_KITS = JSON.parse(document.getElementById('showcaseKitsData').textContent); // Витринные комплекты +let showcaseKits = JSON.parse(document.getElementById('showcaseKitsData').textContent); // Витринные комплекты (изменяемый) let currentCategoryId = null; let isShowcaseView = false; // Флаг режима просмотра витринных букетов @@ -23,9 +23,10 @@ function renderCategories() { showcaseCard.className = 'card category-card showcase-card' + (isShowcaseView ? ' active' : ''); showcaseCard.style.backgroundColor = '#fff3cd'; showcaseCard.style.borderColor = '#ffc107'; - showcaseCard.onclick = () => { + showcaseCard.onclick = async () => { isShowcaseView = true; currentCategoryId = null; + await refreshShowcaseKits(); // Загружаем свежие данные renderCategories(); renderProducts(); }; @@ -97,7 +98,7 @@ function renderProducts() { // Если выбран режим витрины - показываем витринные комплекты if (isShowcaseView) { - filtered = SHOWCASE_KITS; + filtered = showcaseKits; // Используем изменяемую переменную } else { // Обычный режим - показываем товары и комплекты filtered = currentCategoryId @@ -334,6 +335,22 @@ async function openCreateTempKitModal() { modal.show(); } +// Обновление списка витринных комплектов +async function refreshShowcaseKits() { + try { + const response = await fetch('/pos/api/showcase-kits/'); + const data = await response.json(); + + if (data.success) { + showcaseKits = data.items; + } else { + console.error('Failed to refresh showcase kits:', data); + } + } catch (error) { + console.error('Error refreshing showcase kits:', error); + } +} + // Загрузка списка витрин async function loadShowcases() { try { @@ -344,12 +361,24 @@ async function loadShowcases() { select.innerHTML = ''; if (data.success && data.showcases.length > 0) { + let defaultShowcaseId = null; + data.showcases.forEach(showcase => { const option = document.createElement('option'); option.value = showcase.id; option.textContent = `${showcase.name} (${showcase.warehouse_name})`; select.appendChild(option); + + // Запоминаем витрину склада по умолчанию + if (showcase.is_default_warehouse) { + defaultShowcaseId = showcase.id; + } }); + + // Автовыбор витрины склада по умолчанию + if (defaultShowcaseId) { + select.value = defaultShowcaseId; + } } else { select.innerHTML = ''; } @@ -371,15 +400,15 @@ function renderTempKitItems() { if (item.type !== 'product') return; const itemDiv = document.createElement('div'); - itemDiv.className = 'd-flex justify-content-between align-items-center mb-2 pb-2 border-bottom'; + itemDiv.className = 'd-flex justify-content-between align-items-center mb-1 pb-1 border-bottom'; itemDiv.innerHTML = `