Files
octopus/myproject/inventory
Andrey Smakotin 366ead7404 Исправлен баг: ShowcaseItem теперь возвращается в reserved при переходе из отрицательного статуса в нейтральный
Проблема:
- При отмене заказа (cancelled) ShowcaseItem переходил в 'available'
- При возврате из cancelled в нейтральный статус (draft/pending) резервы привязывались обратно
- НО ShowcaseItem оставался в 'available', что позволяло добавить букет в другой заказ
- Итог: один физический букет в двух заказах

Решение:
- inventory/signals.py: в сигнале reserve_stock_on_uncancellation добавлена логика
- При переходе cancelled → нейтральный:
  * Находим ShowcaseItem витринных комплектов в статусе 'available'
  * Вызываем return_to_reserved(order_item) для каждого экземпляра
  * ShowcaseItem: available → reserved (привязан к OrderItem)
- Теперь букет корректно возвращается в резерв и недоступен на витрине

Lifecycle при откате отмены:
1. cancelled: ShowcaseItem = available, резервы отвязаны
2. cancelled → draft/pending: ShowcaseItem = reserved, резервы привязаны
3. Букет остаётся за заказом, защищён от двойной продажи
2026-01-05 09:09:41 +03:00
..