Начиная с версии 4.6.275 пакет fiscaldriveapi был обновлен. После обновления необходимо перезагрузить кассу или перезапустить сервис.
Передача данных на сервер ОФД Узбекистана обеспечивается сервисом fiscaldriveapi (Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан).
Установка сервиса
Для обеспечения передачи данных на сервер ОФД Узбекистана необходимо установить пакет fiscaldriveapi с помощью команды:
aptitude install fiscaldriveapi
Подключение фискального модуля
Для подключения фискального модуля необходимо:
Получить список подключенных USB-устройств, выполнив команду:
lsusb
Найти в списке подключенных USB-устройств токен
Feitian:Скопировать значения VID:PID и наименование: "VID=096e, PID=080f, наименование – Feitian Technologies, Inc".
- Внести скопированные данные в файл
/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist:- в конец секции
[ifdVendorID]добавить значение VID, - в конец секции
[ifdProductID]добавить значение PID, - в конец секции
[ifdFriendlyName]добавить наименование токена.
- в конец секции
- Перезапустить кассовую программу.
Настройка сервиса
Параметры подключения к серверу ОФД Узбекистана настраиваются в конфигурационном файле /linuxcash/cash/fiscaldriveapi/config.ini в секции [smartcard]:
| Секция | Наименование | Тип данных | Описание |
|---|---|---|---|
| smartcard | factory_id | числовой | Идентификатор фискального модуля (ФМ) |
Для параметра
необходимо указать значение. Для определения значения перейдите в директорию установки factory_id fiscaldriveapi и выполните команду:
./fiscal-drive-api -op list
Результат выполнения команды является значением для параметра
, необходимо записать его в конфигурационный файл:factory_id
[smartcard] factory_id= ...
Подключение принтера чеков и настройка драйвера
Для настройки драйвера "Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан" в Сервисном меню через Менеджер оборудования необходимо:
- Подключить принтер чеков:
- Добавить драйвер "Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан":
- Настроить параметры драйвера:
- Номер ФР – порядковый номер ККМ.
- ФР – указывается ранее подключенный принтер чеков.
Адрес – адрес сервера ОФД. Указывается значение вида
http://<ip>:<port>/rpc/api, гдеipиportберутся из конфигурационного файла/linuxcash/cash/fiscaldriveapi/config.iniсекции[api].- Адрес для просмотра чеков – адрес сервера ОФД для просмотра чеков. Используется для генерации QR-кода.
- Масштабирование QR-кода – размер QR-кода зависит от используемого принтера печати чеков. Значение по умолчанию –
5. - Таймаут – таймаут ожидания ответа от сервера.
- Путь до сертификата – расположение сертификата.
Пароль сертификата – пароль сертификата.
- Разрешение печати – разрешение печати чеков. По умолчанию настройка включена.
- Печать QR-кода – разрешение печати QR-кода. По умолчанию настройка включена. При выключенной настройке вместо QR-кода будут напечатаны номер версии ВК, серийный номер ФМ, порядковый номер чека, фискальный признак и ссылка для просмотра чека.
- Номер версии ВК – номер виртуальной кассы. Значение по умолчанию –
cash. - Версия ПО – версия используемого программного обеспечения.
Частота запроса последнего чека – частота запроса последнего зарегистрированного чека из ФМ.
Длительность запроса последнего чека – длительность запроса последнего зарегистрированного чека из ФМ.
Если при указании адреса сервера ОФД используется соединение https, то необходимо задать путь до сертификата и пароль сертификата. При использовании соединения http параметры сертификата не указываются.
Если все настройки заданы верно, то после закрытия документа на чеке могут быть напечатаны "Номер версии ВК", "Серийный номер ФМ", "Номер чека", "Фискальный признак", "Дата и время" и QR-код для просмотра чека на сайте ОФД. Текст для печати можно задать в шаблонах.
Запуск сервиса
Запуск сервиса fiscaldriveapi осуществляется двумя способами:
- при перезагрузке кассы,
- с помощью утилиты
service.
Для запуска сервиса fiscaldriveapi при помощи утилиты service необходимо в консоли кассы выполнить команду:
service fiscaldriveapi start
Особенности настройки для разных типов оплаты
Для корректной работы драйвера "Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан" должны быть заданы настройки для соотнесения отделов и типов оплат в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fr.ini.
В драйвере "Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан" используются следующие типы оплаты:
1– оплата наличными,2– оплата электронными деньгами (безналичная),3– предварительная оплата (аванс),4– последующая оплата (кредит).
Для использования типа оплаты в утилите администрирования Yuki должна быть добавлена как минимум одна валюта с соответствующим типом оплаты.
Авансовые и кредитные чеки
При добавлении валюты для работы с авансовыми или кредитными чеками необходимо:
- Для поля "Типы оплаты в ФР" установить 3-й или 4-й тип оплаты соответственно.
Для поля "Типы оплаты в программе" установить тип "Электронные".
Оплата по авансовому и кредитному чеку производится только на основе типа "Электронные".- В свойствах валюты установить флаги:
- "Нельзя платить часть суммы".
- "Можно платить только без сдачи".
- "Запретить оплату для чека возврата".
Подробнее о добавлении валют можно прочитать в разделе "Валюты".
Для печати авансовых и кредитных чеков используется шаблон uzofd_sale.xml без заполнения фискальных данных.
Блокировка работы кассовой программы
Блокировка кассовой программы при работе с сервером ОФД может быть произведена в следующих случаях:
при отсутствии связи с сервисом
fiscaldriveapi,- если был извлечен ФМ из USB-порта,
- если в ФМ количество неотправленных чеков или смен в ОФД достигло максимума.
При отсутствии связи с ОФД сервис fiscaldriveapi перейдет в автономный режим работы, по истечении 24 часов касса будет заблокирована.
Состояние ФМ проверяется при попытке открыть смену, открыть чек в ФМ или закрыть смену.
Передача данных в ОФД
При закрытии чека продажи в ОФД передаются следующие данные о товарных позициях: количество товара, товарный код, код упаковки, скидка, наименование товара или услуги, общая сумма позиции без учета скидок, НДС сумма и прочие (оплата по страховке и др.).
{
"Amount":100,
"Barcode":"4600605000984",
"CommissionTIN":null,
"Discount":0,
"Label":"",
"Name":"МОЛОЧНЫЙ ДЕСЕРТ ДАНОН ДАНИССИМО ВИШНЯ",
"OwnerType":3,
"Other":0,
"Price":2490,
"SPIC":"y7",
"Units":41,
"VAT":226,
"VATPercent":10,
"PackageCode":"12345"
}
- Для товарной позиции может быть задан код национального классификатора товаров (
ntin), передается в полеSPIC. - Тип владельца продукта/услуги передается в поле
OwnerType, может быть задан в БДDictionariesтаблицыTmc. - Код единицы измерения товара передается в поле
Units, может быть задан:
- в БД
DictionariesтаблицеUnitsв полеfrunit, в конфигурационном файле
/linuxcash/cash/conf/ncash.ini.d/fr.iniв секции[HW.FR.UnitsMapping]:Пример настройки;[HW.FR.UnitsMapping] ; ; Соотнесение единиц измерения товара и меры количества предмета расчета ; <Код единицы измерения товара> = <Мера количества предмета расчета> ; Мера количества предмета расчета: ; 0 – штуки, единицы; ; 10 – грамм; ; 11 – килограмм; ; 22 – метр; ; 41 – литр; ; соотнесение единиц измерения товара ;1=0 ;2=11
При закрытии чека сначала запрашивается
frunitдля единицы измерения с учетомUnitsMapping, заданного в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/fr.ini. Еслиfrunitне найден, то осуществляется поискfrunitдля единицы измерения в БД кассовой программы.
- в БД
- Коды упаковок могут быть заданы в поле
packagecode:- в БД
DictionariesтаблицыTmc, - в БД
DictionariesтаблицыBarcodes(используется, если необходимо задать собственный код упаковки для каждого штрих-кода одного и того же товара).
- в БД
Реализация маркированных товаров
Для реализации маркированных товаров необходимо:
- Активировать модуль маркированных товаров с помощью параметра
markedgoodsв конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/markedgoods.iniв секции[plugins]. - Настроить необходимую подсекцию и маску для проверки
DataMatrix. Подробнее об этом можно прочитать в разделе "Реализация маркированных товаров". - Перезапустить программу.
- Добавить маркированный товар в чек.
При передаче данных в ОФД в поле Label будет записан код маркировки:
{
"Amount": 1000,
"Barcode": "4607032140207",
"CommissionTIN": null,
"Discount": 0,
"Label": "0460703214020701234567891236666",
"Name": "МОЛОКО БМК 1.5% 1Л П/П",
"Other": 0,
"Price": 1520,
"SPIC": "",
"Units": 0,
"VAT": 0,
"VATPercent": 0
}
Пример чека в ОФД:
Передача фискальных данных в чеке возврата
Начиная с версии 4.6.204 в кассовом ПО Artix реализован возврат с учетом фискальных данных чека продажи. Возврат товаров в обычном режиме невозможен.
В кассовом ПО Artix реализована возможность получения и сохранения фискальных данных чека в БД Documents в таблице Document поле frdoccopy:
frdoccopy='{"DateTime":"20220331175529","FiscalSign":"395306020034","ReceiptSeq":"3513","TerminalID":"UZ191211502346"}'
Для возврата по чеку продажи необходимо настроить форму возврата для ввода фискальных данных в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/backbysale.ini:
; Настройки ввода фискальных данных для Узбекистана
[BackBySale.InputFiscalInfo.Uz]
; Регулярное выражение для ввода данных со сканера в диалоге
; По умолчанию ""
fieldDistributionRegexp = .*t=(?<TerminalID>[a-zA-Z0-9]{14}).*&r=(?<ReceiptSeq>[0-9]{1,})&c=(?<DateTime>[0-9]{14}).*&.*s=(?<FiscalSign>[0-9]{12}).*
; Настройки полей диалога
[BackBySale.InputFiscalInfo.Uz.Field.1]
fieldId = TerminalID
description = {"id": "inputFiscalInfoTerminal", "defaultMessage": "Серийный номер ФМ"}
type = 10
regexp = "[A-Z]{2}[0-9]{12}"
[BackBySale.InputFiscalInfo.Uz.Field.2]
fieldId = FiscalSign
description = {"id": "inputFiscalInfoFp", "defaultMessage": "Фискальный признак"}
type = 10
regexp = "[0-9]{12}"
[BackBySale.InputFiscalInfo.Uz.Field.3]
fieldId = ReceiptSeq
description = {"id": "inputFiscalInfoCheckNumber", "defaultMessage": "Номер чека"}
type = 10
regexp = "[0-9]+"
[BackBySale.InputFiscalInfo.Uz.Field.4]
fieldId = DateTime
description = {"id": "inputFiscalInfoDate", "defaultMessage": "Дата и время"}
type = 16
dateFormat = "dd.MM.yyyy hh:mm:ss"
regexp = "yyyyMMddhhmmss"
row = 2
При выполнении операции возврата осуществляется проверка на наличие в БД сохраненных фискальных данных чека продажи:
- если поле
frdoccopyзаполнено, то чек возврата успешно закрывается. Ручной ввод фискальных данных чека продажи не требуется: - если поле
frdoccopyне заполнено, то при формировании чека возврата на экран будет выведен диалог ввода фискальных данных чека продажи:
При нажатии на кнопку "Отмена" чек возврата не будет сформирован.
Ввод фискальных данных может осуществляться вручную или считыванием QR-кода чека продажи. При вводе данных вручную проверяется правильность заполнения полей:- Серийный номер ФМ: 2 первых символа – заглавные латинские буквы + 12 символов – цифры.
- Фискальный признак: 12 символов – цифры.
- Номер чека: цифры.
- если введены некорректные данные, то поля будут подсвечены красным цветом:
Введите корректные фискальные данные и нажмите клавишу "Ввод", чек возврата будет сформирован.
Передача типа платежной карты
В Artix:POS реализована возможность выбора типа платежной карты. Для выбора типа оплаты платежной карты в утилите администрирования Yuki необходимо на клавишу настроить действие "Оплата валютой" с командой COMMAND_VALUT и параметром uzOfdCardTypeValCodes. В значении параметра необходимо указать коды валюты, для которых будет запрашиваться выбор типа платежной карты. Подробнее о настройке действий можно прочитать в разделе "Настройка действий".
При выборе валюты, указанной в параметре, на экран будет выведен диалог выбора типа платежной карты:
При нажатии "Отмена" диалог будет закрыт, оплата не будет добавлена в чек.
При нажатии "Выбрать" оплата будет добавлена в чек. При закрытии чека продажи выбранный тип платежной карты отправляется на сервер ОФД.
Для выбора типа оплаты платежной карты на Artix:SCO необходимо в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/actions.ini указать параметр uzOfdCardTypeValCodes для команды COMMAND_ADDPAYMENTPOSITION. В значении параметра необходимо указать коды валюты, для которых будет запрашиваться выбор типа платежной карты. Подробнее о настройке параметров для команд можно прочитать в разделе "Конфигурирование параметров для команд".
[COMMAND_ADDPAYMENTPOSITION] uzOfdCardTypeValCodes = "2,3"
Передача фискальных данных в процессинги PaymeGO и ClickPass
В кассовом ПО Artix реализована возможность сохранения фискальных данных и их передачи в процессинги PaymeGO и ClickPass. После закрытия чека в ФР сервер ОФД возвращает номер и URL-адрес чека. Сообщение с URL-адресом и другими данными, необходимыми для конкретного процессинга, помещается в очередь Artix-Queue. После закрытия чека полученные из сообщения данные передаются на сервер процессинга, сообщение удаляется из очереди.
Особенности работы процессингов PaymeGO и ClickPass
При оплате/отмене оплаты сервер процессинга ClickPass возвращает номер телефона покупателя в поле phone_number, сервер процессинга PaymeGo – в поле phone. При закрытии в ФР чека продажи/возврата по чеку продажи полученное значение записывается в поле ExtraInfo.PhoneNumber и отправляется на сервер ОФД.
При отмене оплаты ClickPass и PaymeGO могут завершить операцию с неизвестным статусом, сообщение об отмене оплаты помещается в очередь Artix-Queue. При этом номер телефона покупателя и идентификатор (RRN) транзакции отмены не заполняются. Объект ExtraInfo не формируется и на сервер ОФД не отправляется. Чек возврата по чеку продажи закрывается.
{
...
"params": {
"Receipt": {
"ExtraInfo": {
"PhoneNumber": "+79999999999"
},
"Items": [
{
"Amount": 1000,
"Barcode": "4607032140207",
"CommissionTIN": null,
"Discount": 0,
"Label": "",
"Name": "МОЛОКО БМК 1.5% 1Л П/П",
"Other": 0,
"Price": 1520,
"SPIC": "",
"Units": 11,
"VAT": 0,
"VATPercent": 0
}
],
"ReceivedCard": 1520,
"ReceivedCash": 0,
"Time": "2022-11-08 14:45:43"
}
}
}
Возможные ошибки
Если связь с ОФД отсутствует, то на экран будет выведена ошибка:
- при закрытии чека:
Чек не может быть закрыт.
При восстановлении связи работа сервиса возобновляется.
- при закрытии смены:
Смена не может быть закрыта, работа кассы заблокирована.
При восстановлении связи работа сервиса возобновляется.
- при закрытии чека:
Если ФМ был извлечен из USB-порта, то на экран будет выведена ошибка:
- при закрытии чека:
Чек не может быть закрыт.
При восстановлении связи работа сервиса возобновляется.
- при закрытии смены:
Смена не может быть закрыта, работа кассы заблокирована.
При восстановлении связи работа сервиса возобновляется.
- при закрытии чека:
Если в ФМ количество неотправленных чеков или смен в ОФД достигло максимума, то на экран будет выведена ошибка:
Чек не может быть закрыт.Если при формировании чека возврата были введены неверные фискальные данные чека продажи, то на экран будет выведена одна из ошибок:
Чек возврата не может быть закрыт.
При закрытии чека возврата без ввода фискальных данных (обычный режим возврата или возврат по чеку продажи, если параметр
requireParams = false) на экран будет выведена ошибка:
Чек возврата не может быть закрыт.В случае, когда нет возможности закрыть смену в
fiscaldriveApiна кассе, можно воспользоваться ПО POS-SIM.
С инструкцией по установке и работе данного ПО можно ознакомиться здесь. Ссылка для скачивания установочного файла находится здесь.POS-SIM может работать в ОС Windows (i386 x64) и в ОС Linux (i386 x64):
- для работы в ОС Linux требуется установка библиотеки
openjdk-8, - для работы в ОС Windows требуется установка библиотеки
javajre-8.
Рекомендуется запускать POS-SIM на устройстве, которое имеет доступ к кассе, на которой необходимо закрыть смену. Перед запуском необходимо:
- убедиться, что файл
run.batсодержит строку: "java -Drpc.url=http://127.0.0.1:3448/rpc/api -jar pos-sim.jar", - выполнить проброс порта
3448с кассы на порт3448локальной машины (так как служба слушает порт только с локальной
машины).
- для работы в ОС Linux требуется установка библиотеки
















