diff --git a/myproject/orders/services/draft_service.py b/myproject/orders/services/draft_service.py index e04953a..45123c2 100644 --- a/myproject/orders/services/draft_service.py +++ b/myproject/orders/services/draft_service.py @@ -231,12 +231,11 @@ class DraftOrderService: product_id = item_data.get('product_id') product_kit_id = item_data.get('product_kit_id') quantity = item_data.get('quantity', 1) - price = item_data.get('price', 0) + price_raw = item_data.get('price', '') - # Конвертируем в Decimal + # Конвертируем количество в Decimal try: quantity = Decimal(str(quantity)) - price = Decimal(str(price)) except (ValueError, TypeError, decimal.InvalidOperation): continue @@ -257,9 +256,23 @@ class DraftOrderService: else: continue - # Определяем, изменилась ли цена + # Определяем оригинальную цену из каталога original_price = product.actual_price if product else product_kit.actual_price - is_custom_price = abs(price - original_price) > Decimal('0.01') + + # Конвертируем цену в Decimal, если пустая - используем оригинальную + try: + price = Decimal(str(price_raw)) if price_raw else Decimal('0') + # Если цена 0 или пустая, используем оригинальную цену + if price == Decimal('0'): + price = original_price + is_custom_price = False + else: + # Определяем, изменилась ли цена + is_custom_price = abs(price - original_price) > Decimal('0.01') + except (ValueError, TypeError, decimal.InvalidOperation): + # В случае ошибки используем оригинальную цену + price = original_price + is_custom_price = False # Обновляем существующую позицию или создаём новую if index < len(existing_items): diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index 0b9e2ed..328bf3c 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -227,9 +227,9 @@
{% if item_form.instance.product %} - + {% elif item_form.instance.product_kit %} - + {% else %} {{ item_form.price }} {% endif %}