diff --git a/myproject/pos/static/pos/js/terminal.js b/myproject/pos/static/pos/js/terminal.js index 5e58297..c7c01c3 100644 --- a/myproject/pos/static/pos/js/terminal.js +++ b/myproject/pos/static/pos/js/terminal.js @@ -1354,9 +1354,44 @@ async function openEditKitModal(kitId) { document.getElementById('createTempKitModalLabel').textContent = 'Редактирование витринного букета'; document.getElementById('confirmCreateTempKit').textContent = 'Сохранить изменения'; - // Показываем кнопку "Разобрать" и скрываем поле "Количество букетов" в режиме редактирования + // Показываем кнопку "Разобрать" и блок добавления товаров document.getElementById('disassembleKitBtn').style.display = 'block'; document.getElementById('showcaseKitQuantityBlock').style.display = 'none'; + document.getElementById('addProductBlock').style.display = 'block'; + + // Инициализируем компонент поиска товаров + setTimeout(() => { + if (window.ProductSearchPicker) { + const picker = ProductSearchPicker.init('#temp-kit-product-picker', { + onAddSelected: function(product, instance) { + if (product) { + // Добавляем товар в tempCart + const cartKey = `product-${product.id}`; + if (tempCart.has(cartKey)) { + // Увеличиваем количество + const existing = tempCart.get(cartKey); + existing.qty += 1; + } else { + // Добавляем новый товар + tempCart.set(cartKey, { + id: product.id, + name: product.text || product.name, + price: Number(product.price || 0), + qty: 1, + type: 'product' + }); + } + + // Обновляем отображение + renderTempKitItems(); + + // Очищаем выбор в пикере + instance.clearSelection(); + } + } + }); + } + }, 100); // Открываем модальное окно const modal = new bootstrap.Modal(document.getElementById('createTempKitModal')); @@ -1886,9 +1921,10 @@ document.getElementById('createTempKitModal').addEventListener('hidden.bs.modal' document.getElementById('createTempKitModalLabel').textContent = 'Создать витринный букет из корзины'; document.getElementById('confirmCreateTempKit').innerHTML = ' Создать и зарезервировать'; - // Скрываем кнопку "Разобрать" и показываем поле "Количество букетов" + // Скрываем кнопку "Разобрать" и блок добавления товаров document.getElementById('disassembleKitBtn').style.display = 'none'; document.getElementById('showcaseKitQuantityBlock').style.display = 'block'; + document.getElementById('addProductBlock').style.display = 'none'; } }); diff --git a/myproject/pos/templates/pos/terminal.html b/myproject/pos/templates/pos/terminal.html index ae3687c..4fffa00 100644 --- a/myproject/pos/templates/pos/terminal.html +++ b/myproject/pos/templates/pos/terminal.html @@ -4,6 +4,7 @@ {% block extra_css %} + {% endblock %} {% block content %} @@ -186,6 +187,20 @@ + + +
@@ -484,5 +499,6 @@ } + {% endblock %} diff --git a/myproject/pos/views.py b/myproject/pos/views.py index 7b070db..fcd9d4e 100644 --- a/myproject/pos/views.py +++ b/myproject/pos/views.py @@ -270,6 +270,7 @@ def pos_terminal(request): 'categories_json': json.dumps(categories), 'items_json': json.dumps([]), # Пустой массив - загрузка по API при клике на категорию 'showcase_kits_json': json.dumps([]), # Пустой массив - загрузка по API + 'categories': categories_qs, # QuerySet для компонента product_search_picker 'current_warehouse': { 'id': current_warehouse.id, 'name': current_warehouse.name