diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index dedf67e..28509e9 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -1951,6 +1951,17 @@ document.addEventListener('DOMContentLoaded', function() { console.log(`[Order Items] πŸ’° ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ Ρ†Π΅Π½Π° сохранСна: ${item.actual_price}`); } + // Если это Ρ‚ΠΎΠ²Π°Ρ€ с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΈΡ… UI + if (type === 'product' && typeof window.loadAndDisplaySalesUnitsFromHidden === 'function') { + const form = selectElement.closest('.order-item-form'); + const salesUnitId = salesUnitField ? salesUnitField.value : null; + + if (salesUnitId) { + console.log(`[Order Items] πŸ“ Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ, сохранённая Π΅Π΄ΠΈΠ½ΠΈΡ†Π°: ${salesUnitId}`); + window.loadAndDisplaySalesUnitsFromHidden(id, form, item, salesUnitId); + } + } + console.log(`[Order Items] πŸŽ‰ Π’ΠΎΠ²Π°Ρ€ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½: ${optionText}`); // ΠŸΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ сумму Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² @@ -1975,6 +1986,87 @@ document.addEventListener('DOMContentLoaded', function() { console.log('[Order Items] Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°'); + /** + * Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ для Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ· Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ° + * @param {string} productId - ID Ρ‚ΠΎΠ²Π°Ρ€Π° + * @param {HTMLElement} form - Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Ρ„ΠΎΡ€ΠΌΡ‹ + * @param {Object} productData - Π”Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ²Π°Ρ€Π° + * @param {string} savedSalesUnitId - Π‘ΠΎΡ…Ρ€Π°Π½Ρ‘Π½Π½Ρ‹ΠΉ ID Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ + */ + window.loadAndDisplaySalesUnitsFromHidden = async function(productId, form, productData, savedSalesUnitId) { + console.log('[Sales Units] Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ для Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ· Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ°:', productId); + + // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ модуля + if (typeof window.SalesUnitsModule === 'undefined') { + console.warn('[Sales Units] SalesUnitsModule Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½'); + return; + } + + var salesUnitContainer = form.querySelector('.sales-unit-container'); + if (!salesUnitContainer) { + console.warn('[Sales Units] ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ .sales-unit-container Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½'); + return; + } + + // ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + salesUnitContainer.innerHTML = '
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°...
'; + salesUnitContainer.style.display = 'block'; + + try { + // Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ‡Π΅Ρ€Π΅Π· API + const result = await window.SalesUnitsModule.fetchSalesUnits(productId); + if (!result.success || !result.sales_units || result.sales_units.length === 0) { + salesUnitContainer.style.display = 'none'; + return; + } + + const salesUnits = result.sales_units; + console.log('[Sales Units] Π—Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†:', salesUnits.length); + + // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ select с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ + var selectHtml = window.SalesUnitsModule.createSalesUnitSelect(salesUnits); + salesUnitContainer.innerHTML = ` + + ${selectHtml} +
+ `; + salesUnitContainer.style.display = 'block'; + + // Находим созданный select ΠΈ скрытоС ΠΏΠΎΠ»Π΅ + var salesUnitSelect = salesUnitContainer.querySelector('.sales-unit-selector'); + var hiddenSalesUnitField = form.querySelector('[name$="-sales_unit"]'); + + if (salesUnitSelect && hiddenSalesUnitField) { + // Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ visible select с hidden field + salesUnitSelect.addEventListener('change', function() { + hiddenSalesUnitField.value = salesUnitSelect.value; + }); + + // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ + window.SalesUnitsModule.initializeSalesUnitHandlers(form); + + // УстанавливаСм ΡΠΎΡ…Ρ€Π°Π½Ρ‘Π½Π½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ + if (savedSalesUnitId) { + salesUnitSelect.value = savedSalesUnitId; + hiddenSalesUnitField.value = savedSalesUnitId; + salesUnitSelect.dispatchEvent(new Event('change')); + console.log('[Sales Units] УстановлСна сохранённая Π΅Π΄ΠΈΠ½ΠΈΡ†Π°:', savedSalesUnitId); + } else { + // УстанавливаСм Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ + const defaultUnit = salesUnits.find(u => u.is_default); + if (defaultUnit) { + salesUnitSelect.value = defaultUnit.id; + hiddenSalesUnitField.value = defaultUnit.id; + salesUnitSelect.dispatchEvent(new Event('change')); + } + } + } + } catch (error) { + console.error('[Sales Units] Ошибка Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ:', error); + salesUnitContainer.innerHTML = 'Ошибка Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ'; + } + }; + // ΠŸΠ΅Ρ€Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ для Ρ„ΠΎΡ€ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ MutationObserver для отслСТивания Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ if (typeof MutationObserver !== 'undefined') {