Files
octopus/myproject/inventory/services
Andrey Smakotin 0d72c36739 Исправлена продажа нескольких экземпляров витринного букета
Проблема:
При попытке продажи 2+ экземпляров одного витринного букета возникала ошибка
IntegrityError, так как поле sold_order_item было OneToOneField.
Это означало что к одному OrderItem мог быть привязан только один ShowcaseItem,
что делало невозможной продажу нескольких экземпляров в одной позиции заказа.

Решение:
1. Изменен тип поля sold_order_item с OneToOneField на ForeignKey
   - Теперь несколько ShowcaseItem могут относиться к одному OrderItem
   - related_name изменен с 'sold_showcase_item' на 'sold_showcase_items'

2. Обновлен метод mark_sold в модели ShowcaseItem
   - Добавлена явная проверка статуса 'sold' перед продажей
   - Генерируется ValidationError если экземпляр уже продан
   - Удален комментарий про OneToOneField защиту

3. Обновлена обработка ошибок в ShowcaseManager.sell_showcase_items
   - Убрана обработка IntegrityError
   - Добавлена обработка ValidationError от mark_sold

4. Создана миграция 0012_change_sold_order_item_to_fk

Теперь можно успешно продавать 2 и более экземпляров одного витринного букета
в рамках одной позиции заказа.
2025-12-11 22:23:41 +03:00
..