Перейти к содержанию

Диагностика — iiko

С чего начинать

Основной журнал плагина:

%APPDATA%\iiko\CashServer\Logs\plugin-Broni.Front.Plugin.log

Рядом лежат журналы самого iikoFront, они нужны, когда плагин вообще не загрузился:

Файл О чём
plugin-Broni.Front.Plugin.log работа плагина: поиск брони, расчёт и применение скидки, отправка счетов
api.log подключение плагинов к хосту front.api
cash-server.log обнаружение плагинов и разбор Manifest.xml

Быстро посмотреть последние ошибки:

Get-Content "$env:APPDATA\iiko\CashServer\Logs\plugin-Broni.Front.Plugin.log" -Tail 100

Плагин не загружается

В журналах нет ни одного упоминания плагина

iikoFront его не нашёл. Проверьте по порядку:

  1. Структура каталога. Manifest.xml должен лежать по пути …\Front.Net\Plugins\Broni.Front.Plugin\Manifest.xml. Лишний вложенный уровень — самая частая причина.
  2. Точка в начале имени папки. .Broni.Front.Plugin — это выключенный плагин, уберите точку.
  3. Тот ли каталог iikoFront. Если на сервере несколько установок iiko, убедитесь, что плагин попал в каталог используемой.
  4. Перезапуск. Плагины подхватываются только при старте iikoFront.

cash-server.log ругается на манифест

Файл Manifest.xml повреждён или изменён. Распакуйте архив заново, не редактируя его содержимое.

В api.log — отказ по лицензии

Причины по частоте:

  1. Модуль front.api не включён в лицензии площадки. Самая частая причина. Включается на стороне iiko — обратитесь в поддержку iiko от имени площадки.
  2. Изменён Manifest.xml. Идентификатор лицензионного модуля (LicenseModuleId, см. Обзор) приходит в архиве уже проставленным — файл не редактируется вручную. Если его правили, распакуйте архив заново.
  3. Если оба пункта проверены, а отказ повторяется — обратитесь в поддержку со строкой из api.log.

Плагин загрузился, но скидка не применяется

В журнале есть [dryRun] would apply …

Всё работает правильно, плагин просто в проверочном режиме. Значит, в %APPDATA%\Broni.Front.Plugin\venue.config кто-то добавил служебный параметр dryRun со значением true — по умолчанию его там нет. Удалите эту строку (или поставьте value="false") и перезапустите iikoFront — проверочный режим.

Про заказ вообще ничего не пишется

Плагин не связал заказ с бронью. Причины по частоте:

  1. Стол не сопоставлен. Заказ открыт на столе, который в Брони не привязан к этому же столу. Проверьте сопоставление столов в личном кабинете партнёра.
  2. Заказ открыт без брони. Гость пришёл не по брони — это штатная ситуация, скидки быть не должно.
  3. Бронь не в зеркале. Бронь создана только что, а синхронизация ещё не прошла. Подождите минуту либо убедитесь, что mirror.backendFallback=true.

В журнале — «бронь найдена», но скидка нулевая или не применена

  1. Время вне интервала действия брони. У каждой брони свой интервал; допуск на расхождение часов задаётся mirror.windowGraceMinutes (по умолчанию 30 минут). Проверьте, что часы кассового сервера идут верно.
  2. Тип скидки не найден. Название в iikoOffice должно совпадать с discountTypeName посимвольно, включая регистр. После правки в iikoOffice выгрузите изменения на кассы.
  3. Несовпадение способа расчёта. При applyMode=flexibleSum скидка в iikoOffice должна быть с расчётом «гибкая сумма»; при percent — процентной.
  4. У кассира нет права на скидку. Проверьте права роли в iikoOffice.

Скидка применяется не к тому счёту

Убедитесь, что заказ открыт именно на забронированном столе и что стол не был перенесён после открытия заказа.


Проблемы со связью

В журнале — ошибки синхронизации зеркала

Проверьте с кассового сервера:

Test-NetConnection -ComputerName broni.io -Port 443

Если порт закрыт — вопрос к ИТ-специалисту ресторана: нужен исходящий HTTPS. Часто мешает корпоративный прокси или фильтрация в антивирусе.

Адрес сервера в настройках проверять не нужно — плагин берёт его из своей сборки. Убедитесь, что установлен рабочий дистрибутив, а не сборка для тестового стенда: при старте плагин пишет в журнал строку вида

Broni.Front.Plugin starting (config=…, channel=stable, resolver=mirror, …)

Найти её в журнале:

Select-String -Path "$env:APPDATA\iiko\CashServer\Logs\plugin-Broni.Front.Plugin.log" -Pattern "Plugin starting"

channel=stable — рабочий дистрибутив, он обращается к https://broni.io. channel=dev — сборка для тестового стенда: она ходит на тестовый контур, а не на broni.io. В этом случае скачайте рабочий архив заново, см. Установку.

Скидки продолжают работать

Обрыв связи не мешает применять скидки: условия уже в зеркале. Восстановится связь — зеркало догонит само.

В журнале — ошибка авторизации (401/403)

Токен площадки неверен или отозван. Скопируйте posToken из личного кабинета заново, целиком, без пробелов по краям, в %APPDATA%\Broni.Front.Plugin\venue.config. Перезапустите iikoFront.

Если строки posToken в файле нет вовсе или файл пуст — проверьте, тот ли это файл: путь к прочитанному venue.config плагин пишет в журнал при старте.

Счета не уходят, очередь растёт

Каталог очереди — %APPDATA%\Broni.Front.Plugin\checks. Файлы в нём копятся, пока нет связи, и уходят сами после восстановления. Ничего удалять не нужно.

Если очередь растёт при живой связи — соберите журнал и обратитесь в поддержку.


Что приложить к обращению в поддержку

  1. Файл plugin-Broni.Front.Plugin.log (при возможности — с logLevel=Debug и воспроизведением проблемы).
  2. Версию плагина и версию iikoFront.
  3. Номер брони и время, когда скидка должна была примениться.
  4. Скриншот счёта, если скидка применилась неверно.

Ошибки мы видим и без обращения

Плагин автоматически сообщает нам о своих внутренних ошибках — с версией, настройками и версией ОС. Содержимое счетов и данные гостей при этом не передаются. Обращение всё равно ускоряет разбор: мы будем знать, какую именно бронь смотреть.

Обратиться в поддержку