diff --git a/myproject/orders/forms.py b/myproject/orders/forms.py index 7fd104b..bd52222 100644 --- a/myproject/orders/forms.py +++ b/myproject/orders/forms.py @@ -456,7 +456,7 @@ class OrderItemForm(forms.ModelForm): class Meta: model = OrderItem - fields = ['product', 'product_kit', 'sales_unit', 'quantity', 'price', 'is_custom_price'] + fields = ['product', 'product_kit', 'sales_unit', 'quantity', 'price', 'is_custom_price', 'is_from_showcase'] # ВАЖНО: НЕ включаем 'id' в fields - это предотвращает ошибку валидации widgets = { 'quantity': forms.NumberInput(attrs={'min': 1, 'value': 1}), @@ -465,6 +465,7 @@ class OrderItemForm(forms.ModelForm): 'product_kit': forms.HiddenInput(), 'sales_unit': forms.HiddenInput(), # Управляется через JS 'is_custom_price': forms.HiddenInput(), + 'is_from_showcase': forms.HiddenInput(), # Устанавливается через JS для showcase_kit } def __init__(self, *args, **kwargs): @@ -491,6 +492,9 @@ class OrderItemForm(forms.ModelForm): # Поле is_custom_price устанавливается через JS self.fields['is_custom_price'].required = False + + # Поле is_from_showcase устанавливается через JS для showcase_kit + self.fields['is_from_showcase'].required = False def clean_price(self): """Парсим цену с запятой или точкой и округляем до 2 знаков""" diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index 0c414bd..e605216 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -2088,6 +2088,7 @@ document.addEventListener('DOMContentLoaded', function() { const salesUnitField = document.querySelector(`[name="items-${index}-sales_unit"]`); const quantityField = document.querySelector(`[name="items-${index}-quantity"]`); const priceField = document.querySelector(`[name="items-${index}-price"]`); + const isFromShowcaseField = document.querySelector(`[name="items-${index}-is_from_showcase"]`); if (!productField || !kitField) { console.warn(`[Draft Items] ⚠️ Форма ${index} не найдена`); @@ -2098,11 +2099,15 @@ document.addEventListener('DOMContentLoaded', function() { console.log(` - productField:`, productField); console.log(` - kitField:`, kitField); console.log(` - salesUnitField:`, salesUnitField); + console.log(` - isFromShowcaseField:`, isFromShowcaseField); // Устанавливаем значения if (item.type === 'product') { productField.value = item.id; kitField.value = ''; + if (isFromShowcaseField) { + isFromShowcaseField.value = 'false'; + } console.log(`[Draft Items] ✅ Установлен product ID: ${item.id}`); // Устанавливаем sales_unit если есть @@ -2118,7 +2123,18 @@ document.addEventListener('DOMContentLoaded', function() { if (salesUnitField) { salesUnitField.value = ''; } - console.log(`[Draft Items] ✅ Установлен kit ID: ${item.id}`); + + // КРИТИЧНО: Для showcase_kit устанавливаем is_from_showcase=true + if (isFromShowcaseField) { + if (item.type === 'showcase_kit') { + isFromShowcaseField.value = 'true'; + console.log(`[Draft Items] 🌺 Установлен флаг is_from_showcase=true для витринного комплекта`); + } else { + isFromShowcaseField.value = 'false'; + } + } + + console.log(`[Draft Items] ✅ Установлен kit ID: ${item.id} (type: ${item.type})`); } // Устанавливаем количество и цену