Конфигурирование модуля ЕГАИС

Обращение к серверам ЕГАИС для передачи информации об обороте алкогольной продукции осуществляется через транспортный модуль.

Перед подключением модуля необходимо убедиться в доступности транспортного модуля.

Подключение транспортного модуля Egais возможно при наличии идентификатора модуля, данных о размещении плагина и других параметрах. Для указания параметров транспортного модуля необходимо создать файл с расширением .xml, например, egais.xml, в директории /linuxcash/cash/conf/plugins.

НаименованиеТип данныхВозможные значенияОписаниеПримечания
idстроковый

Egais

Уникальное наименование модуля


pluginстроковый/linuxcash/cash/plugins/libEgais.so

Полный путь до плагина


addressстроковый
  • http://<host>:<port>/xml
    (для старого формата чека)
  • http://<host>:<port>/xml?type=ChequeV3
    (для формата чека ChequeV3)
  • http://<host>:<port>/xml?type=ChequeV4
    (для формата чека ChequeV4)

Url транспортного модуля ЕГАИС, используемый для розничной продажи по безналичному расчету:

  • акцизной алкогольной и спиртосодержащей продукции (старый формат чека и формат ChequeV3),
  • разливной маркированной алкогольной продукции при оказании услуг общественнного питания (формат чека ChequeV4).

timeoutцелочисленныйЦелое положительное числоТаймаут ожидания ответа от сервера в секундахПо умолчанию 30 секунд


<objects>
    <object id="Egais" plugin="/linuxcash/cash/plugins/libEgais.so" >
        <property name="address">
           <value>http://127.0.0.1:58080/xml</value>
       </property>
       <property name="timeout">
          <value>30</value>
       </property>
    </object>
</objects>


Для работы с форматом ChequeV3 необходимо:

  1. В БД Dictionaries таблице Shop заполнить поле fsraridexcise.
  2. В файле /linuxcash/cash/conf/plugins/egais.xml задать значение параметра address в виде "http://<host>:<port>/xml?type=ChequeV3".
...
<property name="address">
<value>http://127.0.0.1:58080/xml?type=ChequeV3</value>
</property>
...



Для работы с форматом ChequeV4 необходимо:

  1. В БД Dictionaries таблице Shop заполнить поле fsraridexcise.
  2. Указать объем/вместимость тары (в литрах):
    1. для алкогольных товаров – в БД Dictionaries таблице Tmc заполнить поле unit_weight,
    2. для алкогольных наборов – в БД Dictionaries таблице Alcoset заполнить поле taracapacity.
  3. В файле /linuxcash/cash/conf/plugins/egais.xml задать значение параметра address в виде "http://<host>:<port>/xml?type=ChequeV4".


...
<property name="address">
<value>http://127.0.0.1:58080/xml?type=ChequeV4</value>
</property>
...


Настройка кассы

Настройка модуля ЕГАИС

Параметры взаимодействия с модулем УТМ задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

НаименованиеТип данныхВозможные значенияОписаниеПримечания
enableлогический
  • true
  • false
Включение проверки ЕГАИСПо умолчанию false
barcodeMaskстроковый
Маска для проверки штрих-кода акцизной маркиПо умолчанию "([1-9]\d{2}|\d([1-9]\d|\d[1-9])){2}([1-9]\d{7}|\d([1-9]\d{6}|\d([1-9]\d{5}|\d([1-9]\d{4}|\d([1-9]\d{3}|\d([1-9]\d{2}|\d([1-9]\d|\d[1-9])))))))(0[1-9]|1[0-2])(1[8-9]|[2-9][0-9])([1-9]\d{2}|\d([1-9]\d|\d[1-9]))[0-9A-Z]{129}|\d\d[a-zA-Z0-9]{21}\d[0-1]\d[0-3]\d{10}[a-zA-Z0-9]{31}|[0-9]{40}"

enableAdditionalBarcode

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

Включить сканирование дополнительного штрих-кода DataMatrix акцизной марки

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

additionalBarcodeMask

строковый

Маска для проверки дополнительного штрих-кода DataMatrix акцизной марки

По умолчанию "^(1[0-9]{2}-[0-9]{30}|2[0-9]{2}-[0-9]{29}|0000000)$"

checkAlcoCode

логический
  • true
  • false
Включить проверку алкокода акцизной марки в БД кассыПо умолчанию false
sendFnInfoлогический
  • true
  • false
Отправлять в качестве номеров документа и кассы значения фискального документа и номера ФНПо умолчанию true
useExciseMarkInInventoryлогический
  • true
  • false
Запрашивать считывание акцизной марки при инвентаризации акцизной продукцииПо умолчанию false


[EGAIS]
; Настройки плагина ЕГАИС

; Включение проверки ЕГАИС
; По умолчанию false
;enable = false

