Исправлено: сохранение флага is_returned при отмене ранее проданного заказа

This commit is contained in:
2025-12-08 18:40:05 +03:00
parent 8fe8c56c8a
commit a244d82e49

View File

@@ -610,6 +610,29 @@ def release_reservations_on_cancellation(sender, instance, created, **kwargs):
f" Для заказа {instance.order_number} нет резервов в статусе 'reserved'" f" Для заказа {instance.order_number} нет резервов в статусе 'reserved'"
) )
# === Обновляем is_returned ===
# Проверяем: был ли заказ когда-либо в статусе completed (продан)?
# Если да, то это возврат/отмена проданного товара
try:
from orders.models import OrderStatus
# Проверяем всю историю заказа
was_completed = instance.history.filter(
status__is_positive_end=True
).exists()
if was_completed:
# Заказ был продан → это возврат
Order.objects.filter(pk=instance.pk).update(is_returned=True)
logger.info(
f"✓ Заказ {instance.order_number} был продан ранее. "
f"Установлен флаг is_returned = True"
)
except Exception as e:
logger.warning(
f"Не удалось проверить историю заказа {instance.order_number}: {e}"
)
@receiver(post_save, sender=Order) @receiver(post_save, sender=Order)
@transaction.atomic @transaction.atomic