6.2 KiB
6.2 KiB
Система вариантов товаров - Краткое руководство
Что реализовано
Система позволяет создавать букеты с гибкими заменами компонентов. Каждый букет может иметь свои индивидуальные приоритеты для одной и той же группы товаров.
Новые модели
- ProductVariantGroup - группа взаимозаменяемых товаров
- KitItemPriority - приоритеты товаров для конкретной позиции букета
Изменения в существующих моделях
- Product - добавлено поле
variant_groups(M2M) - KitItem - добавлены поля
variant_group,notes - ProductKit - добавлены методы проверки доступности и расчета цен
Быстрый старт
1. Запуск демо
python manage.py demo_variants
Это создаст демонстрационные данные и покажет работу системы.
2. Создание группы вариантов через админку
- Откройте
/admin/ - Перейдите в "Группы вариантов"
- Создайте новую группу (например, "Роза красная Freedom")
- Откройте товары и добавьте их в группу через поле "Группы вариантов"
3. Создание букета с вариантами
- Создайте новый комплект
- Добавьте позицию:
- Либо укажите конкретный товар (без замен)
- Либо укажите группу вариантов (с заменами)
- Откройте позицию и настройте приоритеты в разделе "Приоритеты вариантов"
API для разработчиков
Проверка доступности букета
from products.models import ProductKit
from products.utils.stock_manager import StockManager
kit = ProductKit.objects.get(name="Мой букет")
stock_manager = StockManager()
if kit.check_availability(stock_manager):
print("Букет доступен!")
price = kit.calculate_price_with_substitutions(stock_manager)
print(f"Цена: {price}")
Получение лучшего товара для позиции
from products.models import KitItem
from products.utils.stock_manager import StockManager
kit_item = KitItem.objects.get(id=1)
stock_manager = StockManager()
best_product = kit_item.get_best_available_product(stock_manager)
if best_product:
print(f"Используем: {best_product.name}")
Файлы документации
- product_variants_guide.md - подробное руководство
- example_usage.py - примеры кода
Интеграция со складом
Текущая версия использует заглушку StockManager. Для интеграции с реальной системой складского учета:
- Откройте
products/utils/stock_manager.py - Реализуйте методы:
check_stock(product, quantity)- проверка остатковget_available_quantity(product)- получение доступного количестваreserve_stock(product, quantity, order_id)- резервированиеrelease_stock(product, quantity, order_id)- освобождение
Основные возможности
- ✅ Создание групп взаимозаменяемых товаров
- ✅ Один товар может быть в нескольких группах
- ✅ Индивидуальные приоритеты для каждого букета
- ✅ Проверка доступности с учетом замен
- ✅ Расчет цены с учетом фактически доступных товаров
- ✅ Валидация данных
- ✅ Django Admin интерфейс
- ✅ Документация и примеры
Примеры использования
Премиум букет
Позиция: Роза Freedom (группа вариантов) - 15 шт
Приоритеты:
0. Роза 70см (200 руб/шт) - первый выбор
1. Роза 60см (150 руб/шт)
2. Роза 50см (100 руб/шт)
Цена: 15 × 200 = 3000 руб
Эконом букет
Позиция: Роза Freedom (группа вариантов) - 15 шт
Приоритеты:
0. Роза 50см (100 руб/шт) - первый выбор
1. Роза 60см (150 руб/шт)
2. Роза 70см (200 руб/шт)
Цена: 15 × 100 = 1500 руб
Та же группа товаров, но разные приоритеты и разная цена!
Структура файлов
products/
├── models.py # Модели (обновлено)
├── admin.py # Админка (обновлено)
├── utils/
│ └── stock_manager.py # Менеджер остатков (новый)
├── management/
│ └── commands/
│ └── demo_variants.py # Демонстрация (новая)
└── migrations/
└── 0004_productvariantgroup_... # Миграция (новая)
docs/
├── README_VARIANTS.md # Это руководство
├── product_variants_guide.md # Подробная документация
└── example_usage.py # Примеры кода
Поддержка
Для получения помощи:
- Прочитайте product_variants_guide.md
- Изучите примеры в example_usage.py
- Запустите
python manage.py demo_variants - Обратитесь к разработчикам
Версия: 1.0 Дата: 2025-10-21