Исправлена обработка числовых полей при автосохранении черновика

Добавлена конвертация строковых значений в Decimal для полей delivery_cost и discount_amount, чтобы избежать ошибки типа при автосохранении.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-09 12:18:54 +03:00
parent 95b7f44105
commit af0c0189ba

View File

@@ -6,6 +6,7 @@ from django.db import transaction
from django.utils import timezone
from django.core.exceptions import ValidationError
from decimal import Decimal
import decimal
from ..models import Order, OrderItem
from products.models import Product, ProductKit
@@ -114,7 +115,19 @@ class DraftOrderService:
# Обрабатываем простые поля
for field in simple_fields:
if field in data:
setattr(order, field, data[field])
value = data[field]
# Конвертируем числовые поля в Decimal
if field in ['delivery_cost', 'discount_amount']:
if value == '' or value is None:
value = None
else:
try:
value = Decimal(str(value))
except (ValueError, TypeError, decimal.InvalidOperation):
value = Decimal('0')
setattr(order, field, value)
order.modified_by = user
order.last_autosave_at = timezone.now()