Удален метод add_overpayment - больше не используется
This commit is contained in:
@@ -23,52 +23,6 @@ class WalletService:
|
||||
Все операции атомарны и блокируют запись клиента для избежания race conditions.
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
@transaction.atomic
|
||||
def add_overpayment(order, user):
|
||||
"""
|
||||
Обработка переплаты по заказу.
|
||||
Переносит излишек в кошелёк клиента и нормализует amount_paid заказа.
|
||||
|
||||
Args:
|
||||
order: Заказ с переплатой
|
||||
user: Пользователь, инициировавший операцию
|
||||
|
||||
Returns:
|
||||
Decimal: Сумма переплаты или None, если переплаты нет
|
||||
"""
|
||||
from customers.models import Customer, WalletTransaction
|
||||
|
||||
overpayment = order.amount_paid - order.total_amount
|
||||
if overpayment <= 0:
|
||||
return None
|
||||
|
||||
# Блокируем запись клиента для обновления
|
||||
customer = Customer.objects.select_for_update().get(pk=order.customer_id)
|
||||
|
||||
# Округляем переплату до 2 знаков
|
||||
overpayment = _quantize(overpayment)
|
||||
|
||||
# Увеличиваем баланс кошелька
|
||||
customer.wallet_balance = _quantize(customer.wallet_balance + overpayment)
|
||||
customer.save(update_fields=['wallet_balance'])
|
||||
|
||||
# Создаём транзакцию для аудита
|
||||
WalletTransaction.objects.create(
|
||||
customer=customer,
|
||||
amount=overpayment,
|
||||
transaction_type='deposit',
|
||||
order=order,
|
||||
description=f'Переплата по заказу #{order.order_number}',
|
||||
created_by=user
|
||||
)
|
||||
|
||||
# Нормализуем amount_paid заказа до total_amount
|
||||
order.amount_paid = order.total_amount
|
||||
order.save(update_fields=['amount_paid'])
|
||||
|
||||
return overpayment
|
||||
|
||||
@staticmethod
|
||||
@transaction.atomic
|
||||
def pay_with_wallet(order, amount, user):
|
||||
|
||||
Reference in New Issue
Block a user