From b31961f9399ddbb81ab052429747b42e0a25db29 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Sun, 18 Jan 2026 18:45:34 +0300 Subject: [PATCH] feat: add order form template HTML. --- .../orders/templates/orders/order_form.html | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index 8288b7e..01509e0 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -1877,7 +1877,7 @@ document.addEventListener('DOMContentLoaded', function() { // Функция заполнения формы данными комплекта function fillFormWithKit(form, kitData) { - if (!kitData || !kitData.kit_id || !kitData.kit_name || !kitData.kit_price) { + if (!kitData || !kitData.kit_id || !kitData.kit_name || kitData.kit_price === undefined) { console.error('Invalid kit data:', kitData); alert('Ошибка: неверные данные комплекта'); return; @@ -1887,6 +1887,11 @@ document.addEventListener('DOMContentLoaded', function() { const kitSelect = form.querySelector('.select2-order-item'); const quantityInput = form.querySelector('[name$="-quantity"]'); const priceInput = form.querySelector('[name$="-price"]'); + + // ВАЖНО: Находим скрытые поля для product и product_kit + const productField = form.querySelector('[name$="-product"]'); + const kitField = form.querySelector('[name$="-product_kit"]'); + const isCustomPriceField = form.querySelector('[name$="-is_custom_price"]'); if (!kitSelect) { console.error('Kit select not found in form'); @@ -1895,7 +1900,17 @@ document.addEventListener('DOMContentLoaded', function() { // Используем Select2 API для добавления опции const newOption = new Option(kitData.kit_name, `kit_${kitData.kit_id}`, true, true); - $(kitSelect).append(newOption); + $(kitSelect).append(newOption).trigger('change'); + + // КЛЮЧЕВОЕ ИСПРАВЛЕНИЕ: Устанавливаем скрытые поля напрямую + // Это комплект, поэтому очищаем product и устанавливаем product_kit + if (productField) productField.value = ''; + if (kitField) kitField.value = kitData.kit_id; + + console.log('[fillFormWithKit] Установлены скрытые поля:', { + product: productField ? productField.value : 'not found', + product_kit: kitField ? kitField.value : 'not found' + }); // Устанавливаем количество и цену if (quantityInput) quantityInput.value = '1'; @@ -1903,6 +1918,22 @@ document.addEventListener('DOMContentLoaded', function() { priceInput.value = kitData.kit_price; priceInput.dataset.originalPrice = kitData.kit_price; } + + // Сбрасываем флаг кастомной цены + if (isCustomPriceField) { + isCustomPriceField.value = 'false'; + } + + // Скрываем единицы продажи для комплектов (у комплектов их нет) + const salesUnitContainer = form.querySelector('.sales-unit-container'); + if (salesUnitContainer) { + salesUnitContainer.style.display = 'none'; + } + + // Обновляем сумму товаров + if (typeof window.updateOrderItemsTotal === 'function') { + window.updateOrderItemsTotal(); + } // Явно вызываем событие select2:select для запуска автосохранения $(kitSelect).trigger('select2:select', {