; Маска для проверки штрих-кода Pdf417 акцизной марки
; По умолчанию "([1-9]\d{2}|\d([1-9]\d|\d[1-9])){2}([1-9]\d{7}|\d([1-9]\d{6}|\d([1-9]\d{5}|\d([1-9]\d{4}|\d([1-9]\d{3}|\d([1-9]\d{2}|\d([1-9]\d|\d[1-9])))))))(0[1-9]|1[0-2])(1[8-9]|[2-9][0-9])([1-9]\d{2}|\d([1-9]\d|\d[1-9]))[0-9A-Z]{129}|\d\d[a-zA-Z0-9]{21}\d[0-1]\d[0-3]\d{10}[a-zA-Z0-9]{31}|[0-9]{40}"
;barcodeMask = "([1-9]\d{2}|\d([1-9]\d|\d[1-9])){2}([1-9]\d{7}|\d([1-9]\d{6}|\d([1-9]\d{5}|\d([1-9]\d{4}|\d([1-9]\d{3}|\d([1-9]\d{2}|\d([1-9]\d|\d[1-9])))))))(0[1-9]|1[0-2])(1[8-9]|[2-9][0-9])([1-9]\d{2}|\d([1-9]\d|\d[1-9]))[0-9A-Z]{129}|\d\d[a-zA-Z0-9]{21}\d[0-1]\d[0-3]\d{10}[a-zA-Z0-9]{31}|[0-9]{40}"
 
; Включить сканирование доп. штрих-кода DataMatrix
; По умолчанию false
; enableAdditionalBarcode = false

; Маска для проверки штрих-кода DataMatrix акцизной марки
; По умолчанию "^(1[0-9]{2}-[0-9]{30}|2[0-9]{2}-[0-9]{29}|0000000)$"
; additionalBarcodeMask = "^(1[0-9]{2}-[0-9]{30}|2[0-9]{2}-[0-9]{29}|0000000)$
 
; Проверять алкокод акцизной марки
; По умолчанию false
; checkAlcoCode = false
  
;Отправлять в качестве номеров документа и кассы значения из ФН
; По умолчанию true
; sendFnInfo = true

; Контролировать АМ при инвентаризации
; По умолчанию false
; useExciseMarkInInventory = false

Использование УТМ активируется параметром enable:

При добавлении и сканировании алкогольных товаров помимо штрих-кода товара (EAN13) обязательно сканирование акцизной марки (PDF417), маска которой указывается в параметре barcodeMask секции [EGAIS].


Ручной ввод данных акцизной марки запрещен, данные необходимо вводить только сканером.

В целях дополнительного контроля может быть использован дополнительный штрих-код акцизной марки (DataMatrix). Необходимость сканирования дополнительного штрих-кода акцизной марки задается параметром enableAddtitionalBarcode:

Маска для проверки дополнительного штрих-кода DataMatrix акцизной марки определяется параметром additionalBarcodeMask.

При продаже и возврате алкогольной продукции доступна проверка алкокода акцизной марки в БД Dictionaries таблице Alcocode. Для проверки алкокода в БД используется параметр checkAlcoCode:

Данные алкокода записываются в товарную позицию в БД Documents таблицу Goodsitem.

Согласно требованиям законодательства определен перечень сведений передаваемых в ЕГАИС:

Выбор реквизитов документа для отправки в ЕГАИС определяется параметром sendFnInfo:

Инвентаризация алкогольной продукции может проводиться как для простого учета товаров, так и для ведения в БД кассовой программы списка акцизных марок, разрешенных к продаже. Порядок проведения инвентаризации алкогольной продукции определяется параметром useExciseMarkInInventory в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

При закрытии документа инвентаризации в БД Dictionaries в таблице Excisemarkwhite для каждой акцизной позиции создается запись, в которой указывается пара штрих-код товара и акцизная марка. По полученному в результате инвентаризации "белому" списку будет производиться проверка акцизных марок при продаже алкоголя.

Разделение настроек для разных масок акцизных марок

При переходе к версии протокола ЕГАИС 3.0 может возникнуть потребность осуществлять разные проверки для разных масок акцизных марок, например, для "старых" акцизных марок проверять наличие алкокода, а для "новых" – проверять "белый список". В этом случае в секции [EGAIS] в параметре barcodeMask указываются все маски акцизных марок, а в секциях [EGAIS.N] (где N – номер по порядку) указывается параметр barcodeMask с необходимой маской акцизной марки и набором настроек, которые будут применены к акцизным маркам данного вида. Таким образом применение настроек для каждой секции зависит от вида акцизной марки.

Возможность выделения параметра в отдельную секцию указана в таблице:

Наименование настройкиСтатус

enable

общая
sendFnInfo
useExciseMarkInInventory

sendEgaisBeforeCashlessPayment

useSerialNumber
barcodeMask индивидуальная








enableAdditionalBarcode 
additionalBarcodeMask 
checkAlcoCode 
checkTmcAlcoCode
enableExciseMarkVerifyLocal 
enableExciseMarkVerify 
exciseMarkVerifyUrl 
exciseMarkVerifyTimeout 
ignoreExciseMarkVerifyErrors 

