Проблема: - При отмене (cancelled) метод return_to_available() сбрасывает sold_order_item = None - При переходе cancelled → completed поиск ShowcaseItem по sold_order_item__order не находит букеты - Букеты оставались в статусе 'available' вместо 'sold' Решение: - inventory/signals.py: в сигнале create_sale_on_order_completion изменена логика поиска - Разделён поиск на два этапа: 1. Поиск по sold_order_item для букетов в 'reserved' (обычный flow) 2. Поиск по product_kit для букетов в 'available' (переход из cancelled) - Для букетов в 'available': ищем через product_kit + status='available' + sold_order_item__isnull=True - Вызываем mark_sold(order_item) для каждого найденного букета - Букет корректно переходит available → sold и привязывается к OrderItem Flow теперь работает: 1. draft → completed: ShowcaseItem reserved → sold ✅ 2. cancelled → completed: ShowcaseItem available → sold ✅ (ИСПРАВЛЕНО!) Защита от двойной продажи работает корректно.
97 KiB
97 KiB