Исправлено извлечение ID товаров из API в форме поступления

Проблема:
- Поиск товаров возвращал пустые результаты
- API /products/api/search-products-variants/ возвращает ID в формате 'product_123'
- Форма incoming ожидает числовой ID (123)
- Select2 не мог сохранить значение из-за несовпадения формата

Решение:
- Добавлена функция processResults в AJAX настройках Select2
- Извлекаем числовой ID из строки 'product_123' -> '123'
- Обрабатываем как группированные результаты, так и плоские
- Сохраняем остальные поля (text, sku, price, actual_price)

Логика обработки:
1. Проверяем наличие children (группа)
2. Если группа - обрабатываем каждый item в children
3. Если плоский список - обрабатываем напрямую
4. Используем .replace('product_', '') для извлечения ID

Теперь Select2 корректно:
- Показывает список товаров
- Сохраняет выбранное значение
- Отправляет числовой ID в форму
This commit is contained in:
2025-12-01 10:31:25 +03:00
parent dc39f56b9a
commit c670406ae0

View File

@@ -233,8 +233,36 @@ document.addEventListener('DOMContentLoaded', function() {
};
},
processResults: function (data) {
// Преобразуем результаты: извлекаем числовые ID из 'product_123'
const processGroup = function(group) {
if (group.children) {
// Это группа - обрабатываем детей
return {
results: data.results,
text: group.text,
children: group.children.map(item => ({
id: item.id.replace('product_', ''), // Убираем префикс
text: item.text,
sku: item.sku,
price: item.price,
actual_price: item.actual_price
}))
};
} else {
// Это отдельный элемент
return {
id: group.id.replace('product_', ''),
text: group.text,
sku: group.sku,
price: group.price,
actual_price: group.actual_price
};
}
};
const processedResults = data.results.map(processGroup);
return {
results: processedResults,
pagination: {
more: data.pagination.more
}