diff --git a/myproject/customers/services/wallet_service.py b/myproject/customers/services/wallet_service.py index 4edd9eb..3be13df 100644 --- a/myproject/customers/services/wallet_service.py +++ b/myproject/customers/services/wallet_service.py @@ -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):