По умолчанию все настройки размещены в секции [EGAIS]. При необходимости все или часть индивидуальных настроек можно вынести в отдельную секцию [EGAIS.N]. Если в секции [EGAIS.N] указана только часть индивидуальных настроек, то для остальных настроек будет использовано значение по умолчанию.

В отдельной секции обязательно должна быть указана маска акцизной марки, для которой задаются настройки.

Пример разделения настроек приведен ниже:

[EGAIS]
;
; Настройки плагина ЕГАИС
;

; Включение проверки ЕГАИС
; По умолчанию false
enable = true

; Отправлять в качестве номеров документа и кассы значения из ФН
; По умолчанию true
;sendFnInfo = true

; Контролировать АМ при инвентаризации
; По умолчанию false
;useExciseMarkInInventory = false

; Отправлять чек в ЕГАИС перед безналичной оплатой
; По умолчанию false
;sendEgaisBeforeCashlessPayment = false
 
[EGAIS.1]
; Маска для проверки штрих-кода Pdf417 акцизной марки
barcodeMask = "\d\d[a-zA-Z0-9]{21}\d[0-1]\d[0-3]\d{10}[a-zA-Z0-9]{31}"

; Включить сканирование доп штрих-кода DataMatrix
; По умолчанию false
enableAdditionalBarcode = true

; Маска для проверки штрих-кода DataMatrix акцизной марки
; По умолчанию "^(1[0-9]{2}-[0-9]{30}|2[0-9]{2}-[0-9]{29}|0000000)$"
additionalBarcodeMask = "^(1[0-9]{2}-[0-9]{30}|2[0-9]{2}-[0-9]{29}|0000000)$"

; Проверять алкокод акцизной марки
; По умолчанию false
;checkAlcoCode = false

; Проверять соответствие алкокода акцизной марки коду товара
; По умолчанию false
;checkTmcAlcoCode = false

; Проверять акцизные марки на кассе
; По умолчанию false
enableExciseMarkVerifyLocal = true

; Проверять акцизные марки на сервере
; По умолчанию false
;enableExciseMarkVerify = false

; URL сервера проверки акцизных марок
; Для работы с КС используется следующий URL "http://'IP-адрес КС':8080/CSrest/rest/sales/exciseMark/status"
; По умолчанию http://localhost:8080
;exciseMarkVerifyUrl = "http://localhost:8080"

; Таймаут обращения к серверу проверки акцизных марок в секундах
; По умолчанию 30
;exciseMarkVerifyTimeout = 30

; Игнорировать ошибки обращения к серверу проверки акцизных марок
; По умолчанию true
;ignoreExciseMarkVerifyErrors = true
 
[EGAIS.2]
; Маска для проверки штрих-кода Pdf417 акцизной марки
barcodeMask = "[a-zA-Z0-9]{150}"

; Включить сканирование доп штрих-кода DataMatrix
; По умолчанию false
;enableAdditionalBarcode = false

; Маска для проверки штрих-кода DataMatrix акцизной марки
; По умолчанию "^(1[0-9]{2}-[0-9]{30}|2[0-9]{2}-[0-9]{29}|0000000)$"
;additionalBarcodeMask = "^(1[0-9]{2}-[0-9]{30}|2[0-9]{2}-[0-9]{29}|0000000)$"

; Проверять алкокод акцизной марки
; По умолчанию false
;checkAlcoCode = false

; Проверять соответствие алкокода акцизной марки коду товара
; По умолчанию false
;checkTmcAlcoCode = false

; Проверять акцизные марки на кассе
; По умолчанию false
;enableExciseMarkVerifyLocal = false

; Проверять акцизные марки на сервере
; По умолчанию false
enableExciseMarkVerify = true

; URL сервера проверки акцизных марок
; Для работы с КС используется следующий URL "http://'IP-адрес КС':8080/CSrest/rest/sales/exciseMark/status"
; По умолчанию http://localhost:8080
exciseMarkVerifyUrl = "http://192.169.1.100:8080"

; Таймаут обращения к серверу проверки акцизных марок в секундах
; По умолчанию 30
exciseMarkVerifyTimeout = 30

; Игнорировать ошибки обращения к серверу проверки акцизных марок
; По умолчанию true
ignoreExciseMarkVerifyErrors = false

Параметры торгового объекта

При обращении к транспортному модулю ЕГАИС касса передает дополнительные параметры для идентификации торгового объекта: ИНН, КПП, адрес, наименование. Параметры идентификации торгового объекта задаются в БД Dictionaries таблицы Shop или конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Shop].

Источник настроек магазина (ИНН, КПП, адрес, название) определяется параметром paramsSource, который задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Shop]:

НаименованиеТип данныхВозможные значенияОписаниеПримечания
paramsSourceстроковый
  • default

  • db

  • config

Источник настроек магазина (ИНН, КПП, адрес, название)По умолчанию default
innстроковый
ИНН торгового объекта
kppстроковый
КПП торгового объекта
addressстроковый
Адрес торгового объекта
nameстроковый
Наименование торгового объекта


