Описание шаблона
Шаблон основного чека предназначен для печати документов продажи и возврата. Шаблон имеет строго определенную, но расширяемую структуру. Шаблон чека описан в формате JSON и имеет обязательные переменные.
Базовая структура шаблона чека:
{
"margin_left": 0,
"margin_right": 10,
"show_storno_position": true,
"strikeout_storno_position": true,
"show_storno_payment": true,
"strikeout_storno_payment": true,
"variables": {
"change": "(сдача)",
"type_sale": "Продажа",
"type_return": "Возврат",
"tax_without_vat": "Без НДС"
},
"header": [...],
"positions": [...],
"position_totals": [...],
"payments": [...],
"payment_totals": [...],
"footer": [...]
}
Переменные, отвечающие за отображение данных:
margin_left- Отступ в пикселях от края слева;margin_right- Отступ в пикселях от края справа;show_storno_position: (true,false) - Отображать сторнированные позиции номенклатуры;strikeout_storno_position: (true, false)- Отображать сторнированные позиции номенклатуры зачеркнутыми. Приshow_storno_position = falseопция не используется;show_storno_payment: (true,false) - Отображать сторнированные позиции оплаты.strikeout_storno_payment: (true,false) - Отображать сторнированные позиции оплаты зачеркнутыми. Приshow_storno_payment:falseопция не используется;alignment- Выравнивание текста:0- По левому краю,1- По центру,2- По правому краю;<SF>- Заполнение пробелами ();<DF>- Заполнение прочерками (-);<UF>- Заполнение знаком (_);<EF>- Заполнение знаком равенства (=);<PF>- Заполнение знаком плюс (+);<AF>- Заполнение знаком звёздочка (*).
Текстовые переменные:
change- Текст к сумме сдачиpayment.type_name. Значение по умолчанию - "(сдача)";type_sale- Текст переменнойdoc.typeв чеке документа продажи. Значение по умолчанию - "Продажа";type_return- Текст переменнойdoc.typeв чеке документа возврата. Значение по умолчанию - "Возврат";tax_without_vat- Текст для отображения, если позиция с товаром без НДС. Значение по умолчанию - "Без НДС".
Далее структура шаблона имеет следующие разделы:
header - Заголовок шаблона чека
Может содержать информацию о смене, кассире, кассе, дате продажи.
"header":[
{
"text": "",
"font": "",
"interval": 30,
"alignment": 1,
"img_src": "\\Cheque\\regos.png",
"img_width": 180,
"img_height": 180
},
{
"text": "Добро пожаловать",
"font": "Lucida Console, 12pt, style=bold",
"interval": 10,
"alignment": 1
},
{
"text": "Код:<SF><doc.code>",
"font": "Lucida Console, 8pt",
"interval": -3,
"alignment": 1
},
{
"text": "<doc.date><SF><doc.time>",
"font": "Lucida Console, 8pt",
"interval": -3,
"alignment": 1
},
{
"text": "Тип:<SF><doc.type>",
"font": "Lucida Console, 8pt",
"interval": -3,
"alignment": 1
},
{
"text": "Касса:<SF>0000<doc.cash_id>",
"font": "Lucida Console, 8pt",
"interval": -3,
"alignment": 1
},
{
"text": "Смена:<SF><doc.session>",
"font": "Lucida Console, 8pt",
"interval": -3,
"alignment": 1
},
{
"text": "Кассир:<SF><doc.cashier_name>",
"font": "Lucida Console, 8pt",
"interval": -3,
"alignment": 1
},
{
"text": "<DF>",
"font": "Lucida Console, 8pt",
"interval": 3,
"alignment": 1
}
],
В разделе доступны для использования следующие переменные:
doc.code- Код документа продажи или возврата;doc.date- Дата регистрации чека;doc.time- Время регистрации чека;doc.session- Код кассовой смены, в которой регистрируется чек;doc.cashier_name- Имя кассира;doc.seller_name- Имя продавца;doc.type- Тип документа. Значение переменной берётся из переменных в начале шаблона;doc.cash_id- ID кассы;doc.cash_serial_num- Номер кассы;doc.card_barcode- Штрих-код карты покупателя;doc.customer_main_phone- Основной телефон покупателя;doc.customer_full_name- ФИО покупателя;doc.promo_balance- Баланс карты покупателя до покупки (возврата);doc.promo_withdraw- Списанная сумма бонусов;doc.promo_enrollment- Начисленная сумма бонусов;doc.promo_new_balance- Баланс карты покупателя после покупки (возврата).
Если текстовый блок в данном разделе включает в себя следующие теги, то текстовое содержимое блока игнорируется и в блоке отображается указанное изображение:
img_src- "\Cheque\regos.png" - Адрес изображения;img_width- 180 - Ширина изображения в пикселях;img_height- 180 - Высота изображения в пикселях.
Пример:
{
"text": "",
"font": "",
"interval": 30,
"alignment": 1,
"img_src": "\\Cheque\\regos.png",
"img_width": 180,
"img_height": 180
},
Если текстовый блок в данном разделе включает в себя следующие теги, то текстовое содержимое блока преобразуется в указанный тип штрих-кода и отображается в блоке:
barcode_height- 50 - Высота штрих-кода в пикселях;barcode_module- 2 - Размер штрих-кода, коэффициент масштабирования. Минимальное значение 1;barcode_show_text- (true,false) - Отображать текст под штрих-кодом;barcode_type- Тип штрих-кода:1- Code128,2- EAN13,3- QRCode.
Пример:
{
"font": "Lucida Console, 8pt",
"text": "<doc.code>",
"barcode_height": 50,
"barcode_module": 2,
"barcode_show_text": false,
"barcode_type": 1,
"interval": 30,
"alignment": 1
},
positions - Список позиций
Содержит информацию о списке номенклатуры, её количестве, цене.
"positions": [
{
"text": "<pos.n>. <pos.item.name>[<pos.item.unit>]",
"font": "Lucida Console, 6pt",
"interval": 2,
"alignment": 0
},
{
"text": "Цена без скидки:<SF><pos.full_price>",
"font": "Lucida Console, 6pt",
"interval": 2,
"alignment": 1
},
{
"text": "Размер скидки за 1 единицу:<SF><pos.discount_value>",
"font": "Lucida Console, 6pt",
"interval": 2,
"alignment": 1
},
{
"text": "Сумма скидки на позицию:<SF><pos.discount_amount>",
"font": "Lucida Console, 6pt",
"interval": 2,
"alignment": 1
},
{
"text": "<pos.quantity> x <pos.price> = <pos.amount>",
"font": "Lucida Console, 7pt",
"interval": -5,
"alignment": 2
},
{
"text": "в т.ч. НДС <pos.vat_amount> ",
"font": "Lucida Console, 7pt",
"interval": -5,
"alignment": 2
}
],
В разделе доступны для использования следующие переменные:
pos.n- Номер позиции номенклатуры;pos.item.name- Наименование номенклатуры;pos.item.code- Код номенклатуры;pos.item.articul- Артикул номенклатуры;pos.item.unit- Единица измерения количества номенклатуры;pos.item.unit2- Единица измерения количества номенклатуры с КДТ;pos.item.kdt- Количество номенклатуры с КДТ;pos.item.size- Размер номенклатуры;pos.item.color- Цвет номенклатуры;pos.item.brand- Бренд номенклатуры;pos.item.producer- Производитель номенклатуры;pos.item.country- Страна производителя номенклатуры;pos.item.department- Отдел номенклатуры;pos.item.group- Номенклатурная группа;pos.quantity- Количество номенклатуры;pos.price- Цена номенклатуры;pos.amount- Значение суммы цены номенклатуры (pos.quantity * pos.price);pos.full_price- Цена без скидки;pos.discount_value- Размер скидки за 1 единицу номенклатуры;pos.discount_amount- Сумма скидки на позицию в чеке (pos.quantity * pos.discount_value);pos.vat.name- Наименование ставки НДС;pos.vat_amount- Значение суммы ставки НДС;pos.icps- ИКПУ;pos.label- Маркировка.
position_totals - Итоги по списку позиций
Содержит информацию о итоговой сумме, сумме скидки.
"position_totals": [
{
"text": "<DF>",
"font": "Lucida Console, 8pt",
"interval": 3,
"alignment": 1
},
{
"text": "Всего:<SF><pos.total.price2>",
"font": "Lucida Console, 8pt",
"interval": 2,
"alignment": 0
},
{
"text": "Скидки:<SF><pos.total.discount>",
"font": "Lucida Console, 8pt",
"interval": 2,
"alignment": 0
},
{
"text": "К оплате:<SF><pos.total.price>",
"font": "Lucida Console, 10pt, style=bold",
"interval": 2,
"alignment": 0
},
{
"text": "<DF>",
"font": "Lucida Console, 8pt",
"interval": 3,
"alignment": 1
}
],
В разделе доступны для использования следующие переменные:
pos.total.price2- Значение полной суммы чека;pos.total.discount- Значение суммы скидки;pos.total.price- Значение итоговой суммы чека с учетом скидки.
payments - Список позиций оплат
Содержит информацию о списке оплат, сумме каждой оплаты и её типа.
"payments": [
{
"text": "<payment.type_name><SF><payment.value>",
"font": "Lucida Console, 8pt",
"interval": 2,
"alignment": 0
}
],
В разделе доступны для использования следующие переменные:
payment.type_name- Наименование типа оплаты;payment.value- Значение типа оплаты.
payment_totals - Итоги по списку оплат
Содержит информацию о итоговой сумме оплат, сумме сдачи.
"payment_totals": [
{
"text": "<DF>",
"font": "Lucida Console, 8pt",
"interval": 3,
"alignment": 1
},
{
"text": "Оплачено:<SF><payment.total.payed_value>",
"font": "Lucida Console, 8pt, style=bold",
"interval": 2,
"alignment": 0
},
{
"text": "Сдача:<SF><payment.total.change_value>",
"font": "Lucida Console, 8pt, style=bold",
"interval": 2,
"alignment": 0
},
{
"text": "<DF>",
"font": "Lucida Console, 8pt",
"interval": 3,
"alignment": 1
}
],
В разделе доступны для использования следующие переменные:
payment.total.payed_value- Общая сумма оплаты;payment.total.change_value- Значение суммы сдачи.
footer - Нижняя часть шаблона чека
Содержит дополнительную информацию.
"footer": [
{
"font": "Lucida Console, 8pt",
"text": "<doc.code>",
"barcode_height": 50,
"barcode_module": 2,
"barcode_show_text": false,
"barcode_type": 1,
"interval": 30,
"alignment": 1
},
{
"text": "Спасибо за покупку",
"font": "Lucida Console, 10pt, style=bold",
"interval": 3,
"alignment": 1
}
]
В разделе доступны для использования те же переменные, что и в блоке header.