Исправлен баг с переплатой при изменении суммы заказа
Проблема: - Создан заказ на 150 руб, оплачено 300 руб → 150 руб в кошелёк - Изменены товары, сумма стала 100 руб - amount_paid остался 300, total_amount стал 100 - Новая переплата 200 руб НЕ переносилась в кошелёк автоматически Решение: - В Order.calculate_total() добавлена проверка переплаты после пересчёта суммы - Если amount_paid > total_amount, вызывается WalletService.add_overpayment() - Излишек автоматически переносится в кошелёк, amount_paid нормализуется до total_amount - Создаётся WalletTransaction для аудита Теперь при уменьшении суммы заказа переплата корректно возвращается клиенту
This commit is contained in:
@@ -328,6 +328,12 @@ class Order(models.Model):
|
||||
# Сохраняем изменения в БД
|
||||
self.save(update_fields=['total_amount', 'delivery_cost', 'is_custom_delivery_cost'])
|
||||
|
||||
# Проверяем переплату после изменения суммы заказа
|
||||
if self.amount_paid > self.total_amount:
|
||||
from customers.services.wallet_service import WalletService
|
||||
# Переносим переплату в кошелёк (пользователь - modified_by или None)
|
||||
WalletService.add_overpayment(self, self.modified_by)
|
||||
|
||||
return self.total_amount
|
||||
|
||||
def recalculate_amount_paid(self):
|
||||
|
||||
Reference in New Issue
Block a user