[Shop]
; Настройки магазина

; Источник настроек магазина (ИНН, КПП, адрес, название)
; default – по умолчанию, база данных и конфигурационный файл
; db – база данных
; config – конфигурационный файл
;paramsSource = default

; ИНН магазина
; По умолчанию ""
;inn = "1111111111"

; КПП магазина
; По умолчанию ""
;kpp = "111111111"

; Адрес магазина
; По умолчанию ""
;address = "Барнаул,ул. Калинина,116/44"

; Название магазина
; По умолчанию ""
;name = "Ритейл Сервис"

Печать информации из ЕГАИС на чеке выполняется на основании шаблона egais.xml. 

<?xml version="1.0" encoding="UTF-8"?>
<!-- Шаблон чека ЕГАИС.-->
<report name = "egais" type="document" cached="true" title="Чек продажи ЕГАИС">
<br/><text align="center" fillsymbol=" " maxwidth="all">$shop.name$</text><br/>
<text align="left" fillsymbol=" " maxwidth="all">ИНН: $shop.inn$</text>
<text align="right" fillsymbol=" " maxwidth="all">КПП: $shop.kpp$</text><br/>
<text align="left" fillsymbol=" " maxwidth="all">КАССА: $cash.code$</text>
<text align="right" fillsymbol=" " maxwidth="all">СМЕНА: $shift.num$</text><br/>
<text align="left" fillsymbol=" " maxwidth="all">ЧЕК: $document.num$</text>
<text align="right" fillsymbol=" " maxwidth="all">ДАТА: </text>
<var name="time_beg" dateformat="d2-mm-yyyy hh:mi"/><br/><br/>
<printer op="barcode" type="QR" barcode='$url_egais$'/><br/><br/>
<extvar name="url_egais" width="-1" quoted="false"/><br/>
<extvar name="signature_egais" width="-1" quoted="false"/><br/><br/>   
</report>

Продажа алкогольной продукции

При формировании чека для отправки в ЕГАИС указывается дата и время добавления первой алкогольной позиции.

Программа запрещает добавление товара в чек, если акцизная марка этого товара была зарегистрирована ранее или товар с такой акцизной маркой был продан. 

Товары с акцизной маркой

Для регистрации продажи алкогольного товара с акцизной маркой в ЕГАИС в свойствах товара устанавливается признак "Необходима регистрация в ЕГАИС". Опционально для алкогольной продукции указывается объем. Указание данных признаков поддерживают форматы AIF и дополнение формата Штрих-М.

Продажа акцизной алкогольной продукции, имеющей минимальную цену, равную 0, может быть запрещена или разрешена. Подробнее о запрете продажи алкогольной продукции можно прочитать в разделе "Цена товара".

Каждая акцизная марка имеет уникальный двумерный штрих-код, поэтому в товарной позиции может быть не более 1 единицы товара. Применение модификатора "Количество" к позиции с маркированным товаром запрещено.

Добавление акцизного алкоголя

Добавление в чек товара с акцизной маркой осуществляется следующими способами:

  1. Последовательным сканированием штрих-кода товара и штрих-кода акцизной марки.
  2. Сканированием штрих-кода акцизной марки. При добавлении товара проверяется наличие акцизной марки в "белом" списке:
  3. Последовательным сканированием штрих-кода товара и вводом серийного номера акцизной марки, если штрих-код акцизной марки поврежден.

Возможность добавления алкогольной продукции по серийному номеру в чек задается параметром useSerialNumber в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

Серийный номер акцизной марки содержит серию (3 цифры) и номер (8 или 9 цифр). Ввод серийного номера осуществляется без пробелов, в поле ввода серия и номер визуально разделены на секции.

При вводе серийного номера происходит запрос к БД Dictionaries таблице Excisemarkwhite для осуществления поиска акцизной марки по серийному номеру и типу акцизной марки "ALCOHOL":

Кассовое ПО Artix позволяет запрещать добавление алкогольной продукции в чек последовательным сканированием штрих-кода товара и штрих-кода акцизной марки. Способ добавления алкоголя в чек, определяется параметром addAlcoholOnlyByExciseMark, который задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

В кассовом ПО Artix реализована проверка доступности сервера ЕГАИС при добавлении алкогольной продукции в чек продажи/возврата или при выборе алкогольной позиции в чеке возврата по чеку продажи. Проверка регулируется параметром checkEgaisAvailableBeforeAddPosition в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

Кассовое ПО Artix позволяет устанавливать для алкогольной продукции минимальную розничную цену равную цене товара, если МРЦ не задана, регулируется параметром setMinRetailPrice в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

Параметр setMinRetailPrice не работает совместно с параметром minRetailPrice.


НаименованиеТип данныхВозможные значенияОписаниеПримечания

useSerialNumber

логический
  • true
  • false
Использовать серийный номер для получения акцизной марки из БДПо умолчанию false
addAlcoholOnlyByExciseMarkлогический
  • true
  • false
Добавлять алкоголь только по акцизной маркеПо умолчанию false
checkEgaisAvailableBeforeAddPositionлогический
  • true
  • false
