Удалены избыточные логи из order_form.html
- Убраны детальные console.log при загрузке товаров из черновика - Оставлены только критичные логи ошибок - Код стал чище и компактнее
This commit is contained in:
@@ -1842,6 +1842,16 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Если есть черновик из POS, ждём пока его поля будут заполнены
|
||||||
|
{% if draft_items_json %}
|
||||||
|
if (!window._draftFieldsFilled) {
|
||||||
|
console.log('[Order Items] ⏳ Ожидание заполнения полей черновика из POS...');
|
||||||
|
setTimeout(initExistingOrderItems, 50);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log('[Order Items] ✅ Поля черновика заполнены, продолжаем инициализацию');
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
// Все зависимости готовы
|
// Все зависимости готовы
|
||||||
console.log('[Order Items] Все зависимости готовы, запуск инициализации...');
|
console.log('[Order Items] Все зависимости готовы, запуск инициализации...');
|
||||||
const items = document.querySelectorAll('.select2-order-item');
|
const items = document.querySelectorAll('.select2-order-item');
|
||||||
@@ -1879,46 +1889,21 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
const kitField = form.querySelector('[name$="-product_kit"]');
|
const kitField = form.querySelector('[name$="-product_kit"]');
|
||||||
const priceField = form.querySelector('[name$="-price"]');
|
const priceField = form.querySelector('[name$="-price"]');
|
||||||
|
|
||||||
console.log(`[Order Items] 🔍 Форма ${index}:`);
|
|
||||||
console.log(` - productField найдено:`, !!productField);
|
|
||||||
console.log(` - productField.value:`, productField ? productField.value : 'N/A');
|
|
||||||
console.log(` - kitField найдено:`, !!kitField);
|
|
||||||
console.log(` - kitField.value:`, kitField ? kitField.value : 'N/A');
|
|
||||||
console.log(` - priceField найдено:`, !!priceField);
|
|
||||||
console.log(` - priceField.value:`, priceField ? priceField.value : 'N/A');
|
|
||||||
|
|
||||||
// Если есть предзаполненный product или kit, но select пустой
|
|
||||||
const hasProduct = productField && productField.value;
|
const hasProduct = productField && productField.value;
|
||||||
const hasKit = kitField && kitField.value;
|
const hasKit = kitField && kitField.value;
|
||||||
const selectValue = $(selectElement).val();
|
const selectValue = $(selectElement).val();
|
||||||
|
|
||||||
console.log(`[Order Items] 🎯 Проверка условий для формы ${index}:`);
|
|
||||||
console.log(` - hasProduct:`, hasProduct);
|
|
||||||
console.log(` - hasKit:`, hasKit);
|
|
||||||
console.log(` - selectValue:`, selectValue);
|
|
||||||
console.log(` - Нужна загрузка?`, (hasProduct || hasKit) && !selectValue);
|
|
||||||
|
|
||||||
if ((hasProduct || hasKit) && !selectValue) {
|
if ((hasProduct || hasKit) && !selectValue) {
|
||||||
console.log(`[Order Items] ⚡ НАЙДЕНЫ предзаполненные данные в форме ${index}!`);
|
|
||||||
|
|
||||||
// Определяем тип и ID
|
// Определяем тип и ID
|
||||||
const type = hasProduct ? 'product' : 'kit';
|
const type = hasProduct ? 'product' : 'kit';
|
||||||
const id = hasProduct ? productField.value : kitField.value;
|
const id = hasProduct ? productField.value : kitField.value;
|
||||||
const price = priceField ? priceField.value : '';
|
const price = priceField ? priceField.value : '';
|
||||||
|
|
||||||
console.log(`[Order Items] 📦 Загрузка товара:`);
|
|
||||||
console.log(` - Тип: ${type}`);
|
|
||||||
console.log(` - ID: ${id}`);
|
|
||||||
console.log(` - Цена: ${price}`);
|
|
||||||
|
|
||||||
// Загружаем данные товара через API
|
// Загружаем данные товара через API
|
||||||
const apiUrl = '{% url "products:api-search-products-variants" %}';
|
const apiUrl = '{% url "products:api-search-products-variants" %}';
|
||||||
const requestId = `${type}_${id}`;
|
const requestId = `${type}_${id}`;
|
||||||
|
|
||||||
console.log(`[Order Items] 🌐 Отправка AJAX запроса:`);
|
|
||||||
console.log(` - URL: ${apiUrl}`);
|
|
||||||
console.log(` - ID параметр: ${requestId}`);
|
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: apiUrl,
|
url: apiUrl,
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
@@ -1927,20 +1912,11 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
id: requestId
|
id: requestId
|
||||||
},
|
},
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
console.log(`[Order Items] ✅ Ответ API получен для формы ${index}:`, data);
|
|
||||||
|
|
||||||
if (data.results && data.results.length > 0) {
|
if (data.results && data.results.length > 0) {
|
||||||
const item = data.results[0];
|
const item = data.results[0];
|
||||||
console.log(`[Order Items] 📦 Данные товара:`, item);
|
|
||||||
|
|
||||||
// Создаём option с данными товара
|
|
||||||
const optionValue = `${type}_${id}`;
|
const optionValue = `${type}_${id}`;
|
||||||
const optionText = item.text || item.name || 'Товар';
|
const optionText = item.text || item.name || 'Товар';
|
||||||
|
|
||||||
console.log(`[Order Items] ➕ Создание option:`);
|
|
||||||
console.log(` - value: ${optionValue}`);
|
|
||||||
console.log(` - text: ${optionText}`);
|
|
||||||
|
|
||||||
// Добавляем option в select
|
// Добавляем option в select
|
||||||
const newOption = new Option(optionText, optionValue, true, true);
|
const newOption = new Option(optionText, optionValue, true, true);
|
||||||
$(selectElement).append(newOption).trigger('change');
|
$(selectElement).append(newOption).trigger('change');
|
||||||
@@ -1948,39 +1924,29 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
// Сохраняем оригинальную цену
|
// Сохраняем оригинальную цену
|
||||||
if (priceField && item.actual_price) {
|
if (priceField && item.actual_price) {
|
||||||
priceField.dataset.originalPrice = item.actual_price;
|
priceField.dataset.originalPrice = item.actual_price;
|
||||||
console.log(`[Order Items] 💰 Оригинальная цена сохранена: ${item.actual_price}`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Если это товар с единицами продажи, загружаем их UI
|
// Если это товар с единицами продажи, загружаем их UI
|
||||||
if (type === 'product' && typeof window.loadAndDisplaySalesUnitsFromHidden === 'function') {
|
if (type === 'product' && typeof window.loadAndDisplaySalesUnitsFromHidden === 'function') {
|
||||||
const form = selectElement.closest('.order-item-form');
|
const form = selectElement.closest('.order-item-form');
|
||||||
|
const salesUnitField = form.querySelector('[name$="-sales_unit"]');
|
||||||
const salesUnitId = salesUnitField ? salesUnitField.value : null;
|
const salesUnitId = salesUnitField ? salesUnitField.value : null;
|
||||||
|
|
||||||
if (salesUnitId) {
|
if (salesUnitId) {
|
||||||
console.log(`[Order Items] 📏 Загрузка единиц продажи, сохранённая единица: ${salesUnitId}`);
|
|
||||||
window.loadAndDisplaySalesUnitsFromHidden(id, form, item, salesUnitId);
|
window.loadAndDisplaySalesUnitsFromHidden(id, form, item, salesUnitId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`[Order Items] 🎉 Товар успешно загружен: ${optionText}`);
|
|
||||||
|
|
||||||
// Пересчитываем сумму товаров
|
// Пересчитываем сумму товаров
|
||||||
if (typeof window.updateOrderItemsTotal === 'function') {
|
if (typeof window.updateOrderItemsTotal === 'function') {
|
||||||
window.updateOrderItemsTotal();
|
window.updateOrderItemsTotal();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
console.warn(`[Order Items] ⚠️ API вернул пустой массив results`);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(xhr, status, error) {
|
error: function(xhr, status, error) {
|
||||||
console.error(`[Order Items] ❌ Ошибка AJAX запроса для формы ${index}:`);
|
console.error(`[Order Items] Ошибка загрузки товара ${requestId}:`, error);
|
||||||
console.error(` - Status: ${status}`);
|
|
||||||
console.error(` - Error: ${error}`);
|
|
||||||
console.error(` - Response:`, xhr.responseText);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
console.log(`[Order Items] ⏭️ Форма ${index} пропущена (нет данных или select уже заполнен)`);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1994,26 +1960,15 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
* @param {string} savedSalesUnitId - Сохранённый ID единицы продажи
|
* @param {string} savedSalesUnitId - Сохранённый ID единицы продажи
|
||||||
*/
|
*/
|
||||||
window.loadAndDisplaySalesUnitsFromHidden = async function(productId, form, productData, savedSalesUnitId) {
|
window.loadAndDisplaySalesUnitsFromHidden = async function(productId, form, productData, savedSalesUnitId) {
|
||||||
console.log('[Sales Units] Загрузка единиц продажи для товара из черновика:', productId);
|
if (typeof window.SalesUnitsModule === 'undefined') return;
|
||||||
|
|
||||||
// Проверяем наличие модуля
|
|
||||||
if (typeof window.SalesUnitsModule === 'undefined') {
|
|
||||||
console.warn('[Sales Units] SalesUnitsModule не загружен');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var salesUnitContainer = form.querySelector('.sales-unit-container');
|
var salesUnitContainer = form.querySelector('.sales-unit-container');
|
||||||
if (!salesUnitContainer) {
|
if (!salesUnitContainer) return;
|
||||||
console.warn('[Sales Units] Контейнер .sales-unit-container не найден');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Показываем индикатор загрузки
|
|
||||||
salesUnitContainer.innerHTML = '<div class="spinner-border spinner-border-sm" role="status"><span class="visually-hidden">Загрузка...</span></div>';
|
salesUnitContainer.innerHTML = '<div class="spinner-border spinner-border-sm" role="status"><span class="visually-hidden">Загрузка...</span></div>';
|
||||||
salesUnitContainer.style.display = 'block';
|
salesUnitContainer.style.display = 'block';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Загружаем единицы через API
|
|
||||||
const result = await window.SalesUnitsModule.fetchSalesUnits(productId);
|
const result = await window.SalesUnitsModule.fetchSalesUnits(productId);
|
||||||
if (!result.success || !result.sales_units || result.sales_units.length === 0) {
|
if (!result.success || !result.sales_units || result.sales_units.length === 0) {
|
||||||
salesUnitContainer.style.display = 'none';
|
salesUnitContainer.style.display = 'none';
|
||||||
@@ -2021,7 +1976,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const salesUnits = result.sales_units;
|
const salesUnits = result.sales_units;
|
||||||
console.log('[Sales Units] Загружено единиц:', salesUnits.length);
|
|
||||||
|
|
||||||
// Создаем select с единицами
|
// Создаем select с единицами
|
||||||
var selectHtml = window.SalesUnitsModule.createSalesUnitSelect(salesUnits);
|
var selectHtml = window.SalesUnitsModule.createSalesUnitSelect(salesUnits);
|
||||||
@@ -2050,7 +2004,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
salesUnitSelect.value = savedSalesUnitId;
|
salesUnitSelect.value = savedSalesUnitId;
|
||||||
hiddenSalesUnitField.value = savedSalesUnitId;
|
hiddenSalesUnitField.value = savedSalesUnitId;
|
||||||
salesUnitSelect.dispatchEvent(new Event('change'));
|
salesUnitSelect.dispatchEvent(new Event('change'));
|
||||||
console.log('[Sales Units] Установлена сохранённая единица:', savedSalesUnitId);
|
|
||||||
} else {
|
} else {
|
||||||
// Устанавливаем дефолтную единицу
|
// Устанавливаем дефолтную единицу
|
||||||
const defaultUnit = salesUnits.find(u => u.is_default);
|
const defaultUnit = salesUnits.find(u => u.is_default);
|
||||||
@@ -2184,13 +2137,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
|
|
||||||
console.log('[Draft Items] ✅ Все скрытые поля заполнены');
|
console.log('[Draft Items] ✅ Все скрытые поля заполнены');
|
||||||
|
|
||||||
// Триггерим переинициализацию Select2 чтобы он загрузил данные
|
// Устанавливаем флаг, что поля заполнены - initExistingOrderItems ждёт этот флаг
|
||||||
console.log('[Draft Items] 🔄 Триггер переинициализации Select2...');
|
window._draftFieldsFilled = true;
|
||||||
|
console.log('[Draft Items] 🚀 Флаг _draftFieldsFilled установлен, initExistingOrderItems может продолжить');
|
||||||
// Даём время на то, чтобы initExistingOrderItems увидел заполненные поля
|
|
||||||
setTimeout(() => {
|
|
||||||
console.log('[Draft Items] ✅ Готово к инициализации Select2');
|
|
||||||
}, 100);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Запускаем заполнение сразу при загрузке DOM
|
// Запускаем заполнение сразу при загрузке DOM
|
||||||
|
|||||||
Reference in New Issue
Block a user