From 8805e3ad4186ae8d58595d0459b28115b27d3cd7 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Mon, 8 Dec 2025 19:04:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B0=D0=B2=D1=82=D0=BE=D0=B7=D0=B0=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=B7=D0=BA=D0=B0=20=D1=82=D0=BE=D0=B2=D0=B0=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B2=20Select2=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B8=20=D0=B7=D0=B0=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D0=B0=20=D0=B8=D0=B7=20POS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orders/templates/orders/order_form.html | 60 ++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index 0812ad1..7880e83 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -2150,9 +2150,65 @@ if (!document.getElementById('notification-styles')) { const items = document.querySelectorAll('.select2-order-item'); console.log('[Order Items] Найдено элементов для инициализации:', items.length); - items.forEach((item, index) => { + items.forEach((selectElement, index) => { console.log(`[Order Items] Инициализация элемента ${index + 1}/${items.length}`); - window.initOrderItemSelect2(item); + + // Сначала инициализируем Select2 + window.initOrderItemSelect2(selectElement); + + // Затем проверяем, есть ли предзаполненные данные в скрытых полях + const form = selectElement.closest('.order-item-form'); + const productField = form.querySelector('[name$="-product"]'); + const kitField = form.querySelector('[name$="-product_kit"]'); + const priceField = form.querySelector('[name$="-price"]'); + + // Если есть предзаполненный product или kit, но select пустой + const hasProduct = productField && productField.value; + const hasKit = kitField && kitField.value; + const selectValue = $(selectElement).val(); + + if ((hasProduct || hasKit) && !selectValue) { + console.log(`[Order Items] Найдены предзаполненные данные в форме ${index}`); + + // Определяем тип и ID + const type = hasProduct ? 'product' : 'kit'; + const id = hasProduct ? productField.value : kitField.value; + const price = priceField ? priceField.value : ''; + + // Загружаем данные товара через API + const apiUrl = '{% url "products:api-search-products-variants" %}'; + $.ajax({ + url: apiUrl, + type: 'GET', + dataType: 'json', + data: { + id: `${type}_${id}` // Передаём в формате "product_123" или "kit_456" + }, + success: function(data) { + if (data.results && data.results.length > 0) { + const item = data.results[0]; + + // Создаём option с данными товара + const optionValue = `${type}_${id}`; + const optionText = item.text || item.name || 'Товар'; + + // Добавляем option в select + const newOption = new Option(optionText, optionValue, true, true); + $(selectElement).append(newOption).trigger('change'); + + // Сохраняем оригинальную цену + if (priceField && item.actual_price) { + priceField.dataset.originalPrice = item.actual_price; + } + + console.log(`[Order Items] Товар загружен: ${optionText}`); + } + }, + error: function(xhr, status, error) { + console.error(`[Order Items] Ошибка загрузки товара:`, error); + } + }); + } }); console.log('[Order Items] Инициализация всех существующих элементов завершена');