Онлайн-чеки, которые были предварительно сформированы во внешней системе, размещаются на кассовом сервере в БД Dictionaries в таблице Onlinecheck. Восстановление и оплата онлайн-чеков производятся непосредственно в магазине на обычной кассе (РМК).
Конфигурирование модуля
Возможность восстановления онлайн-чеков на кассе осуществляется посредством модуля "Онлайн-чеки", который активируется в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/onlinecheck.ini в секции [plugins].
| Наименование | Тип данных | Возможные значения | Описание | Примечания |
|---|---|---|---|---|
| onlineCheck | логический |
| Включение модуля "Онлайн-чеки" | По умолчанию off |
[plugins] ; Подключаемые модули ; on - модуль включен, off - выключен. ; по умолчанию все модули выключены ... ; Онлайн-чеки ;onlineCheck = off
Работа с онлайн-чеками осуществляется посредством направления на кассовый сервер REST-запросов.
Настройки модуля работы с онлайн-чеками производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/onlinecheck.ini в секции [OnlineCheck].
| Наименование | Тип данных | Описание | Примечания |
|---|---|---|---|
url | строковый | URL хранения онлайн-чеков на кассовом сервере | |
| timeout | целочисленный | Таймаут запроса к сервису | По умолчанию 20 секунд |
| mask | строковый | Маска для автоматического распознавания идентификатора онлайн-чека |
[OnlineCheck] ; Настройки плагина "Онлайн-чек" ; URL сервиса хранения онлайн-чеков ;url = http://localhost:8080/CSrest/rest/dictionaries ; Таймаут запроса к сервису(в секундах) ; Значение по умолчанию 20 ;timeout = 20 ; Маска для автоматического распознавания идентификатора онлайн-чека ;mask =
Восстановление онлайн-чеков
Онлайн-чеки предназначены для работы с системой лояльности Артикс Бонус.
Для восстановления онлайн-чека на кассе необходимо в утилите администрирования Yuki на клавишу настроить действие "Восстановить онлайн-чек" с командой COMMAND_ONLINECHECK. О настройке действий подробнее можно прочитать в разделе "Настройка действий".
При необходимости изменения заголовка диалога ввода идентификатора онлайн-чека нужно назначить параметр dialogtitle на действие "Восстановить онлайн-чек" с командой COMMAND_ONLINECHECK. Чтобы изменить текст сообщения диалога ввода идентификатора онлайн-чека нужно назначить параметр dialogmessage.
После нажатия клавиши "Восстановить онлайн-чек" на экран будет выведен диалог для ввода ID онлайн-чека. ID онлайн-чека может быть введен вручную или считан при помощи сканера. Чек восстанавливается с исходными данными (товарами, бонусной системой и т.д.).
В кассовом ПО Artix добавлена возможность автоматического распознавания идентификатора онлайн-чека при считывании сканером или вводе с клавиатуры. Для этого необходимо в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/onlinecheck.ini задать маску идентификатора онлайн-чека в параметре mask.
Если параметр mask=333\d{6}, то при вводе "333123456" вся последовательность символов будет распознана как идентификатор онлайн-чека.
Если параметр mask=333(?<barcode>\d{6}), то при вводе "333123456" префикс "333" будет обрезаться, а "123456" будет являться идентификатором онлайн-чека.
Верификация для карт в онлайн-чеке не производится. Способ ввода для группы карт должен быть установлен "Удаленно".
Проверка кода магазина при восстановлении онлайн-чека
В кассовом ПО Artix реализована возможность проверки кода магазина при восстановлении онлайн-чека. Данное поведение регулируется параметром verifyShopCode в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/onlinecheck.ini в секции [OnlineCheck]:
- при значении
true:- если код магазина, в котором восстанавливается онлайн-чек, не совпадает с кодом магазина, в котором должен быть восстановлен онлайн-чек, то будет выведена ошибка "Невозможно восстановить онлайн-чек. Заказ предназначен для выдачи в магазине
<код> <наименование магазина>". Онлайн-чек восстановлен не будет, - если код магазина, в котором восстанавливается онлайн-чек, совпадает с кодом магазина, в котором должен быть восстановлен онлайн-чек, то он будет успешно восстановлен.
- если код магазина, в котором восстанавливается онлайн-чек, не совпадает с кодом магазина, в котором должен быть восстановлен онлайн-чек, то будет выведена ошибка "Невозможно восстановить онлайн-чек. Заказ предназначен для выдачи в магазине
- при значении
falseкод магазина проверен не будет. Онлайн-чек будет успешно восстановлен.
| Наименование | Тип данных | Возможные значения | Описание |
|---|---|---|---|
verifyShopCode | логический |
| Проверять код магазина при восстановлении онлайн-чека |
[OnlineCheck] ; Настройки плагина "Онлайн-чек" ... ; Проверять код магазина при восстановлении онлайн-чека ; По умолчанию false ;verifyShopCode = false
Операции с восстановленным чеком
Восстановленный чек полностью идентичен обычному документу продажи. Документу присваиваются реквизиты текущего чека.
В восстановленном неоплаченном онлайн-чеке могут быть разрешены модификации. Возможности модификации определяются комбинацией параметров в теле чека в БД кассового сервера (Dictionaries таблица Onlinecheck поле document):
Другие комбинации значений использовать не рекомендуется.
| Параметры | Операции | Примечания | |||
|---|---|---|---|---|---|
| dontChange | isModifiable | cardIsDeletable | Разрешено | Запрещено | |
| 1 | 0 | 0 | При попытке внести изменения на экран будет выведено сообщение "Модификация онлайн-чека запрещена" | ||
| 0 | 0 | 0 |
|
| При попытке выполнения запрещенной операции на экран будет выведено сообщение "Модификация онлайн-чека запрещена" |
| 0 | 1 | 0 |
|
| При попытке удаления/сторнирования карты, добавленной в онлайн-чеке, на экран будет выведено сообщение "Удаление карты из онлайн-чека запрещено" |
| 0 | 1 | 1 |
| ||
Идентификационный номер документа-основания для операций в БД кассы (Documents таблица Document поле sourceidentifier) заполняется идентификатором документа из тела чека, полученного из БД кассового сервера (Dictionaries таблица Onlinecheck поле documentid).
При изменении количества товаров в позиции:
- если новое количество товара > старого, то в чек будут добавлены позиции в количестве = новое количество - старое,
- если новое количество < старого, то будет уменьшено количество в самой позиции, сумма позиции пересчитывается пропорционально.
В кассовом ПО Artix предусмотрена возможность задавать:
- ограничение количества позиций в чеке с помощью параметра
positionsLimitв конфигурационном файле/linuxcash/cash/conf/ncash.iniв секции[Check]. - коэффициент количества маркированного товара в чеке с помощью параметра
markingPositionsCountMultiplierв конфигурационном файле/linuxcash/cash/conf/ncash.iniв секции[Check].
При изменении количества товаров в позиции осуществляется проверка количества позиций в чеке. Если количество позиций в чеке будет превышено, то на экран будет выведено сообщение "Недопустимое количество. Превышен лимит позиций в чеке". Позиции не будут добавлены.
Восстановленный чек может быть сторнирован. При сторнировании чека на экран будет выведено сообщение "Вы действительно хотите сторнировать весь чек?":
- при отмене происходит возврат в режим формирования чека,
- при подтверждении операции документу присваивается статус "Не оплачен", статус отправляется на кассовый сервер (БД
Dictionariesв таблицеOnlinecheckв полеstate) через очередь сообщений Artix-Queue. Чек можно восстановить повторно.
Особенности применения дисконта
На позиции онлайн-чека разрешено применение скидки на мелочь.
Для позиций, добавленных:
- при формировании онлайн-чека, применяются скидки из онлайн-чека,
- после восстановления чека, применяются скидки согласно дисконтной системе на кассе. Применяются только скидки на позиции, скидки на чек не применяются.
Особенности начисления бонусов
Начисление бонусов на позиции:
- онлайн-чека осуществляется согласно данным онлайн-чека,
добавленные после восстановления чека, происходит согласно правилам начисления бонусов на кассе.
Сумма бонусов для начисления в онлайн-чеке не будет пересчитана:
при уменьшении количества для позиций онлайн-чека,
при списании бонусов.
Особенности списания бонусов
Если в онлайн-чеке имеются данные о списании бонусов, то списание бонусных баллов осуществляется в соответствии с этими данными. При удалении позиции, которая была оплачена бонусными баллами, будет осуществлен возврат баллов на баланс карты.
Если в онлайн-чеке отсутствуют данные о списании бонусов, то сумма бонусных баллов для списания рассчитывается:
- от всей суммы чека, если карта была добавлена при формировании онлайн-чека,
- от суммы позиций, добавленных на кассе, если карта была добавлена после восстановления чека на кассе.
В утилите администрирования Yuki в правилах списания указано:
- объект списания – чек,
- условие списания – применена карта,
- правило расчета ограничений количества бонусов – ставка:
значение расчетной ставки:
sum(position["sumb"] for position in check["goodsitems"] if position["extendetoptions"] != "noCalculateBonus")*20/100
- результат ставки – сумма.
Сумма бонусов для списания – 20% от суммы позиций, у которых в extendetoptions не указано noCalculateBonus. Если в онлайн-чек не добавлена карта, то при восстановлении для позиций онлайн-чека в extendetoptions устанавливается значение noCalculateBonus.
В онлайн-чек была добавлена карта, данные о списании бонусов в чеке отсутствуют.
Сумма восстановленного онлайн-чека = 3000 рублей.
После восстановления чека на кассе добавлена:
- Позиция Торт "Манна небесная"
1шт *350рублей =350рублей
Cумма бонусов для списания рассчитана от всей суммы чека.
Сумма бонусов для списания (3000 + 350) * 20% = 670 рублей.
Сумма восстановленного онлайн-чека = 3000 рублей.
После восстановления чека на кассе добавлены:
- Карта
- Позиция Торт "Манна небесная"
1шт *350рублей =350рублей
Cумма бонусов для списания рассчитана от суммы позиции Торт "Манна небесная".
Сумма бонусов для списания 350 * 20% = 70 рублей.
Закрытие документа
При закрытии документа данные чека записываются в БД кассы (БД Documents таблица Document) с текущими реквизитами, документу присваивается статус "Закрыт". Статус отправляется на кассовый сервер (БД Dictionaries таблица Onlinecheck поле state) через очередь сообщений Artix-Queue.
В кассовом ПО Artix реализована возможность не фискализировать онлайн-чек, оплаченный во внешней системе, при закрытии документа. Данное поведение регулируется параметром fiscalCheckOnClose в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/onlinecheck.ini в секции [OnlineCheck]:
- при значении
trueонлайн-чек будет фискализирован, кассовый чек будет распечатан на основе шаблонаsale.xml, - при значении
falseонлайн-чек не будет фискализирован, кассовый чек не будет распечатан.
| Наименование | Тип данных | Возможные значения | Описание | Примечание |
|---|---|---|---|---|
| fiscalCheckOnClose | логический |
| Закрытие онлайн-чеков с фискализацией | По умолчанию true |
[OnlineCheck] ; Настройки плагина "Онлайн-чек" ... ; Закрытие чека в ФР ; По умолчанию true ;fiscalCheckOnClose = true
Онлайн-чек считается оплаченным во внешней системе, если:
- статус онлайн-чека:
state=NEW, - cтатус онлайн-оплаты:
onlinePaymentStatus=SUCCESS, - данные об оплате в объекте payments корректно заполнены.
{
"cashcode": "123",
"shopcode": "12323",
"documentid": 9991233217,
"document": {
"positions": [
{
"posnum": 1,
"vatsum": 3.08,
"code": "1094",
"name": "Сапоги",
"price": 15.5,
"barcode": "1094",
"dept": null,
"paymentmethod": 2,
"paymentobject": 10,
"taramode": 0,
"quant": 1,
"measure": 1,
"vatrate": 24,
"measurename": "шт",
"minprice": 14.31,
"vatcode": 3
}
],
"identifier": "",
"payments": [
{
"type": 3,
"amount": 15.5,
"valcode": 1,
"valname": "Электронный платеж"
}
],
"sum": 15.5
},
"state": "NEW",
"onlinePaymentStatus": "SUCCESS"
}
В кассовом ПО Artix реализована возможность не сохранять чек в БД кассы (БД Documents таблица Document) при закрытии документа, если онлайн-чек не фискализируется (fiscalCheckOnClose = false). Данное поведение регулируется параметром saveCheckIntoDb в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/onlinecheck.ini в секции [OnlineCheck]:
- при значении
trueданные чека (позиции, оплаты, сумма) записываются в БД кассы, - при значении
falseданные чека не записываются в БД кассы.
| Наименование | Тип данных | Возможные значения | Описание | Примечание |
|---|---|---|---|---|
| saveCheckIntoDb | логический |
| Сохранение чека в БД кассы | По умолчанию Для корректной работы при |
[OnlineCheck] ; Настройки плагина "Онлайн-чек" ... ; Сохранение чека в БД ; По умолчанию true ;saveCheckIntoDb = true
Замена товара в онлайн-чеке
Для замены товара в онлайн-чеке на кассе необходимо в утилите администрирования Yuki на клавишу настроить действие "Замена товара в онлайн-чеке" с командой COMMAND_REPLACE_GOODS_ITEM. О настройке действий подробнее можно прочитать в разделе "Настройка действий". Для онлайн-чека должна быть разрешена модификация.
В онлайн-чеке можно заменить обычный, маркированный или обувной товар. Штрих-коды товаров, на которые будет осуществляться замена, должны принадлежать карточке заменяемого товара.
После нажатия клавиши "Замена товара в онлайн-чеке":
- для замены обычного товара в окне кассовой программы выводится диалог "Сканирование штрих-кода. Отсканируйте штрих-код товара для замены". Штрих-код товара для замены может быть введен вручную или считан при помощи сканера.
Если был отсканирован верный штрих-код, то осуществляется замена товара. Заменяется наименование и штрих-код позиции, количество и цена остаются неизменными. - для замены маркированного или обувного товара в окне кассовой программы выводится диалог "Замена товара. Отсканируйте код маркировки заменяемого товара". После сканирования кода маркировки заменяемого товара в окне кассовой программы выводится диалог "Замена товара. Отсканируйте код маркировки товара, на который производится замена". Если был отсканирован верный код маркировки (с корректным штрих-кодом), то будет осуществлена проверка кода маркировки.
Если проверка пройдена, то в онлайн-чеке осуществляется замена товара. Заменяется наименование и штрих-код позиции, а также код маркировки, цена остается неизменной. Код маркировки, который был заменен, снимается с резерва.
Отправка онлайн-чека на согласование
Для отправки онлайн-чека на согласование на кассе необходимо в утилите администрирования Yuki на клавишу настроить действие "Согласование онлайн-чека" с командой COMMAND_ONLINECHECK_REVIEW. О настройке действий подробнее можно прочитать в разделе "Настройка действий".
После нажатия клавиши "Согласование онлайн-чека" онлайн-чек будет отправлен на согласование, в окне кассовой программы будет выведено сообщение "Чек отправлен на согласование".
Отправленный на согласование онлайн-чек можно восстановить, если время согласования не истекло.
Средства индивидуальной защиты в онлайн-чеке
Для продажи средств индивидуальной защиты через онлайн-чек необходимо заполнение параметров tmctype и catalogcode в теле чека в БД кассового сервера (Dictionaries таблица Onlinecheck поле document). Параметр catalogcode используется для считывания кода номенклатуры из секции [Msiz.Сatalogs] конфигурационного файла /linuxcash/cash/conf/ncash.ini.d/msiz.ini. Если параметр catalogcode не заполнен, то при восстановлении чека на экран будет выведена ошибка "Для средства индивидуальной защиты не задан код товарной номенклатуры", восстановление чека невозможно.
Алкогольная и табачная продукция, обувные и маркированные товары в онлайн-чеке
Онлайн-чек может содержать алкогольную и табачную продукцию, обувные и маркированные товары. Для этого необходимо заполнение параметров tmctype и excisemark (БД Dictionaries в таблице Onlinecheck в поле document):
- если у позиции в онлайн-чеке заполнен только параметр
tmctype, то при восстановлении такого чека на экран будет выведен диалог сканирования штрих-кода акцизной марки или кода маркировки. При отказе от сканирования восстановление онлайн-чека невозможно, - если у позиции в онлайн-чеке заполнен только параметр
excisemark, то при восстановлении такого чека сканирование штрих-кода акцизной марки или кода маркировки не требуется, товар считается маркированным (в БДDocumentsтаблицеGoodsitemпозиция фиксируется с типомMARKEDGOODS), - если у позиции в онлайн-чеке заполнены параметры
tmctypeиexcisemark, то при восстановлении такого чека сканирование штрих-кода акцизной марки или кода маркировки не требуется.
Изменение количества алкогольной и табачной продукции, обувных и маркированных товаров запрещено.
skipCheckExciseMark в конфигурационных файлах /linuxcash/cash/conf/ncash.ini.d/moot.ini в секции [Moot] и /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods].Проверка кодов маркировок при восстановлении онлайн-чека
При восстановлении онлайн-чеков осуществляется проверка кодов маркировок в системе цифровой маркировки "Честный знак".
Если проверка кодов маркировок позиций в онлайн-чеке завершилась успешно, то онлайн-чек будет восстановлен.
Если коды маркировок одной или нескольких товарных позиций из онлайн-чека не прошли проверку в системе цифровой маркировки "Честный знак", то существует возможность сторнировать такие товарные позиции. Данная возможность определяется параметром stornoFailedMarkedPositions в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/onlinecheck.ini в секции [OnlineCheck]:
- При значении
trueпри попытке восстановления онлайн-чека на экран для каждой позиции будут выведены ошибки проверки кодов маркировок, после чего отобразится форма со списком данных позиций. Восстановление онлайн-чека возможно только после их сторнирования. Для сторнирования позиций, не прошедших проверку, необходимо отсканировать код маркировки каждой позиции.
Если после сторнирования позиций, не прошедших проверку:- в онлайн-чеке осталась хотя бы одна позиция, то онлайн-чек будет восстановлен,
- в онлайн-чеке не осталось позиций, то на экран будет выведен диалог "Невозможно восстановить онлайн-чек. Отсутствуют позиции", онлайн-чек восстановлен не будет.
- При значении
falseпри попытке восстановления онлайн-чека на экран будет выведена ошибка проверки кода маркировки для первой позиции, которая не прошла проверку, после чего на экран будет выведена ошибка "Невозможно восстановить онлайн-чек. Ошибка проверки кодов маркировок, содержащихся в онлайн-чеке", онлайн-чек восстановлен не будет.
| Наименование | Тип данных | Возможные значения | Описание | Примечания |
|---|---|---|---|---|
| stornoFailedMarkedPositions | логический |
| Сторнировать маркированные позиции, не прошедшие проверки | По умолчанию false |
[OnlineCheck] ; Настройки плагина "Онлайн-чек" ... ; Сторнировать маркированные позиции, не прошедшие проверки ; По умолчанию false ;stornoFailedMarkedPositions = false
Весовые товары в онлайн-чеке
Для продажи весовых товаров необходимо заполнение параметра isfractionalmeasure (БД Dictionaries таблица Onlinecheck поле document):
- если у позиции в онлайн-чеке параметр
isfractionalmeasureимеет значениеtrue, то при восстановлении такого чека позиция будет добавлена как весовая, - если у позиции в онлайн-чеке параметр
isfractionalmeasureимеет значениеfalseили не заполнен, то при восстановлении такого чека позиция будет добавлена как штучная (с округлением количества до целого числа).
Невозможность восстановления чека
Восстановить отложенный чек невозможно в следующих ситуациях:
- На кассе имеется открытый документ. При попытке восстановить отложенный чек на экран выводится сообщение "Документ открыт. Восстановление онлайн-чека невозможно".
- Онлайн-чек был отменен при сторнировании. При попытке восстановления на экран выводится сообщение "Чек отменен".
- Онлайн-чек был оплачен и закрыт. При попытке восстановления на экран выводится сообщение "Чек уже оплачен".
- Онлайн-чек был восстановлен на другой кассе. При попытке восстановления на экран выводится сообщение "Чек зарезервирован на другой кассе".
- Онлайн-чек содержит бонусные воздействия, на кассе отсутствует соответствие карты и группы карт. При попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Карта <номер карты> не найдена".
- Онлайн-чек содержит бонусные воздействия, на кассе для группы карт задан неверный тип. При попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Не найдена бонусная группа карт".
- В онлайн-чек в БД КС вручную были внесены изменения. При внесении изменений подпись документа нарушается, при восстановлении чека на кассе на экран выводится сообщение "Чек не прошел проверку подлинности".
- Отсутствует связь с кассовым сервером. В этом случае невозможно получить данные чека, на экран выводится ошибка "Ошибка обращения к серверу".
- Если в онлайн-чеке не указан тип оплаты, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Не указан тип онлайн-оплаты".
- Если в онлайн-чеке сумма оплаты превышает сумму чека, при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Cумма онлайн-оплат превышает сумму чека".
- Если в онлайн-чеке не указана сумма оплаты, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Не указана сумма онлайн-оплаты".
- Если в онлайн-чеке сумма оплаты равна "0", то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Некорректная сумма онлайн-оплаты".
Если в онлайн-чеке отсутствуют значения кода и/или наименования валюты, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Ошибка разбора ответа от сервера".
Если статус онлайн-оплаты чека на кассовом сервере сохранен с ошибкой, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Онлайн-оплата была завершена с ошибкой".
- Если статус онлайн-оплаты чека на кассовом сервере не подтвержден, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Онлайн-оплата не подтверждена".
- Если время согласования онлайн-чека на кассовом сервере истекло (статус
EXPIRED), то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Время согласования чека истекло". Статусы онлайн-чеков размещаются на кассовом сервере в БДDictionariesв таблицеOnlinecheckв полеstate. - Если произошла ошибка проверки кода маркировки позиции в онлайн-чеке, то при попытке восстановления чека то на экран выводится ошибка "Невозможно восстановить онлайн-чек. Ошибка проверки кодов маркировок, содержащихся в чеке".