Проверять доступность ЕГАИС перед добавлением позицииПо умолчанию false
setMinRetailPriceлогический
  • true
  • false
Устанавливать для позиции минимальную розничную цену равной цене, если минимальная розничная цена не заданаПо умолчанию false


[EGAIS]
...
; Использовать серийный номер для получения акцизной марки из БД
; По умолчанию false
;useSerialNumber = false
 
; Добавлять алкоголь только по акцизной марке
; По умолчанию false
;addAlcoholOnlyByExciseMark = false

; Проверять доступность ЕГАИС перед добавлением позиции
; По умолчанию false
;checkEgaisAvailableBeforeAddPosition = false

; Устанавливать для позиции минимальную розничную цену равной цене, если минимальная розничная цена не задана
; По умолчанию false
;setMinRetailPrice = false

Добавление акцизного товара другими способами (по коду, по наименованию, с помощью горячих клавиш) запрещено.

При быстром сканировании штрих-кода товара и штрих-кода акцизной марки возможно их объединение ("слипание"), чтобы этого избежать необходимо в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [HW.KEYBOARD] для параметра separateCodes установить значение true. Получившиеся части будут введены последовательно.

Удаление акцизного алкоголя

При сторнировании алкогольной позиции программа запрашивает ввод штрих-кода акцизной марки. После сканирования штрих-кода акцизной марки или ввода серийного номера из чека удаляется именно та позиция, данные которой были считаны, независимо от того, какая позиция была выделена при операции сторнирования.

При сторнировании всего чека, содержащего алкогольные товары, операция выполняется без считывания штрих-кодов акцизных марок.

Товары без акцизной марки

В целях организации электронного журнала учета алкогольной продукции обеспечена возможность формировать и отправлять в ЕГАИС данные об алкогольной продукции, не имеющей акцизную марку. Данные чека при закрытии передаются на сервер ЕГАИС отдельным запросом. Результаты запроса к серверу ЕГАИС сохраняются в БД и на печать не выводятся.

Добавление в чек алкогольных товаров без акцизной марки возможно только по штрих-коду.


В реквизитах алкогольного товара без акцизной марки обязательно указывается код вида алкогольной продукции, а также устанавливается признак алкогольного товара без акцизной марки. Установку свойств алкогольного товара без акцизной марки поддерживает формат AIF и дополнение формата Штрих-М. Если обязательное поле код вида алкогольной продукции не заполнено, то при добавлении товара на экран выводится сообщение "Ошибка добавления алкоголя в чек. Не заполнены обязательные поля товара".

Отсутствие акцизной марки позволяет не контролировать каждую единицу продукции, поэтому к алкогольным товарам без акцизной марки разрешено применение модификатора "Количество".

Сторнирование алкогольных товаров осуществляется в основном режиме без запроса на считывание акцизной марки.

Продажа алкогольной продукции в кластерном режиме

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

При использовании кластерного режима возникает необходимость проверки акцизной марки отдельно для каждого из клиентов, подключенных к кассовому серверу. В этом случае при запросе статуса акцизной марки касса отправляет на кассовый сервер запрос, включающий идентификатор кластера. При подключении к кассовому серверу в файле настроек sync-агента /linuxcash/cash/sync/properties/cash.ini устанавливается ID кластера.

Подтверждение продажи алкогольной продукции

Для подтверждения продажи алкогольной продукции осуществляется обращение к УТМ и выполняется регистрация продажи в ЕГАИС. Порядок отправки данных в ЕГАИС и проведение оплаты чека определяется типом оплаты:

Порядок отправки данных в ЕГАИС при оплате по безналу определяется параметром sendEgaisBeforeCashlessPayment в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

НаименованиеТип данныхВозможные значенияОписаниеПримечания

sendEgaisBeforeCashlessPayment

логический
  • true
  • false
Отправлять чек в ЕГАИС перед проведением безналичной оплатыПо умолчанию false


[EGAIS]
...
; Отправлять чек в ЕГАИС перед безналичной оплатой. По умолчанию false
; sendEgaisBeforeCashlessPayment = false

В случае успешной проверки на чековой ленте печатается URL и цифровая подпись (QR-код). 

Согласно приказу Федеральной службы по регулированию алкогольного рынка от 01.02.2018 № 30 "О перечнях сведений, содержащихся в штрих-коде документа, предоставляемого покупателю, о факте фиксации информации о розничной продаже алкогольной продукции в единой государственной автоматизированной информационной системе учета объема производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции" Росалкогольрегулирование считает возможным не наносить отдельного штрих-кода в рамках введения системы ЕГАИС и использовать единый штрих-код для ЕГАИС и ККТ. Проверка факта фиксации розничной продажи по единому штрих-коду, будет успешно осуществляться в прежнем режиме через мобильное приложение Росалкогольрегулирования «Антиконтрафакт Алко».

Для отключения печати квитанции при продаже товаров, проходящих проверку ЕГАИС, необходимо удалить шаблон квитанции egais.xml из директории /linuxcash/cash/reports.

