Печать
актуальнаяПодставить свои реквизиты на бумажный чек или получить от кассы то, что она напечатала.
Свои значения на чеке
Необязательный объект print в документе это значения полей, которые касса печатает на чеке. Где и каким шрифтом строка встанет на бумаге, решает касса.
{
"id": "<GUID>",
"operation": "INCOME",
"cashless": true,
"printInfo": "Спасибо за покупку",
"print": {
"storeName": "Магазин на Чуй",
"tin": "00000000000000",
"companyName": "ОсОО Ромашка",
"address": "720011, Бишкек, Чуй 100",
"cashier": "Иванов И."
},
"products": [ … ]
}| Имя | Что печатается | Откуда берётся, если не передано |
|---|---|---|
storeName | название точки в шапке | регистрационные данные кассы |
tin | строка «ИНН» в шапке | регистрационные данные кассы |
companyName | организация в шапке | регистрационные данные кассы |
address | адрес в шапке | регистрационные данные кассы |
cashier | строка «Кассир» | имя кассира из настроек |
Правила:
- Все поля необязательны, значения это строки. Пустое значение или
nullозначает печать как обычно. - Значения действуют только на этот документ и в настройках кассы не сохраняются.
- Длина до 128 символов, лишнее обрезается. Длинное значение переносится по ширине чека: около 32 символов на ленте 58 мм, около 48 на 80 мм. Управляющие символы и переводы строк удаляются.
- Неизвестные имена игнорируются, произвольные поля вроде
tableкасса печатать не умеет. Для своей строки в конце чека используйтеprintInfo. - Ошибка внутри блока не отклоняет документ.
- Блок работает на обоих каналах и в старом
/gate/receipt. Те же имена принимает внесение и изъятие. В операциях со сменой блок не поддерживается. - При
fiscal: falseчек не печатается, блок игнорируется.
Номер чека, смену, дату, СНО, РН, ФМ, ФД, ФПД, суммы и ставки передать нельзя: они берутся из подписанного документа и позиций чека.
Получить напечатанное
По запросу в ответе приходит объект print: реквизиты шапки, номер чека в смене, кассир, СНО. Вместе с основными полями ответа и своим документом этого достаточно, чтобы показать такой же чек у себя.
Флаг needPrint: true можно поставить в запросе статуса или один раз в документе. Второй способ удобнее: блок придёт во всех ответах по этому документу.
curl -X POST 'http://192.168.0.50:8090/gate/receipt-status-v4' \
-H 'Content-Type: application/json' -H 'Expect:' \
-d '{ "id": "<GUID>", "needPrint": true }'{ "id": "<GUID>", "operation": "INCOME", "needPrint": true, "products": [ … ] }Ответ:
{
"id": "4c29e46b-2f1a-431c-94d4-17350bd495b1",
"status": "OK",
"amount": 100.00,
"fdNumber": "77",
"print": {
"title": "Контрольно-кассовый чек",
"operation": "Продажа",
"storeName": "Кофейня Ромашка",
"tin": "00000000000000",
"companyName": "ОсОО Ромашка",
"address": "720011, Бишкек, Чуй 100",
"receiptNumber": "5",
"cashier": "Иванов И.",
"sno": "Упрощенная система налогообложения на основе единого налога",
"rrn": "626711866724"
}
}| Поле | Что это |
|---|---|
title | заголовок чека |
operation | подпись операции: Продажа, Возврат Продажи |
storeName, tin, companyName, address | реквизиты шапки. Если присылали свой блок print, здесь ваши значения |
receiptNumber | номер чека внутри смены |
cashier | кассир: ваш из блока или имя из настроек кассы |
sno | система налогообложения |
originFdNumber, originFnNumber | ФД и ФМ чека-основания, только у возврата |
rrn | RRN банковской операции, если оплата была картой |
Остального в блоке нет, потому что оно у вас уже есть:
| Что нужно для печати | Откуда брать |
|---|---|
| ФД, ФПД, РН, ФМ, смена | основные поля ответа |
| Дата и время | gnsDate |
| Ссылка для QR | qr |
| Сумма чека | amount |
| Позиции, цены, ставки | ваш документ |
| Разбивка наличные и безнал | ваш документ |
| Текст в конце чека | ваш printInfo |
Единственное, чего нет нигде, это суммы налогов. Касса считает их сама: если нужна строка НДС 12%: 10.62, считайте её по ставкам позиций.
Правила:
- Блок приходит только при
status: OK, то есть когда чек пробит. ПриPROCESSING,ERROR,CANCELLEDиPAIDего нет. - Старый TCP
/gate/receiptблок не отдаёт, у него укороченный ответ. - На демо-кассе
titleпо TCP равенДЕМО -> НЕ ФИСКАЛЬНЫЙ, по HTTP обычному заголовку. Демо-режим это настройка самой кассы, серверу она не передаётся. - Блока может не быть и при
OK, если результат восстановлен из базы сервера: сервер перезапускали, статус спрашивает другая сессия или повторныйreceipt-v4ответил… alrady exists in DB. Реквизиты чека в этом случае остаются в основных полях ответа. Проверяйте наличие блока.