diff --git a/myproject/inventory/signals.py b/myproject/inventory/signals.py index 46da24e..13ed59c 100644 --- a/myproject/inventory/signals.py +++ b/myproject/inventory/signals.py @@ -29,8 +29,8 @@ def reserve_stock_on_order_create(sender, instance, created, **kwargs): if not created: return # Только для новых заказов - # Определяем склад (пока используем первый активный) - warehouse = Warehouse.objects.filter(is_active=True).first() + # Определяем склад (используем склад самовывоза из заказа или первый активный) + warehouse = instance.pickup_warehouse or Warehouse.objects.filter(is_active=True).first() if not warehouse: # Если нет активных складов, зарезервировать не можем @@ -54,24 +54,24 @@ def reserve_stock_on_order_create(sender, instance, created, **kwargs): @receiver(post_save, sender=Order) -def create_sale_on_order_shipment(sender, instance, created, **kwargs): +def create_sale_on_order_completion(sender, instance, created, **kwargs): """ - Сигнал: Когда заказ переходит в статус 'in_delivery', + Сигнал: Когда заказ переходит в статус 'completed' (доставлен), создается операция Sale и резервы преобразуются в продажу. Процесс: - 1. Проверяем, изменился ли статус на 'in_delivery' + 1. Проверяем, изменился ли статус на 'completed' 2. Для каждого товара создаем Sale (автоматический FIFO-список) 3. Обновляем резерв на 'converted_to_sale' """ if created: return # Только для обновлений - if instance.status != 'in_delivery': - return # Только для статуса 'in_delivery' + if instance.status != 'completed': + return # Только для статуса 'completed' - # Определяем склад - warehouse = Warehouse.objects.filter(is_active=True).first() + # Определяем склад (используем склад самовывоза из заказа или первый активный) + warehouse = instance.pickup_warehouse or Warehouse.objects.filter(is_active=True).first() if not warehouse: return