Начиная с версии 4.6.275 пакет fiscaldriveapi был обновлен. После обновления необходимо перезагрузить кассу или перезапустить сервис.

Передача данных на сервер ОФД Узбекистана обеспечивается сервисом fiscaldriveapi (Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан).

Установка сервиса

Для обеспечения передачи данных на сервер ОФД Узбекистана необходимо установить пакет fiscaldriveapi с помощью команды:

aptitude install fiscaldriveapi

Подключение фискального модуля

Для подключения фискального модуля необходимо:

  1. Получить список подключенных USB-устройств, выполнив команду:

    lsusb
  2. Найти в списке подключенных USB-устройств токен Feitian:

  3. Скопировать значения VID:PID и наименование: "VID=096e, PID=080f, наименование – Feitian Technologies, Inc".

  4. Внести скопированные данные в файл /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist:
    • в конец секции [ifdVendorID] добавить значение VID,
    • в конец секции [ifdProductID] добавить значение PID,
    • в конец секции [ifdFriendlyName] добавить наименование токена.
  5. Перезапустить кассовую программу.

Настройка сервиса

Параметры подключения к серверу ОФД Узбекистана настраиваются в конфигурационном файле /linuxcash/cash/fiscaldriveapi/config.ini в секции [smartcard]:

СекцияНаименованиеТип данныхОписание
smartcardfactory_idчисловойИдентификатор фискального модуля (ФМ)

Для параметра factory_id необходимо указать значение. Для определения значения перейдите в директорию установки fiscaldriveapi и выполните команду:

./fiscal-drive-api -op list

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

Пример настройки
[smartcard]
factory_id=
...

Подключение принтера чеков и настройка драйвера

Подключение драйвера "Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан" возможно только при наличии принтера чеков.

Для настройки драйвера "Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан" в Сервисном меню через Менеджер оборудования необходимо:

  1. Подключить принтер чеков:
  2. Добавить драйвер "Программное обеспечение виртуальной кассы ARTIX версии 4.6.228-5349, Узбекистан":
  3. Настроить параметры драйвера:
     
    • Номер ФР – порядковый номер ККМ. 
    • ФР – указывается ранее подключенный принтер чеков. 
    • Адрес – адрес сервера ОФД. Указывается значение вида 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 должна быть добавлена как минимум одна валюта с соответствующим типом оплаты.

Авансовые и кредитные чеки

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

  1. Для поля "Типы оплаты в ФР" установить 3-й или 4-й тип оплаты соответственно.
  2. Для поля "Типы оплаты в программе" установить тип "Электронные".

    Оплата по авансовому и кредитному чеку производится только на основе типа "Электронные".
  3. В свойствах валюты установить флаги:
    1. "Нельзя платить часть суммы".
    2. "Можно платить только без сдачи".
    3. "Запретить оплату для чека возврата".

Подробнее о добавлении валют можно прочитать в разделе "Валюты".

Для печати авансовых и кредитных чеков используется шаблон 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 для единицы измерения в БД кассовой программы.

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

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

  1. Активировать модуль маркированных товаров с помощью параметра markedgoods в конфигурационном файле /linuxcash/cash/conf/ncash. ini.d/markedgoods.ini в секции [plugins].
  2. Настроить необходимую подсекцию и маску для проверки Data Matrix. Подробнее об этом можно прочитать в разделе "Реализация маркированных товаров".
  3. Перезапустить программу.
  4. Добавить маркированный товар в чек.

При передаче данных в ОФД в поле 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

Начиная с версии 4.6.218-4 в кассовом ПО Artix реализована передача фискальных данных в процессинг PaymeGO.

Начиная с версии 4.6.219 в кассовом ПО Artix реализована передача фискальных данных в процессинг 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"
    }
  }
}

Возможные ошибки

  1. Если связь с ОФД отсутствует, то на экран будет выведена ошибка:

    • при закрытии чека:

      Чек не может быть закрыт.
      При восстановлении связи работа сервиса возобновляется.
    • при закрытии смены:

      Смена не может быть закрыта, работа кассы заблокирована.
      При восстановлении связи работа сервиса возобновляется.
  2. Если ФМ был извлечен из USB-порта, то на экран будет выведена ошибка:

    • при закрытии чека:

      Чек не может быть закрыт.
      При восстановлении связи работа сервиса возобновляется.
    • при закрытии смены:

      Смена не может быть закрыта, работа кассы заблокирована.
      При восстановлении связи работа сервиса возобновляется.
  3. Если в ФМ количество неотправленных чеков или смен в ОФД достигло максимума, то на экран будет выведена ошибка:

    Чек не может быть закрыт.

  4. Если при формировании чека возврата были введены неверные фискальные данные чека продажи, то на экран будет выведена одна из ошибок:

    Чек возврата не может быть закрыт.

  5. При закрытии чека возврата без ввода фискальных данных (обычный режим возврата или возврат по чеку продажи, если параметр requireParams = false) на экран будет выведена ошибка:

    Чек возврата не может быть закрыт.

  6. В случае, когда нет возможности закрыть смену в 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 локальной машины (так как служба слушает порт только с локальной
      машины).
  • No labels