From f54363d1aeb8ec703e9ee96a6df26142c244f550 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Sun, 9 Nov 2025 17:32:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B0=20=D0=B2=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D1=83=D1=8E=D1=89=D1=83=D1=8E=20=D0=BF=D1=83=D1=81=D1=82?= =?UTF-8?q?=D1=83=D1=8E=20=D1=84=D0=BE=D1=80=D0=BC=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Временный комплект теперь заполняет первую пустую форму товара вместо создания новой. Это позволяет корректно сохранять комплект при автосохранении. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../orders/templates/orders/order_form.html | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index a4edb9c..d5795bd 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -779,32 +779,52 @@ document.addEventListener('DOMContentLoaded', function() { const modal = bootstrap.Modal.getInstance(tempKitModal); modal.hide(); - // Добавляем комплект в заказ через клик на кнопку добавления формы - const addButton = document.getElementById('add-item-btn'); - addButton.click(); + // Ищем существующую пустую форму или создаем новую + const forms = container.querySelectorAll('.order-item-form'); + let targetForm = null; - // Небольшая задержка, чтобы форма полностью добавилась - setTimeout(function() { - // Получаем последнюю добавленную форму - const forms = container.querySelectorAll('.order-item-form'); - const lastForm = forms[forms.length - 1]; + // Ищем первую пустую форму + for (const form of forms) { + const kitSelect = form.querySelector('.select2-order-item'); + if (kitSelect && !kitSelect.value) { + targetForm = form; + break; + } + } + // Если пустой формы нет, добавляем новую + if (!targetForm) { + const addButton = document.getElementById('add-item-btn'); + addButton.click(); + + // Небольшая задержка для создания формы + setTimeout(function() { + const allForms = container.querySelectorAll('.order-item-form'); + targetForm = allForms[allForms.length - 1]; + fillFormWithKit(targetForm, data); + }, 100); + } else { + fillFormWithKit(targetForm, data); + } + + // Функция заполнения формы данными комплекта + function fillFormWithKit(form, kitData) { // Устанавливаем значения для комплекта - const kitSelect = lastForm.querySelector('.select2-order-item'); - const quantityInput = lastForm.querySelector('[name$="-quantity"]'); - const priceInput = lastForm.querySelector('[name$="-price"]'); + const kitSelect = form.querySelector('.select2-order-item'); + const quantityInput = form.querySelector('[name$="-quantity"]'); + const priceInput = form.querySelector('[name$="-price"]'); // Используем Select2 API для добавления опции - const newOption = new Option(data.kit_name, `kit_${data.kit_id}`, true, true); + const newOption = new Option(kitData.kit_name, `kit_${kitData.kit_id}`, true, true); $(kitSelect).append(newOption).trigger('change'); // Устанавливаем количество и цену if (quantityInput) quantityInput.value = '1'; if (priceInput) { - priceInput.value = data.kit_price; - priceInput.dataset.originalPrice = data.kit_price; + priceInput.value = kitData.kit_price; + priceInput.dataset.originalPrice = kitData.kit_price; } - }, 100); + } // Очищаем форму модального окна document.getElementById('temp-kit-name').value = '';