Рефакторинг: убрана финализация черновиков и улучшены шаблоны заказов
- Убран черновик как отдельная сущность с процессом финализации - Черновик теперь просто обычный OrderStatus - Удалены кнопки 'Сохранить как черновик' и 'Финализировать черновик' - Унифицирована логика сохранения/обновления заказов для всех статусов Улучшения шаблонов: - Стандартизировано форматирование валюты через floatformat:2 - Исправлено отображение статуса (используется OrderStatus.label и color) - Исправлено отображение способа оплаты (корректное использование ForeignKey) - Добавлены иконки к заголовкам секций для лучшего UX - Удалены избыточные console.log (~160 строк) - Очищены комментарии и улучшена читаемость кода - Убрано использование переменной is_draft в контексте - Добавлена визуальная согласованность между шаблонами заказов
This commit is contained in:
@@ -139,6 +139,46 @@ class WalletService:
|
||||
|
||||
return usable_amount
|
||||
|
||||
@staticmethod
|
||||
@transaction.atomic
|
||||
def refund_wallet_payment(order, amount, user):
|
||||
"""
|
||||
Возврат средств в кошелёк при удалении платежа.
|
||||
Увеличивает баланс кошелька и создаёт транзакцию deposit.
|
||||
|
||||
Args:
|
||||
order: Заказ, по которому был платёж
|
||||
amount: Сумма возврата
|
||||
user: Пользователь, инициировавший возврат
|
||||
|
||||
Returns:
|
||||
Decimal: Возвращённая сумма
|
||||
"""
|
||||
from customers.models import Customer, WalletTransaction
|
||||
|
||||
amount = _quantize(amount)
|
||||
if amount <= 0:
|
||||
return None
|
||||
|
||||
# Блокируем запись клиента
|
||||
customer = Customer.objects.select_for_update().get(pk=order.customer_id)
|
||||
|
||||
# Увеличиваем баланс
|
||||
customer.wallet_balance = _quantize(customer.wallet_balance + amount)
|
||||
customer.save(update_fields=['wallet_balance'])
|
||||
|
||||
# Создаём транзакцию возврата
|
||||
WalletTransaction.objects.create(
|
||||
customer=customer,
|
||||
amount=amount,
|
||||
transaction_type='deposit',
|
||||
order=order,
|
||||
description=f'Возврат платежа по заказу #{order.order_number}',
|
||||
created_by=user
|
||||
)
|
||||
|
||||
return amount
|
||||
|
||||
@staticmethod
|
||||
@transaction.atomic
|
||||
def adjust_balance(customer_id, amount, description, user):
|
||||
|
||||
Reference in New Issue
Block a user