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

Добавлена конвертация строковых значений в 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.utils import timezone
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from decimal import Decimal from decimal import Decimal
import decimal
from ..models import Order, OrderItem from ..models import Order, OrderItem
from products.models import Product, ProductKit from products.models import Product, ProductKit
@@ -114,7 +115,19 @@ class DraftOrderService:
# Обрабатываем простые поля # Обрабатываем простые поля
for field in simple_fields: for field in simple_fields:
if field in data: 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.modified_by = user
order.last_autosave_at = timezone.now() order.last_autosave_at = timezone.now()