Рефакторинг моделей заказов и добавление методов оплаты
This commit is contained in:
@@ -62,7 +62,6 @@ class DraftOrderService:
|
||||
delivery_time_start=data.get('delivery_time_start'),
|
||||
delivery_time_end=data.get('delivery_time_end'),
|
||||
delivery_cost=data.get('delivery_cost', Decimal('0')),
|
||||
payment_method=data.get('payment_method', 'cash_to_courier'),
|
||||
customer_is_recipient=data.get('customer_is_recipient', True),
|
||||
recipient_name=data.get('recipient_name'),
|
||||
recipient_phone=data.get('recipient_phone'),
|
||||
@@ -103,7 +102,7 @@ class DraftOrderService:
|
||||
|
||||
simple_fields = [
|
||||
'is_delivery', 'delivery_date', 'delivery_time_start', 'delivery_time_end',
|
||||
'delivery_cost', 'payment_method', 'customer_is_recipient',
|
||||
'delivery_cost', 'customer_is_recipient',
|
||||
'recipient_name', 'recipient_phone', 'is_anonymous',
|
||||
'special_instructions', 'discount_amount'
|
||||
]
|
||||
@@ -304,6 +303,71 @@ class DraftOrderService:
|
||||
is_custom_price=is_custom_price
|
||||
)
|
||||
|
||||
# Обрабатываем удаление платежей
|
||||
if 'deleted_payment_ids' in data:
|
||||
deleted_payment_ids = data['deleted_payment_ids']
|
||||
if deleted_payment_ids:
|
||||
from ..models import Payment
|
||||
Payment.objects.filter(id__in=deleted_payment_ids, order=order).delete()
|
||||
|
||||
# Обрабатываем платежи (payments)
|
||||
if 'payments' in data:
|
||||
from ..models import Payment, PaymentMethod
|
||||
payments_data = data['payments']
|
||||
|
||||
# Обрабатываем каждый платеж
|
||||
for payment_data in payments_data:
|
||||
payment_id = payment_data.get('id') # ID существующего платежа (если есть)
|
||||
payment_method_id = payment_data.get('payment_method_id')
|
||||
amount_raw = payment_data.get('amount', '')
|
||||
notes = payment_data.get('notes', '')
|
||||
|
||||
# Пропускаем пустые платежи
|
||||
if not payment_method_id or not amount_raw:
|
||||
continue
|
||||
|
||||
# Конвертируем сумму в Decimal
|
||||
try:
|
||||
amount = Decimal(str(amount_raw))
|
||||
if amount <= 0:
|
||||
continue
|
||||
except (ValueError, TypeError, decimal.InvalidOperation):
|
||||
continue
|
||||
|
||||
# Получаем способ оплаты
|
||||
try:
|
||||
payment_method = PaymentMethod.objects.get(pk=payment_method_id)
|
||||
except PaymentMethod.DoesNotExist:
|
||||
continue
|
||||
|
||||
# Обновляем существующий платеж или создаём новый
|
||||
if payment_id:
|
||||
# Обновляем существующий платеж
|
||||
try:
|
||||
payment = Payment.objects.get(id=payment_id, order=order)
|
||||
payment.payment_method = payment_method
|
||||
payment.amount = amount
|
||||
payment.notes = notes
|
||||
payment.save()
|
||||
except Payment.DoesNotExist:
|
||||
# Если платеж не найден, создаём новый
|
||||
Payment.objects.create(
|
||||
order=order,
|
||||
payment_method=payment_method,
|
||||
amount=amount,
|
||||
notes=notes,
|
||||
created_by=user
|
||||
)
|
||||
else:
|
||||
# Создаём новый платеж
|
||||
Payment.objects.create(
|
||||
order=order,
|
||||
payment_method=payment_method,
|
||||
amount=amount,
|
||||
notes=notes,
|
||||
created_by=user
|
||||
)
|
||||
|
||||
order.modified_by = user
|
||||
order.last_autosave_at = timezone.now()
|
||||
order.save()
|
||||
|
||||
Reference in New Issue
Block a user