Если при продаже алкоголя транспортный модуль недоступен, то на экран кассира выводится сообщение об ошибке:

Такой товар не может быть реализован (возвращен).

Если проверка завершается неудачей – закрытие чека блокируется, в этом случае необходимо вернуться к списку товаров и удалить алкогольную продукцию.

При добавлении в чек алкогольного товара, у которого не указан один из обязательных параметров, на экран будет выведено сообщение "Ошибка добавления алкоголя в чек. Не заполнены обязательные поля товара". Такой товар нельзя добавить в чек.

Отмена продажи алкогольной продукции

Отмена продажи в ЕГАИС отправляется при:

При отправке чека ЕГАИС может возникнуть ситуация, когда сервер оборвал соединение, но при этом данные акцизной марки дошли до сервера УТМ и чек был зарегистрирован. В этом случае отмена продажи алкогольной продукции в ЕГАИС отправлена не будет.

Отмена в ЕГАИС регистрируется как возврат.

Пусть имеется чек продажи:

  1. Водка "Петр 1"
  2. Вино "Сладость лозы"

Перед осуществлением безналичной оплаты чек продажи с 2-мя позициями акцизного алкоголя был отправлен в УТМ. При оплате обнаружилась недостача средств на банковской карте.

После закрытия ошибки оплаты пользователь переходит в режим формирования документа продажи и сторнирует позицию Водка "Петр 1". В УТМ отправляется отмена операции (чек возврата).

При переходе в подытог перед повторной оплатой по безналу в УТМ отправляется чек продажи только с позицией Вино "Сладость лозы".

В случае, если УТМ уже обработал отправленный ранее чек возврата, то чек продажи может быть закрыт. Если чек возврата в УТМ еще не обработан, то необходимо дождаться обработки сообщений в очереди УТМ.

Примечание: обработка сообщений в очереди осуществляется в течение 2 минут.

Возврат алкогольной продукции

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

  1. При возврате товара в режиме "Возврат".
  2. При возврате по чеку продажи.

Возврат алкогольной продукции по чеку продажи на другой кассе запрещен до версии 4.6.144 включительно.


Алкогольные товары с акцизной маркой не могут быть возвращены в режиме "Возврат по чеку продажи", если отключена форма выбора товаров для возврата, так как для возврата требуется сканирование штрих-кода акцизной марки каждой единицы товара. В этом случае при переходе к формированию чека возврата товары с акцизной маркой удаляются из чека.

Выбор позиций для возврата алкогольных товаров с акцизной маркой осуществляется тремя способами:

  1. Вручную при помощи клавиатуры (клавиши навигации, Enter) с последующим считыванием штрих-кода или ввода серийного номера акцизной марки.
  2. Считыванием штрих-кода товара с последующим считыванием штрих-кода или ввода серийного номера акцизной марки.
  3. Считыванием двумерного штрих-кода акцизной марки.

Выбор алкогольных товаров с акцизной маркой в форме выбора позиций для возврата не может быть отменен. Сторнирование выбранных позиций можно выполнить в режиме формирования чека возврата по чеку продажи.


Возврат алкогольных товаров без акцизной марки осуществляется в основном режиме, поскольку не требуется считывания штрих-кода акцизной марки.


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

Проверка акцизных марок

Регламент работы по проверке акцизных марок при продаже и возврате акцизного алкоголя определяется структурой торговой сети. Проверка акцизной марки предполагает:

В соответствии с устройством сети проверка акцизных марок может быть выполнена:

При добавлении акцизного товара в чек всегда выполняется проверка данных в документах продаж в рамках всех смен, данные о которых хранятся на кассе:

Возможность дополнительной проверки акцизных марок может быть настроена в соответствии с описанием ниже.

При добавлении товара с акцизной маркой в чек продажи/возврата будет отправлен запрос статуса акцизной марки на сервер. Если при запросе статуса акцизной марки в чеке продажи/возврата возникла сетевая ошибка (сервер недоступен), то в очередь Artix-Queue будет отправлено сообщение с запросом на снятие акцизной марки с резерва (1 случай), однако, если при этом настройка "ignoreExciseMarkVerifyErrors" установлена в "true", то в очередь Artix-Queue будет отправлено сообщение с запросом на резервирование акцизной марки (4 случай). Если через какое-то время будет осуществлен повторный запрос статуса акцизной марки в чеке продажи/возврата, то продажа/возврат товара будут осуществлены (2 случай). При закрытии чека или сторнировании товара с акцизной маркой будет отправлен запрос на изменение статуса акцизной марки (3 случай).

