Начиная с версии 4.6.221 для формирования чеков продажи используется шаблон uzofd_sale.xml
, для формирования чеков возврата – uzofd_back.xml
, для формирования z-отчетов – uzofd_zreport.xml
.
Начиная с версии 4.6.221 переводы фискальных признаков задаются в шаблонах uzofd_sale.xml
и uzofd
_back.xml
.
Начиная с версии 4.6.223 пакет fiscaldriveapi
был обновлен. После обновления необходимо перезагрузить кассу или перезапустить сервис.
Начиная с версии 4.6.223 реализована передача номера телефона в чек при оплате через ClickPass.
Начиная с версии 4.6.226 добавлена поддержка авансовых и кредитных чеков.
Передача данных на сервер ОФД Узбекистана обеспечивается сервисом 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
параметры сертификата не указываются.
Запуск сервиса
Запуск сервиса fiscaldriveapi
осуществляется двумя способами:
- при перезагрузке кассы,
- с помощью утилиты
service
.
Для запуска сервиса fiscaldriveapi
при помощи утилиты service
необходимо в консоли кассы выполнить команду:
service fiscaldriveapi start
Если все настройки заданы верно, то после закрытия документа на чеке могут быть напечатаны "Номер версии ВК", "Серийный номер ФМ", "Номер чека", "Фискальный признак", "Дата и время" и QR-код для просмотра чека на сайте ОФД. Текст для печати можно задать в шаблонах.
Особенности настройки для разных типов оплаты
Для корректной работы драйвера "Программное обеспечение виртуальной кассы 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]
. - Настроить необходимую подсекцию и маску для проверки
Data
Matrix
. Подробнее об этом можно прочитать в разделе "Реализация маркированных товаров". - Перезапустить программу.
- Добавить маркированный товар в чек.
При передаче данных в ОФД в поле 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"}'
Для возврата по чеку продажи необходимо в утилите администрирования Yuki на клавишу настроить действие "Возврат по чеку продажи" с командой COMMAND_BACKBYSALE
и параметром requireParams = true
. Подробнее о настройке действий можно прочитать в разделе "Настройка действий".
При выполнении операции возврата осуществляется проверка на наличие в БД сохраненных фискальных данных чека продажи:
- если поле
frdoccopy
заполнено, то чек возврата успешно закрывается. Ручной ввод фискальных данных чека продажи не требуется: - если поле
frdoccopy
не заполнено, то при формировании чека возврата на экран будет выведен диалог ввода фискальных данных чека продажи:
При нажатии на кнопку "Отмена" чек возврата не будет сформирован.
Ввод фискальных данных может осуществляться вручную или считыванием QR-кода чека продажи. При вводе данных вручную проверяется правильность заполнения полей:- Серийный номер ФМ: 2 первых символа – заглавные латинские буквы + 12 символов – цифры.
- Фискальный признак: 12 символов – цифры.
- Номер чека: цифры.
- если введены некорректные данные, то поля будут подсвечены красным цветом:
Введите корректные фискальные данные и нажмите клавишу "Ввод", чек возврата будет сформирован.
Передача фискальных данных в процессинги 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 требуется установка библиотеки
java
jre-8
.
Рекомендуется запускать POS-SIM на устройстве, которое имеет доступ к кассе, на которой необходимо закрыть смену. Перед запуском необходимо:
- убедиться, что файл
run.bat
содержит строку: "java -Drpc.url=http://127.0.0.1:3448/rpc/api -jar pos-sim.jar"
, - выполнить проброс порта
3448
с кассы на порт3448
локальной машины (так как служба слушает порт только с локальной
машины).
- для работы в ОС Linux требуется установка библиотеки