diff --git a/myproject/orders/models/order.py b/myproject/orders/models/order.py index 5bfadfe..4f1eb70 100644 --- a/myproject/orders/models/order.py +++ b/myproject/orders/models/order.py @@ -323,13 +323,16 @@ class Order(models.Model): # Пересчитываем стоимость доставки если она автоматическая self.recalculate_delivery_cost() + # Сохраняем старую сумму для проверки изменений + old_total = self.total_amount self.total_amount = items_total + self.delivery_cost # Сохраняем изменения в БД self.save(update_fields=['total_amount', 'delivery_cost', 'is_custom_delivery_cost']) - # Проверяем переплату после изменения суммы заказа - if self.amount_paid > self.total_amount: + # Проверяем переплату ТОЛЬКО если сумма заказа уменьшилась + # (чтобы избежать двойной обработки при первоначальной оплате) + if old_total > 0 and self.total_amount < old_total and self.amount_paid > self.total_amount: from customers.services.wallet_service import WalletService # Переносим переплату в кошелёк (пользователь - modified_by или None) WalletService.add_overpayment(self, self.modified_by)