From 72a0397a4f1a8b10292abc06338664bdaaa7213d Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Sat, 8 Nov 2025 16:23:32 +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=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BF=D0=BB=D0=B5=D0=BA=D1=82=D0=B0=20=D0=B8=D0=B7=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BE=D0=BA=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Проблема: - JavaScript вызывал несуществующую функцию addOrderItem() - Это приводило к ошибке и комплект не добавлялся в заказ Решение: - Заменен вызов addOrderItem() на программный клик по кнопке добавления формы - После добавления формы заполняем её данными созданного комплекта - Добавлена очистка формы модального окна после успешного создания - Улучшена обработка ошибок с детальным логированием Изменения: - Добавлено логирование статуса ответа и данных для отладки - Добавлена проверка HTTP статуса перед парсингом JSON - Реализовано корректное добавление комплекта в список позиций заказа - Добавлена очистка полей модального окна после создания 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../orders/templates/orders/order_form.html | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index 9d737cd..ab8a2b7 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -672,15 +672,52 @@ document.addEventListener('DOMContentLoaded', function() { components: components }) }) - .then(response => response.json()) + .then(response => { + console.log('Response status:', response.status); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.json(); + }) .then(data => { + console.log('Response data:', data); if (data.success) { // Закрываем модальное окно const modal = bootstrap.Modal.getInstance(tempKitModal); modal.hide(); - // Добавляем созданный комплект в форму заказа - addOrderItem(`kit_${data.kit_id}`, 'kit', data.kit_name, data.kit_price, 1); + // Добавляем комплект в заказ через клик на кнопку добавления формы + const addButton = document.getElementById('add-order-item-btn'); + addButton.click(); + + // Получаем последнюю добавленную форму + const forms = container.querySelectorAll('.order-item-form'); + const lastForm = forms[forms.length - 1]; + + // Устанавливаем значения для комплекта + const kitSelect = lastForm.querySelector('.select2-order-item'); + const quantityInput = lastForm.querySelector('[name$="-quantity"]'); + const priceInput = lastForm.querySelector('[name$="-price"]'); + + // Добавляем опцию в select + const option = new Option(data.kit_name, `kit_${data.kit_id}`, true, true); + kitSelect.appendChild(option); + + // Триггерим изменение для Select2 + $(kitSelect).trigger('change'); + + // Устанавливаем количество и цену + if (quantityInput) quantityInput.value = '1'; + if (priceInput) { + priceInput.value = data.kit_price; + priceInput.dataset.originalPrice = data.kit_price; + } + + // Очищаем форму модального окна + document.getElementById('temp-kit-name').value = ''; + document.getElementById('temp-kit-description').value = ''; + tempKitComponentsContainer.innerHTML = ''; + tempKitComponentIndex = 0; // Показываем успешное сообщение alert(`Комплект "${data.kit_name}" создан и добавлен в заказ!`); @@ -689,8 +726,9 @@ document.addEventListener('DOMContentLoaded', function() { } }) .catch(error => { - console.error('Error:', error); - alert('Произошла ошибка при создании комплекта'); + console.error('Full error:', error); + console.error('Error message:', error.message); + alert('Произошла ошибка при создании комплекта: ' + error.message); }); }); });