Установка плагина и привязка кассы к заведению
Делается один раз на каждую главную кассу при подключении заведения.
Как устроен «деплой»#
Инсталлятора нет. Плагин — это папка с файлами внутри каталога iikoFront:
C:\Program Files\iiko\iikoRMS\Front.Net\
├── iikoFront.Net.exe
└── Plugins\
└── SlpPlugin.V9\ ← папка плагина: приезжает готовой внутри архива
├── manifest.xml ← паспорт плагина, без него фронт его не увидит
└── ... остальные файлы комплекта
При старте iikoFront сканирует папку Plugins\, читает manifest.xml, проверяет лицензию модуля и поднимает плагин в отдельном процессе. Никаких файлов API iiko в комплект плагина класть не нужно — их даёт сам фронт.
Порядок установки#
Шаг 1. Скачать пакет для этой кассы#
Пакет плагина выдаёт личный кабинет заведения: раздел «Касса», шаг 1 — впишите название кассы и нажмите «Выпустить и скачать пакет».
Скачается архив, в котором плагин уже настроен на ваше заведение: адрес облака и ключ этой кассы прописаны внутри. Настраивать что-либо вручную не нужно.
Важно
Пакет выдаётся один раз — сохраните файл. Ключ доступа внутри него нигде больше не хранится, и повторный выпуск создаёт новый ключ: касса, работающая на старом пакете, перестанет выходить на связь, пока на неё не поставят новый.
Шаг 2. Распаковать на кассе#
Распакуйте архив в папку Plugins\. Папка SlpPlugin.V9\ со всеми файлами лежит уже внутри архива — она появится сама, создавать её не нужно.
Важно
Не переименовывайте её. Имя
SlpPlugin.V9— с суффиксом версии API, как у остальных плагинов iiko (Resto.Front.Api.Updater.V9и прочие), — служба обновления ищет обновления по имени папки: под другим именем плагин будет работать, но обновления на эту кассу приходить перестанут.
Шаг 3. Канал обновлений — ничего делать не нужно#
Плагин подключает себя к каналу обновлений сам при первом запуске: дописывает наш адрес в список источников службы обновления iikoFront. В логе плагина это видно строкой SLP: канал обновлений прописан в ….
Раньше это был ручной шаг, и его пропускали: касса при этом работала, но навсегда оставалась на той версии, с которой её поставили. Если вы ставите плагин версии 0.1.12 или старше — шаг придётся сделать руками. Откройте (или создайте) файл:
%AppData%\iiko\CashServer\PluginConfigs\Resto.Front.Api.Updater.V9\updater.config
и добавьте наш канал в список источников:
<CustomPluginSources>
<Source Name="SLP gate" Location="https://gate.simple-loyalty-pass.ru/plugin-feed/index.json" />
</CustomPluginSources>
Остальные элементы файла не трогайте. Проверьте, что режим службы обновления включён (<OperatingMode>Enabled</OperatingMode>) — по умолчанию так и есть; выключенную службу плагин сам не включает, только предупреждает об этом в логе.
Шаг 4. Запустить кассу#
Запустите iikoFront. Плагин подхватит настройки из пакета, перенесёт их в папку конфигураций фронта и выйдет на связь — в кабинете касса отметится как «на связи», шаг 1 закроется сам.
В логе плагина появится строка SLP: настройки взяты из пакета кабинета.
Дальше плагин обновляется сам — скачивать архив второй раз не нужно (см. раздел «Обновление плагина»).
Справочно: файл настроек#
Отдельно настраивать плагин не требуется — всё приезжает в пакете. Таблица ниже нужна, только если поддержка попросит что-то проверить в файле slp-plugin.json (папка конфигураций фронта).
| Параметр | Смысл | По умолчанию |
|---|---|---|
cloudUrl | Адрес облака SLP | заполняется пакетом |
terminalToken | Ключ этой кассы — привязка терминала к заведению | заполняется пакетом |
discountTypeId | Личная скидка вручную по GUID; обычно пусто — названия задаются в кабинете | пусто |
drainIntervalSeconds | Как часто плагин пытается отправить накопленную очередь чеков | 20 секунд |
heartbeatIntervalMinutes | Как часто касса отмечается «жива» в кабинете | 5 минут |
qrPrefix | Ужесточение распознавания QR. Пусто = распознавание по формату | пусто |
updateManifestUrl, updateChannel, updatePublicKeyBase64 | Не используются — оставить пустыми | пусто |
Настройки читаются только при запуске — после ручной правки файла кассу нужно перезапустить.
Шаг 5. Настроить iikoOffice (один раз на точку)#
Плагину нужны три типа скидки — по одному на каждую роль. Три, а не один: плагин снимает и ставит «свою» скидку по типу, и на общем типе одна операция стирала бы другую (повторное опознание гостя стёрло бы погашенный купон, гашение купона — списание бонусов).
| Роль | Название-шаблон | Нужна, если |
|---|---|---|
| Личная скидка гостя | SLP Скидка | вы выдаёте гостям личные условия (карточка гостя → «Личные условия»). Уровни скидку не дают |
| Купоны | SLP Купоны | вы пользуетесь купонами и штампами |
| Списание бонусов | SLP Бонусы | гости платят баллами — то есть почти всегда |
Названия можно взять свои, но тогда впишите их в кабинете (раздел «Касса») ровно так же, как в iikoOffice.
Каждая из трёх скидок создаётся одинаково, мастером из трёх окон. Откройте iikoOffice → Дисконтная система → Скидки и надбавки → Добавить.
Окно 1 — название и тип.
- Название — ровно то, что вписано в кабинете (например,
SLP Скидка). По этому названию плагин находит скидку на кассе: лишний пробел или другая буква — и он её не увидит. - Тип создаваемого элемента — «Скидки и надбавки» (не «Дисконтная карта» и не «Категория гостей»).
- Далее.
Окно 2 — где действует и кто применяет.
- Места продаж — «Все места продаж». Если в одной базе iiko несколько точек и вы ограничите список, скидка не заработает на остальных.
- Галочка «Можно назначать вручную» — обязательна. Без неё скидка не попадает в список доступных на кассе, и плагин применить её не сможет.
- Галочку «требуется ввод карты» ставить не нужно: гостя опознаёт приложение, дисконтные карты iiko здесь ни при чём.
- Далее.
Окно 3 — как считается сумма. Это ключевое окно.
- Способ применения — «К полной сумме заказа».
- Тип — «Скидка» (не «Надбавка»).
- Размер — фиксированная сумма, и включите галочку «Назначать сумму» (в разных версиях называется «Указывать сумму при применении» или «Произвольная сумма»). Она означает, что сумму задаёт тот, кто применяет скидку, — то есть плагин, по расчёту облака для конкретного чека. Без неё iiko ждёт фиксированный процент, и применить скидку не получится.
- Проценты, суммы и расписание заполнять не нужно — их перекроет плагин.
- Скидка должна быть активна (не в архиве).
Повторите для второй и третьей скидки, меняя только название. Сохраните и выгрузите настройки на кассу (обычная синхронизация iiko). GUID скидок копировать не нужно: плагин присылает список подходящих скидок в кабинет, где вы выбираете нужные в разделе «Касса».
Права кассиров. Разрешите применение этих скидок.
Шаг 6. Проверить#
Запустите iikoFront. В логе должна появиться строка вида SLP: плагин <версия> запущен.
Дальше — короткий проверочный прогон:
| Шаг | Ожидаемый результат |
|---|---|
| Открыть заказ, добавить позиции | — |
| Отсканировать QR из приложения гостя (или кнопка «SLP Лояльность» → последние цифры номера) | Всплывает окно: гость, баланс, уровень, лимит списания. Гость появился строкой в заказе |
| Посмотреть чек | В чеке уже стоит скидка списания бонусов (если у гостя есть баллы), а при личных условиях — и его скидка |
| Уменьшить скидку списания руками | Касса принимает правку и больше своё число не навязывает |
| Закрыть чек | Гость получает начисление и пуш, баллы списываются |
| Отключить сеть кассы и закрыть ещё один чек | Чек закрывается нормально; после возврата сети начисление догоняет |
| Сделать возврат первого чека | Баллы возвращаются, начисление откатывается |
Привязка кассы к заведению: как это работает#
- Каждая главная касса регистрируется в облаке SLP как терминал заведения и получает собственный секретный токен.
- Токен — единственное, что связывает кассу с конкретным заведением. Всё остальное (какому заведению начислять, чьи правила применять) облако берёт из токена, а не из данных, присланных кассой.
- В кабинете заведения по каждому терминалу видно: имя, версию плагина, версию API и время последней активности (
lastSeen) — по нему видно, «жива» ли касса. - Токен можно отозвать из кабинета. После отзыва плагин на этой кассе перестанет авторизовываться: лояльность выключится, но касса продолжит работать штатно.
- Если лицензия или подписка SLP у заведения неактивна, токены не выдаются и отзываются — с тем же результатом: касса работает, лояльность выключена.