При выполнении повторного запроса на резервирование акцизной марки в чеке продажи/возврата будет осуществлена проверка на соответствие идентификатора чека и идентификатора запроса на резервирование акцизной марки (GUID, БД сервера DocumentsAll таблица Excisemarks поле reserveid):

  • если идентификатор чека и идентификатор запроса резервирования акцизной марки (GUID) совпадают с соответствующими значениями предыдущего запроса, то статус акцизной марки будет изменен (для чека продажи – статус 4, для чека возврата – статус 6);
  • если идентификатор чека и идентификатор запроса резервирования акцизной марки (GUID) не совпадают с соответствующими значениями предыдущего запроса, то статус акцизной марки не будет изменен (для чека продажи останется статус 3, для чека возврата – статус 5).

Структура сети без кассовых серверов (только кассы)

Помимо проверки акцизных марок в данных о продажах в кассовой программе можно настроить проверку "белого" списка акцизных марок (списка акцизных марок, разрешенных к продаже). "Белый" список акцизных марок может быть сформирован при приемке ТТН на кассе или проведении инвентаризации, а также с помощью сервисов обмена выгружен на кассу из товароучетной системы.

Проверка акцизных марок в "белом" списке в БД кассовой программы задается параметром enableExciseMarkVerifyLocal в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

После проверки акцизной марки в "белом" списке настройками программы может быть предусмотрена проверка соответствия алкокода акцизной марки коду товара в БД Dictionaries в таблице Tmcalcocode. Для проверки используется параметр checkTmcAlcoCode в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [EGAIS]:

В таблице Tmcalcocode одному коду товара может соответствовать несколько алкокодов.

НаименованиеТип данныхВозможные значенияОписаниеПримечания
enableExciseMarkVerifyLocalлогический
  • true
  • false
Проверять акцизные марки на кассеПо умолчанию false
checkTmcAlcoCodeлогический
  • true
  • false
Проверять соответствие алкокода акцизной марки коду товараПо умолчанию false


[EGAIS]
...
  
; Проверять акцизные марки на кассе (по умолчанию false)
; enableExciseMarkVerifyLocal = false
; Проверять соответствие алкокода акцизной марки коду товара
; По умолчанию false
; checkTmcAlcoCode = false

Структура сети с кассовыми серверами

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

Проверка регистрации акцизных марок при продаже/возврате производится по умолчанию в рамках всех смен, данные о которых хранятся на кассе. Кассовое ПО позволяет дополнительно осуществлять контроль продажи/возврата акцизного алкоголя в рамках магазина или торговой сети. Информация о зарегистрированных ранее акцизных марках хранится на сервере торгового предприятия. Проверка акцизных марок на сервере задается при помощи параметра enableExciseMarkVerify:

Для проверки акцизных марок на всех кассах магазина (торговой сети) необходимо задать параметры подключения к серверу:

Настройками программы можно разрешать или запрещать продажу/возврат акцизного алкоголя при возникновении ошибок обращения к серверу. Возможность игнорирования возникающих ошибок определяется параметром ignoreExciseMarkVerifyErrors:

Для корректной проверки акцизных марок в белом списке на кассовом сервере необходимо:

В настройках Artix Control Center:

  1. Перейти в меню "Настройки сервера" в раздел "Акцизная продукция".
  2. Активировать настройку "Контроль алкокодов при продаже акцизной продукции (образца 2016 года)".
  3. В настройке "Проверять список разрешенных акцизных марок образца 2018 года алкогольной продукции" установить значение "Проверять по акцизной марке".

Параметры проверки статусов акцизных марок и их резервирования задаются в секции EGAIS конфигурационного файла /linuxcash/cash/conf/ncash.ini.

НаименованиеТип данныхВоможные значенияОписаниеПримечания
enableExciseMarkVerify логический
  • true
  • false
Проверять акцизные марки на сервереПо умолчанию false
exciseMarkVerifyUrl строковый

URL сервера проверки акцизных марок

По умолчанию http://localhost:8080.

В случае размещения кассового сервера на мощностях Artix в качестве url используется значение http://<host>:8080/CSrest/rest/sales/exciseMark/status, где <host> – ip адрес кассового сервера.

При наличии собственного кассового сервера в качестве url необходимо использовать адрес на кассовом сервере до REST сервиса

exciseMarkVerifyTimeout числовой

Таймаут обращения к серверу проверки акцизных марок в секундах

По умолчанию 30 секунд
ignoreExciseMarkVerifyErrors логический
  • true
  • false

Игнорировать ошибки обращения к серверу проверки акцизных марок

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


[EGAIS]
...

; Проверять акцизные марки на сервере (по умолчанию false)
; enableExciseMarkVerify = false

