Онлайн-чеки, которые были предварительно сформированы во внешней системе, размещаются на кассовом сервере в БД Dictionaries в таблице Onlinecheck. Восстановление и оплата онлайн-чеков производятся непосредственно в магазине на обычной кассе (РМК).

Конфигурирование модуля

Возможность восстановления онлайн-чеков на кассе осуществляется посредством модуля "Онлайн-чеки", который активируется в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/onlinecheck.ini в секции [plugins].

НаименованиеТип данныхВозможные значенияОписаниеПримечания
onlineCheckлогический
  • on
  • off
Включение модуля "Онлайн-чеки"По умолчанию 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

логический
  • true
  • false

Проверять код магазина при восстановлении онлайн-чека

Пример настройки
[OnlineCheck]
; Настройки плагина "Онлайн-чек"

...
; Проверять код магазина при восстановлении онлайн-чека
; По умолчанию false
;verifyShopCode = false

Операции с восстановленным чеком

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

В восстановленном неоплаченном онлайн-чеке могут быть разрешены модификации. Возможности модификации определяются комбинацией параметров в теле чека в БД кассового сервера (Dictionaries таблица Onlinecheck поле document):

Другие комбинации значений использовать не рекомендуется.

ПараметрыОперацииПримечания
dontChangeisModifiablecardIsDeletable РазрешеноЗапрещено
100



При попытке внести изменения на экран будет выведено сообщение "Модификация онлайн-чека запрещена"

000
  • сторнирование позиций
  • сторнирование карты, добавленной при формировании онлайн-чека
  • замена позиции
  • добавление позиций
  • добавление карты после восстановления чека на кассе
  • изменение количества позиции
  • удаление карты, добавленной при формировании онлайн-чека

При попытке выполнения запрещенной операции на экран будет выведено сообщение "Модификация онлайн-чека запрещена"

010
  • сторнирование позиций
  • добавление карты после восстановления чека на кассе
  • добавление позиций
  • изменение количества позиции
  • замена позиции
  • удаление карты, добавленной после восстановления чека на кассе
  • удаление карты, добавленной при формировании онлайн-чека
  • сторнирование карты, добавленной при формировании онлайн-чека

При попытке удаления/сторнирования карты, добавленной в онлайн-чеке, на экран будет выведено сообщение "Удаление карты из онлайн-чека запрещено"

011
  • сторнирование позиций
  • добавление карты
  • добавление позиций
  • изменение количества позиции
  • замена позиции
  • удаление карты



Идентификационный номер документа-основания для операций в БД кассы (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.

Пример 1. Карта добавлена в онлайн-чек

В онлайн-чек была добавлена карта, данные о списании бонусов в чеке отсутствуют.

Сумма восстановленного онлайн-чека = 3000 рублей.

После восстановления чека на кассе добавлена:

  1. Позиция Торт "Манна небесная" 1 шт * 350 рублей = 350 рублей 

Cумма бонусов для списания рассчитана от всей суммы чека.

Сумма бонусов для списания  (3000 + 350) * 20% = 670 рублей.

Пример 2. Карта не добавлена в онлайн-чек

Сумма восстановленного онлайн-чека = 3000 рублей.

После восстановления чека на кассе добавлены:

  1. Карта
  2. Позиция Торт "Манна небесная" 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
  • false
Закрытие онлайн-чеков с фискализациейПо умолчанию true
Пример настройки
[OnlineCheck]
; Настройки плагина "Онлайн-чек"

...
; Закрытие чека в ФР
; По умолчанию true
;fiscalCheckOnClose = true

Онлайн-чек считается оплаченным во внешней системе, если:

Пример чека оплаченного во внешней системе
{
  "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логический
  • true
  • false
Сохранение чека в БД кассы

По умолчанию true

Для корректной работы при saveCheckIntoDb = false необходимо задать параметр fiscalCheckOnClose = false

Пример настройки
[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логический
  • true
  • false
Сторнировать маркированные позиции, не прошедшие проверкиПо умолчанию false
Пример настройки
[OnlineCheck]
; Настройки плагина "Онлайн-чек"

... 
; Сторнировать маркированные позиции, не прошедшие проверки
; По умолчанию false
;stornoFailedMarkedPositions = false

Весовые товары в онлайн-чеке

Для продажи весовых товаров необходимо заполнение параметра isfractionalmeasure (БД Dictionaries таблица Onlinecheck поле document):

  • если у позиции в онлайн-чеке параметр isfractionalmeasure имеет значение true, то при восстановлении такого чека позиция будет добавлена как весовая,
  • если у позиции в онлайн-чеке параметр isfractionalmeasure имеет значение false или не заполнен, то при восстановлении такого чека позиция будет добавлена как штучная (с округлением количества до целого числа).

Невозможность восстановления чека

Восстановить отложенный чек невозможно в следующих ситуациях:

  • На кассе имеется открытый документ. При попытке восстановить отложенный чек на экран выводится сообщение "Документ открыт. Восстановление онлайн-чека невозможно".
  • Онлайн-чек был отменен при сторнировании. При попытке восстановления на экран выводится сообщение "Чек отменен".
  • Онлайн-чек был оплачен и закрыт. При попытке восстановления на экран выводится сообщение "Чек уже оплачен".
  • Онлайн-чек был восстановлен на другой кассе. При попытке восстановления на экран выводится сообщение "Чек зарезервирован на другой кассе".
  • Онлайн-чек содержит бонусные воздействия, на кассе отсутствует соответствие карты и группы карт. При попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Карта <номер карты> не найдена".
  • Онлайн-чек содержит бонусные воздействия, на кассе для группы карт задан неверный тип. При попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Не найдена бонусная группа карт".
  • В онлайн-чек в БД КС вручную были внесены изменения. При внесении изменений подпись документа нарушается, при восстановлении чека на кассе на экран выводится сообщение "Чек не прошел проверку подлинности".
  • Отсутствует связь с кассовым сервером. В этом случае невозможно получить данные чека, на экран выводится ошибка "Ошибка обращения к серверу".
  • Если в онлайн-чеке не указан тип оплаты, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Не указан тип онлайн-оплаты".
  • Если в онлайн-чеке сумма оплаты превышает сумму чека, при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Cумма онлайн-оплат превышает сумму чека".
  • Если в онлайн-чеке не указана сумма оплаты, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Не указана сумма онлайн-оплаты".
  • Если в онлайн-чеке сумма оплаты равна "0", то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Некорректная сумма онлайн-оплаты".
  • Если в онлайн-чеке отсутствуют значения кода и/или наименования валюты, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Ошибка разбора ответа от сервера".

  • Если статус онлайн-оплаты чека на кассовом сервере сохранен с ошибкой, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Онлайн-оплата была завершена с ошибкой".

  • Если статус онлайн-оплаты чека на кассовом сервере не подтвержден, то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Онлайн-оплата не подтверждена".
  • Если время согласования онлайн-чека на кассовом сервере истекло (статус EXPIRED), то при попытке восстановления чека на экран выводится ошибка "Невозможно восстановить онлайн-чек. Время согласования чека истекло". Статусы онлайн-чеков размещаются на кассовом сервере в БД Dictionaries в таблице Onlinecheck в поле state.
  • Если произошла ошибка проверки кода маркировки позиции в онлайн-чеке, то при попытке восстановления чека то на экран выводится ошибка "Невозможно восстановить онлайн-чек. Ошибка проверки кодов маркировок, содержащихся в чеке".
  • No labels