- Заменен getCookie('csrftoken') на getCsrfToken() во всех fetch запросах
(checkAutoDiscounts, applyPromoCode, handleCheckoutSubmit и др.)
- Это исправляет ошибку 403 Forbidden, возникающую из-за CSRF_USE_SESSIONS=True
fix(discounts): исправлен фильтр товаров в CRUD скидок
- Изменен фильтр с is_active=True на status='active' для корректной
работы с моделью Product
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Добавлена вкладка "Скидки" в страницу настроек
- Созданы views для управления скидками и промокодами с проверкой прав:
* owner/manager/superuser - полный CRUD
* florist - только просмотр
* courier - нет доступа
- Созданы шаблоны: список скидок, форма, подтверждение удаления
- Созданы шаблоны: список промокодов, форма, подтверждение удаления
- Добавлены фильтры по типу, области действия, активности
- Добавлена пагинация
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Создано новое Django приложение для управления скидками:
Модели:
- BaseDiscount: абстрактный базовый класс с общими полями
- Discount: основная модель скидки (процент/фикс, на заказ/товар/категорию)
- PromoCode: промокоды для активации скидок
- DiscountApplication: история применения скидок
Сервисы:
- DiscountCalculator: расчёт скидок для корзины и заказов
- DiscountApplier: применение скидок к заказам (атомарно)
- DiscountValidator: валидация промокодов и условий
Админ-панель:
- DiscountAdmin: управление скидками
- PromoCodeAdmin: управление промокодами
- DiscountApplicationAdmin: история применения (только чтение)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>