diff --git a/myproject/inventory/signals.py b/myproject/inventory/signals.py index a92d1a0..f15411d 100644 --- a/myproject/inventory/signals.py +++ b/myproject/inventory/signals.py @@ -609,6 +609,29 @@ def release_reservations_on_cancellation(sender, instance, created, **kwargs): logger.debug( 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)