Исправить: дублирование обработки переплаты (баг с двойным возвратом в кошелек)
ПРОБЛЕМА: При оплате заказа с переплатой (например, 15000 руб за заказ 7770 руб), сдача возвращалась в кошелек клиента дважды: - 1 раз: 7230 руб (правильно) - 2 раз: 7230 руб (дубль!) - ИТОГО: 14460 руб вместо 7230 руб ПРИЧИНА: Обработка переплаты вызывалась в двух местах: 1. Payment.save() → вызывал WalletService.add_overpayment() ✓ 2. order_create/order_update в views.py → еще раз вызывал add_overpayment() ✗ РЕШЕНИЕ: Убраны дублирующие вызовы WalletService.add_overpayment() из views.py. Теперь переплата обрабатывается ТОЛЬКО в Payment.save() - это правильное место, т.к. переплата появляется именно при сохранении нового платежа. ИЗМЕНЕНИЯ: - orders/views.py (order_create): убран вызов add_overpayment - orders/views.py (order_update): убран вызов add_overpayment Теперь при переплате сдача возвращается ровно 1 раз.
This commit is contained in:
@@ -118,9 +118,6 @@ def order_create(request):
|
||||
order.calculate_total()
|
||||
order.update_payment_status()
|
||||
|
||||
# Обрабатываем переплату (если amount_paid > total_amount)
|
||||
WalletService.add_overpayment(order, request.user)
|
||||
|
||||
messages.success(request, f'Заказ #{order.order_number} успешно создан!')
|
||||
return redirect('orders:order-detail', order_number=order.order_number)
|
||||
else:
|
||||
@@ -219,9 +216,6 @@ def order_update(request, order_number):
|
||||
order.calculate_total()
|
||||
order.update_payment_status()
|
||||
|
||||
# Обрабатываем переплату (если amount_paid > total_amount)
|
||||
WalletService.add_overpayment(order, request.user)
|
||||
|
||||
messages.success(request, f'Заказ #{order.order_number} успешно обновлен!')
|
||||
return redirect('orders:order-detail', order_number=order.order_number)
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user