
- MODX 3
- PHP 8.2
- miniShop3


Список всех промо-кодов и редактор для создания/изменения.
Таблица с серверной пагинацией. Колонки:
| Колонка | Описание |
|---|---|
| Код | Сам промо-код |
| Название | Произвольное имя кода (например, «Весенняя распродажа −10%») |
| Тип / значение | 10% для percent, 100 ₽ для fixed |
| Использовано | Текущий счётчик / лимит (или used/∞, если лимит не задан) |
| Мин. сумма | Минимальная сумма заказа или —, если не задана |
| Период | Даты действия |
| Статус | Цветной бейдж (см. ниже) |
| Действия | Включить/выключить, редактировать, удалить |
Двойной клик по строке открывает диалог редактирования — альтернатива иконке «карандаш» в колонке «Действия».
| Статус | Когда |
|---|---|
active | Код активен, в периоде действия, лимит не исчерпан |
scheduled | Дата начала ещё не наступила |
expired | Дата окончания прошла |
exhausted | Лимит применений исчерпан |
disabled | Код вручную отключён в редакторе |
Подсказка
Для покупателей disabled маскируется как not_found — они не узнают, что код существует, но временно отключён.
Над таблицей — панель фильтров:
active, а не по вычисляемому status).pi-filter-slash) — очищает все фильтры разом.Фильтры применяются сразу при изменении.
Кнопка Новый код на панели инструментов открывает диалог-редактор. В начале формы — переключатель Способ задания:
| Поле | Описание |
|---|---|
| Код / Маска | В режиме «ввести вручную» — само значение. В режиме «по маске» — шаблон. |
| Название * | Обязательное поле. Отображается в списке и используется в чеках и уведомлениях. |
| Количество | Только для маски — сколько кодов сгенерировать. |
| Тип скидки | percent или fixed. Соседнее поле меняет подпись: «Процент» для percent, «Сумма» для fixed. |
| Процент / Сумма | Численное значение (для percent — без знака %, например 10 = 10%). |
| Область применения | all — скидка на всю корзину; matching — только на позиции, подпадающие под правила. |
| Действует с | Когда код становится валидным. Можно очистить — будет «без даты начала». |
| Действует до | Когда код становится недействительным. |
| Макс. применений | Сколько раз код может быть применён всего. 0 = без лимита. |
| Мин. сумма заказа | Если корзина меньше — код не применится. Можно очистить. |
| Активен | Ручное отключение кода. |
| Описание | Произвольная заметка для менеджера. |
Синтаксис маски:
| Символ | Что означает |
|---|---|
# | Цифра |
? | Буква (только из безошибочного набора) |
* | Цифра ИЛИ буква |
| Любой другой | Литерал, копируется как есть |
Для букв (? и *) используется безошибочный набор: нет O, I, L — покупатель не спутает их с цифрами при вводе с бумажного носителя. Для цифр (# и *) используется полный набор 0–9, включая 0 и 1.
Под полем маски — три примера сгенерированных кодов. Обновляются при изменении маски.
Применяется только при Область применения = matching. Семь секций фильтрации:
option_key + values.Подсказка
Несколько секций объединяются по И. Значения внутри одной секции — по ИЛИ.
Например, «Бренды: Apple, Samsung» + «Фильтр по полям: цена > 30000» = только товары Apple ИЛИ Samsung И с ценой больше 30000.
Подробнее о доступных операторах — Правила (Rules).
Доступна после первого сохранения кода. Показывает:
used_count / лимит.Сводка по этому коду; общая аналитика по всем кодам — в отдельном разделе.
История применений удаляется вместе с кодом
В xPDO-схеме связь msPromoCode → Usages имеет тип composite и owner = 'local' — при удалении промо-кода все связанные записи в ms3_promo_code_usages удаляются каскадно. История применений, суммы скидок, привязка к заказам и покупателям — пропадают безвозвратно.
Если код когда-то применялся и его данные нужны в аналитике и отчётах, не удаляйте его: отключите флажок «Активен». Код исчезнет для покупателей, но вся история останется.
Кнопки «Дублировать» в списке нет. Создайте новый код вручную или выберите режим «По маске» с количеством 1.