iikoFront API SDK

Оборудование

Для работы в iikoFront часто используется оборудование, начиная редактированием заказа и заканчивая его оплатой. Используемые виды оборудования могут быть самыми разными: фискальные регистраторы, принтеры, весы, денежные ящики, экран покупателя и т.д.

В версиях до 6.2 система могла работать только с определёнными моделями оборудования. Как правило, это были самые распространенные модели оборудования. С помощью API можно реализовать поддержку фискальных регистраторов и весов любой модели.

Фискальный регистратор

В API фискальные регистраторы представлены типом ICashRegister, который в себе содержит только идентификатор устройства и его имя. По большей части, ICashRegister представляет собой набор команд, таких как открытие/закрытие кассовой смены, оплата/возврат заказа, внесение/изъятие денежных средств и др. Набор команд предопределен, а внутренняя реализация будет зависеть от конкретного устройства. Чаще всего команды фискального регистратора возвращают текущее состояние в виде объекта CashRegisterResult, который содержит информацию о счётчиках денежных сумм, номерах документов, налоговых суммах и т. д.

Каждый фискальный регистратор имеет свои настройки, которые представлены типом CashRegisterSettings. В интерфейсе BackOffice при добавлении или повторном настраивании устройства их можно будет увидеть и задать им значения. CashRegisterSettings включает в себя следующую информацию:

Схема подключения оборудования к iikoFront для всех видов оборудования одинаковая. Для того чтобы начать пользоваться своей моделью фискального регистратора, нужно зарегистрировать ее в списке оборудования. Для этого нужно создать класс, реализующий ICashRegisterFactory, который будет являться представителем новой модели фискального регистратора, и добавить новую модель в список оборудования с помощью метода RegisterCashRegisterFactory().

В ICashRegisterFactory указывается имя модели оборудования и его настройки. Таким образом, в iikoOffice по имени модели можно будет найти фискальный регистратор и создать или отредактировать его настройки.

Пример плагина, реализующего интеграцию с фискальным регистратором, можно посмотреть в проекте Resto.Front.Api.SampleCashRegisterPlugin.

Весы

В Api весы представлены типом IScale. Как и любое устройство, весы в себе содержат идентификатор устройства и его имя. Тип IScale состоит из одной команды - взвесить (MeasureWeight()).

Результатом взвешивания является объект типа ScaleWeightResult, который включает в себя вес в килограммах (Weight).

Для того чтобы начать пользоваться своей моделью весов, нужно зарегистрировать ее в списке оборудования. Чтобы зарегистрировать модель, нужно создать тип IScaleFactory, который будет являться представителем новой модели весов, и добавить ее в список оборудования с помощью RegisterScaleFactory().

В IScaleFactory указывается имя модели оборудования и его настройки. Т.о. в BackOffice по имени модели можно будет найти весы и создать или отредактировать их настройки.

Пример плагина, реализующего интеграцию с весами, можно посмотреть в проекте Resto.Front.Api.SampleScalePlugin.

Автоматический запуск устройств

iikoFront умеет автоматически запускать устройства. Если устройство не запущено, любое выполнение команды на нем, кроме запуска, приведет к неудаче. Чтобы вручную не запускать устройство через BackOffice («Настройки оборудования») или iikoFront («Инструменты» -> «Настройки оборудования»), можно воспользоваться нижеописанным способом. В настройках устройства в BackOffice установите галочку «Запускать автоматически». В целевых методах (например, DoCheque, OpenSession для ФР) добавьте проверку состояния устройства и выбросите исключение DeviceNotStartedException:

private void CheckStarted()
{
    if (state != State.Running)
        throw new DeviceNotStartedException("Device not started");
}

При возникновение такого исключения iikoFront попытается произвести запуск устройства и затем выполнить целевую команду.