From e10faf697f7015c0eb625760e710653901553d9f Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Sat, 29 Nov 2025 20:49:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=20add=5Foverpayment=20-=20=D0=B1=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D1=88=D0=B5=20=D0=BD=D0=B5=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customers/services/wallet_service.py | 46 ------------------- 1 file changed, 46 deletions(-) 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):