Стоп-листы и остатки
Stop-list (стоп-лист) — список позиций, временно недоступных на конкретном терминале iiko (нулевой или ограниченный остаток). Woo2iiko синхронизирует стоп-листы и обновляет доступность товаров в WooCommerce.
Зачем нужен стоп-лист
- Если в iiko блюдо помечено как unavailable — на сайте оно автоматически становится «нет в наличии».
- Это предотвращает заказы позиций, которых физически нет на кухне.
- Работает per-терминал (в сетевом режиме у каждого терминала свой стоп-лист).
Режимы синхронизации остатков
Настройка stop_list_sync_mode:
| Режим | Поведение |
|---|---|
status_by_balance (по умолчанию) | balance ≤ 0 → статус товара outofstock. Управление остатками WC не включается. |
stock_by_balance | Включается manage_stock, quantity = floor(balance). Полная синхронизация количества. |
Какой режим выбрать
status_by_balance— проще, достаточно для ресторанов (нужно только «в наличии / нет»).stock_by_balance— если нужно точное количество на сайте.
Multi-terminal
Если включён use_terminals_meta (сетевой режим):
- В meta товара
allow_terminalsхранится список GUID терминалов. - Остатки проверяются per-терминал.
- Товар может быть доступен на одном терминале и недоступен на другом.
Источники обновления
Стоп-лист обновляется из нескольких источников:
| Источник | Как |
|---|---|
| Cron | По расписанию stop_list_time (настраиваемый интервал). |
| Вебхук iiko | iiko присылает событие StopListUpdate → iiko_stoplist_webhook_update. |
| AJAX | Кнопка в админке → iiko_stoplist_ajax_background_check. |
| WP-CLI | wp woo2iiko background_check_stop_list. |
| REST API | POST /wp-json/woo2iiko/v1/stop-list/refresh. |
Проверка перед экспортом (Cart guard)
Перед отправкой заказа в iiko модуль StopList проверяет корзину:
- Если в корзине есть товар из стоп-листа — он удаляется.
- Выбрасывается исключение (code
1001) — сигнализация удаления. - Клиенту показывается сообщение об изменении корзины.
Зачем нужна проверка
Между оформлением и оплатой статус мог измениться (вебхук от iiko). Cart guard гарантирует, что в iiko уйдёт только актуальный заказ.
Включается настройкой enable_check_stop (по умолчанию yes).
Настройки
| Настройка | Назначение | По умолчанию |
|---|---|---|
stop_list_time | Интервал cron-проверки | '' (выключено) |
stop_list_sync_mode | Режим синхронизации остатков | status_by_balance |
enable_check_stop | Проверка перед экспортом (cart guard) | yes |
Возможные значения stop_list_time: never, 5min, 10min, 15min, 30min, hourly, twicedaily, daily.
Meta товара
Stop-list управляет meta:
| Meta | Содержимое |
|---|---|
_iiko_stoplist_controlled | Товар контролируется стоп-листом. |
_iiko_stoplist_mode | Режим для товара. |
_iiko_stoplist_last_balance | Последний остаток из iiko. |
_iiko_stoplist_updated_at | Время последнего обновления. |
Кеш
Список стоп-листов кешируется (ApiTransientCache, ключ StopList). После ручных изменений — очистите кеш.