На кассе реализована выгрузка запросов и ответов от ЦРПТ в формате XML.
Во внешнюю систему с кассы в XML-формате выгружается:
- время отправки и тело запроса в сервис True-API системы "Честный знак";
- время получения ответа и тело ответа от сервиса True-API системы "Честный знак".
Данные выгружаются после закрытия кассовой смены и не поднимаются на кассовый сервер.
Данные ЦРПТ сохраняются в базу данных в поле sales в таблице crpt_exchange_log со следующими данными:
- id – порядковый номер записи;
- receipt_num – порядковый номер чека в смене;
- receipt_type – тип чека со значениями 0 и 1, где 0 – продажа, 1 – возврат;
- kiz_status – статус обработки марки со значениями: -1, 0 и 1, где -1 – марка не найдена, 0 – марка прошла проверки, 1 – марка не прошла проверки;
- request_url – адрес запроса;
- request_date – дата/время запроса;
- response_date – дата/время ответа;
- request – запрос в ЦРПТ;
- response – ответ от ЦРПТ;
- shift_id – номер смены;
- shift_close_date – дата/время закрытия смены.
XML-файл состоит из:
- тега crptExchanges со следующими параметрами: ID магазина, номер кассы и номер смены (как в наименовании файла);
- версии (version);
- даты закрытия смены (dateClose);
- самого запроса с ответом из ЦРПТ (exchange).
Запрос (request) состоит из: даты\времени отправки, URL-адреса отправки и самого запроса.
Ответ (response) состоит из: даты\времени получения ответа и самого ответа.
Пример названия файла выгрузки: crtpExchanges_[1144][9876][623]_[1].xml.
В наименовании указаны цифры, обозначающие:
- storeId=1144 – ID магазина;
- posNum=9876 – номер кассы;
- shiftNum=623 – номер смены.
Сам выгруженный XML-файл выглядит так:
<?xml version="1.0" encoding="utf-8"?> <crptExchanges storeId="3001" posNum="12" shiftNum="186"> <version>1.0</version> <dateClose> 2024-04-12T00:40:22 </dateClose> <exchange id="2" storeId="3001" posNum="12" shiftNum="186" receiptNum="1" receiptType="0" kizStatus="1"> <request dateSend="2024-04-12T00:38:46.767" url="https://cdn01.am.crptech.ru:20001/api/v4/true-api/codes/check"> <![CDATA[{"codes":["0104670540176099215LnOjv\u001D93dGVz"],"fiscalDriveNumber":"9999078902016843"}]]> </request> <response dateReceived="2024-04-12T00:38:46.969"> <![CDATA[{"code":0,"description":"ok","codes":[{"cis":"0104670540176099215LnOjv\u001D93dGVz","valid":true,"printView":"0104670540176099215LnOjv","gtin":"04670540176099","groupIds":[8],"verified":true,"found":true,"realizable":false,"utilised":true,"expireDate":"2024-04-30T00:00:00.000Z","isOwner":true,"isBlocked":false,"errorCode":0,"isTracking":false,"sold":false,"packageType":"UNIT","producerInn":"7725344604","grayZone":false}],"reqId":"688787a6-2701-43d8-b4f4-b82ccffb0c88","reqTimestamp":1712871526945}]]> </response> </exchange> </crptExchanges>
Здесь:
dateClose – дата и время закрытия чека;
exchange id="123";
storeId="1144"'
posNum="666";
shiftNum="478";
receiptNum="1"'
receiptType="0": 0 – продажа, 1 - возврат
requestStatus="0": -1 – ошибка на ответ, 0 – ответ был, 1 – ответа не было в заданное время;
kizStatus="1">: -1 – марка не найдена, 0 – марка прошла проверки, 1 – марка не прошла проверки.
Настройка выгрузки на кассе
Настройка выгрузки производится в несколько этапов.
1. На кассовом сервере УКМ 5 по адресу: Магазин – Типы касс нужно выбрать тип кассы и нажать Настройки:
В конфигурационном файле sale.conf (applications\sale\sale.conf) надо раскомментировать следующую строку, после чего сохранить файл:
{include file("conf/applications/sale/crpt_validator.conf")}
2. Также нужно убедиться в том, что сам файл crpt_validator.conf находится в папке sale (applications\sale) и выглядит следующим образом:
3. В файле doc_exporter.conf (services\doc_exporter\doc_exporter.conf) необходимо раскомментировать следующую строку, после чего сохранить файл:
{ include file("conf/services/doc_exporter/xml5_exporter.conf") }
4. Следует убедиться в том, что сам конфигурационный файл xml5_exporter.conf расположен по адресу: services\doc_exporter и содержит параметр isExportCrptExchangeData в значении true:
Файл необходимо сохранить.
Важно! Поля isExportReceipts, isExportMoneyOperations, isExportCrptExchangeData, isExportShiftOpens, isExportCancelledReceipts в конфигурационном файле xml5_exporter.conf являются необязательными и их можно, при желании, удалить, однако в таком случае, значение отсутствующих полей будет false.
5. Нужно создать необходимые папки для выгрузки, если таковые отсутствуют. Пути для выгрузки описаны в полях tempFolder и outputFolder конфигурационного файла xml5_exporter.conf:
Если эти папки отсутствуют, то их следует создать.