Добавлена возможность выбора устройства для печати чека «Счёт»
[ ]Начиная с версии iiko 6.4 в API V6 добавлена возможность явно указывать, куда будет печататься чек типа «Счёт».
Чек типа «Счёт» используется в некоторых странах, например в Белоруссии и Латвии.
Печать чеков типа «Счёт» поддерживают не все модели фискальных регистраторов. Для устройств написанных на API Оборудования поддержка печати чеков типа «Счёт» включается через CashRegisterDriverParameters
указанием IsBillTaskSupported = true
.
Чек типа «Счёт» это команда ICashRegister.DoBillCheque().
Конфигурация IsBillTaskSupported = true
предполагает, что номер счёта обязателен в команде чека оплаты.
Поэтому в результатах команды DoBillCheque
обязательно к заполнению поле CashRegisterResult.BillNumber
.
В момент печати пречека ядро iikoFront опрашивает подписчиков «На какой точке продаж печатать Счёт для данного заказа?».
Регистрация маршрутизатора печати чеков типа «Счёт» осуществляется методом IOperationService.RegisterBillChequeTaskResolver()
:
- Метод принимает функцию с аргументами
IOrder
“заказ” иbool
“это возврат пречека”. - Функция должна вернуть
IPointOfSale
: ту точку продаж, на которую будет отправлена команда для чека типа «Счёт». - Если функция вернёт
null
или выкинет исключение, то команда для чека типа «Счёт» не будет никуда отправляться.
Пример кода для примитивного случая, когда печать счёта должна происходить на фискальном регистраторе текущей машины:
PluginContext.Operations.RegisterBillChequeTaskResolver(
(order, isSrorno) =>
{
var pos = PluginContext.Operations.GetHostTerminalPointsOfSale().FirstOrDefault();
PluginContext.Log.Info($"Bill for {order.Number}: {pos?.Name} - {pos?.Id}");
return pos;
});