; URL сервера проверки акцизных марок (по умолчанию http://localhost:8080)
; exciseMarkVerifyUrl = "http://localhost:8080" 

; Таймаут обращения к серверу проверки акцизных марок в секундах(по умолчанию 30 сек)
; exciseMarkVerifyTimeout =  30

; Игнорировать ошибки обращения к серверу проверки акцизных марок (по умолчанию true)
; ignoreExciseMarkVerifyErrors = true

Статус акцизной марки может принимать следующие значения: 

При получении неизвестного статуса акцизной марки проверяется наличие сообщения об ошибке в ответе от сервера:

  • если сообщение присутствует, то на экран выводится ошибка с текстом из сообщения:

    Ответ от сервера: [{"status": 20, "message": "Товар был продан в другом магазине", "exciseMarkId": "12QWERTYUIOPLKJHGFDSAZX11111234567890QWERTYUIOPQWERTYUIOPQWERRRRIOPQ"}]

    На экран выводится ошибка: "Товар был продан в другом магазине".


  • если сообщение отсутствует, то на экран выводится ошибка "Неизвестный статус акцизной марки на сервере".

    Ответ от сервера: [{"status": 16, "exciseMarkId": "12QWERTYUIOPLKJHGFDSAZX11111234567890QWERTYUIOPQWERTYUIOPQWERRRRIOPQ"}]

    На экран выводится ошибка: "Неизвестный статус акцизной марки на сервере".


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

Процесс проверки акцизных марок

При добавлении акцизного алкоголя в документ продажи на кассовом сервере осуществляются следующие проверки:

Если по результатам всех проверок товар с акцизной маркой может быть продан, то на кассу передается статус проверок и акцизная марка ставится в резерв продажи на кассовом сервере.

При добавлении акцизного товара в документ возврата на кассовом сервере выполняются проверки:

Если после всех проверок товар с акцизной маркой можно вернуть, то на кассу передается статус проверок и акцизная марка ставится в резерв возврата на кассовом сервере.

Изменение статуса акцизной марки на кассовом сервере в зависимости от операции выполняется:

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

Поведение на кассе

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

Статус акцизной маркиПоведение кассы при продажеПоведение кассы при возврате
Марка не зарегистрирована в БДТовар с акцизной маркой добавляется в чек и может быть продан.Так как товар не был ранее продан, то на экран выводится сообщение "Товар с акцизной маркой отсутствует на сервере", товар не добавляется в чек и не может быть возвращен
Товар с такой маркой проданТовар в чек не добавляется, на экран выводится ошибка "Товар с акцизной маркой уже был продан".Товар добавляется в чек, его можно вернуть
Товар с такой маркой возвращенТовар добавлен в чек и может быть продан.Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был возвращен"
Марка зарезервирована в чеке продажиТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был зарезервирован".Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был зарезервирован"
Марка снята с резерва в чеке продажиТовар добавляется в чек и может быть продан.Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой еще не продан"
Марка зарезервирована в чеке возврата (чеке возврата по чеку продажи)Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был зарезервирован".Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был зарезервирован"
Марка снята с резерва в чеке возврата (чеке возврата по чеку продажи)Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был продан".Товар добавляется в чек, его можно вернуть
Акцизная марка отсутствует в списке разрешенных к продажеТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже".Статус не проверяется на сервере
На кассовом сервере отсутствует связка кода и алкокода товараТовар в чек не добавляется, на экран выводится ошибка «Товар с такой акцизной маркой запрещен к продаже. Код алкогольной продукции не найден».Товар добавлен в чек и может быть возвращен
Товар отсутствует на остаткеТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Нет на остатке".Товар добавлен в чек и может быть возвращен
Штрих-код для проверки в списке акцизных марок, разрешенных к продаже, не переданТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не заполнен штрих-код для проверки в белом списке".Товар добавлен в чек и может быть возвращен
Соответствие акцизной марки и штрих-кода в списке акцизных марок, разрешенных к продаже, не найденоТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не найдено соответствие акцизной марки и штрих-кода в белом списке".Товар добавлен в чек и может быть возвращен
Магазин для проверки остатков не найденТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не найден магазин для проверки остатков".Товар добавлен в чек и может быть возвращен
Штрих-код для проверки остатков не заполненТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не заполнен штрих-код для проверки остатков".Товар добавлен в чек и может быть возвращен
Код товара для проверки остатков не заполненТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не заполнен код товара для проверки остатков".Товар добавлен в чек и может быть возвращен
Справочник остатков для товара, по которому проверяем остатки, заполнен не корректноТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Некорректно заполнен справочник остатков для товара".Товар добавлен в чек и может быть возвращен
Неизвестный статус акцизной маркиТовар в чек не добавляется, на экран выводится ошибка "Неизвестный статус акцизной марки на сервере".Товар в чек не добавляется, на экран выводится ошибка "Неизвестный статус акцизной марки на сервере"

Если акцизная марка была поставлена в резерв, т.е. уже была добавлена в чек, то такой товар в чек не может быть добавлен. После осуществления продажи/возврата акцизная марка позиции снимается с резерва и переходит в статус, соответствующий выполненной операции – продана/возвращена. Снятие резерва с акцизной марки выполняется также при сторнировании товарной позиции из документа. 

Если на кассе установлена версия ПО ниже 4.6.96, то для того чтобы статус резервной марки изменялся после закрытия чек необходимо осуществлять выгрузку продаж после закрытия каждого чека. Для этого необходимо на событие "Действие после закрытия документа" назначить макрос "Выгрузка текущих продаж" с параметром "Выгрузка продаж на КС". Подробнее о задании макросов можно прочитать в разделе "События и макросы".