Исправлена обработка ошибок при создании временного комплекта

- Перемещена функция fillFormWithKit в начало обработчика для правильного hoisting
- Добавлена валидация данных комплекта перед заполнением формы
- Добавлены проверки наличия элементов формы

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-09 19:32:20 +03:00
parent e8601e6c8d
commit 62115bbe00

View File

@@ -774,6 +774,47 @@ document.addEventListener('DOMContentLoaded', function() {
}) })
.then(data => { .then(data => {
console.log('Response data:', data); console.log('Response data:', data);
// Функция заполнения формы данными комплекта
function fillFormWithKit(form, kitData) {
if (!kitData || !kitData.kit_id || !kitData.kit_name || !kitData.kit_price) {
console.error('Invalid kit data:', kitData);
alert('Ошибка: неверные данные комплекта');
return;
}
// Устанавливаем значения для комплекта
const kitSelect = form.querySelector('.select2-order-item');
const quantityInput = form.querySelector('[name$="-quantity"]');
const priceInput = form.querySelector('[name$="-price"]');
if (!kitSelect) {
console.error('Kit select not found in form');
return;
}
// Используем Select2 API для добавления опции
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 = kitData.kit_price;
priceInput.dataset.originalPrice = kitData.kit_price;
}
// Явно вызываем событие select2:select для запуска автосохранения
$(kitSelect).trigger('select2:select', {
params: {
data: {
id: `kit_${kitData.kit_id}`,
text: kitData.kit_name
}
}
});
}
if (data.success) { if (data.success) {
// Закрываем модальное окно // Закрываем модальное окно
const modal = bootstrap.Modal.getInstance(tempKitModal); const modal = bootstrap.Modal.getInstance(tempKitModal);
@@ -807,35 +848,6 @@ document.addEventListener('DOMContentLoaded', function() {
fillFormWithKit(targetForm, data); fillFormWithKit(targetForm, data);
} }
// Функция заполнения формы данными комплекта
function fillFormWithKit(form, kitData) {
// Устанавливаем значения для комплекта
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(kitData.kit_name, `kit_${kitData.kit_id}`, true, true);
$(kitSelect).append(newOption).trigger('change');
// Устанавливаем количество и цену
if (quantityInput) quantityInput.value = '1';
if (priceInput) {
priceInput.value = kitData.kit_price;
priceInput.dataset.originalPrice = kitData.kit_price;
}
// Явно вызываем событие select2:select для запуска автосохранения
$(kitSelect).trigger('select2:select', {
params: {
data: {
id: `kit_${kitData.kit_id}`,
text: kitData.kit_name
}
}
});
}
// Очищаем форму модального окна // Очищаем форму модального окна
document.getElementById('temp-kit-name').value = ''; document.getElementById('temp-kit-name').value = '';
document.getElementById('temp-kit-description').value = ''; document.getElementById('temp-kit-description').value = '';