Шаблон имеет строго определенную,но расширяемую структуру. Шаблон чека описан в формате 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":[ ]
}
Далее структура шаблона имеет следующие разделы:
Может содержать информацию о смене, кассире, кассе, дате продажи.
"header":[
{
"text" : "",
"font" : "",
"interval" : 30,
"alignment": 1,
"img_src":"\\Cheque\\regos.png",
"img_width":180,
"img_height":180
},
{
"text" : "<doc.date><SF><doc.time>",
"font" : "Lucida Console, 8pt",
"interval" : -3,
"alignment": 1
},
В разделе доступны для использования следующие переменные:
Если текстовый блок в данном разделе включает в себя следующие теги, то текстовое содержимое блока игнорируется и в блоке отображается указанное изображение:
Пример:
{
"text" : "",
"font" : "",
"interval" : 30,
"alignment": 1,
"img_src":"\\Cheque\\regos.png",
"img_width":180,
"img_height":180
},
Если текстовый блок в данном разделе включает в себя следующие теги, то текстовое содержимое блока шифруется в указанный тип штрих-кода и отображается в блоке:
Пример:
{
"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":[
{
"text" : "<pos.n>. <pos.item.name>[<pos.item.unit>]",
"font" : "Lucida Console, 6pt",
"interval" : 2,
"alignment": 0
},
{
"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
}
],
В разделе доступны для использования следующие переменные:
Содержит информацию о итоговой сумме, сумме скидки.
"position_totals":[
{
"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
},
],
В разделе доступны для использования следующие переменные:
Содержит информаци о списке оплат, сумме каждой оплаты и её типа.
"payments":[
{
"text" : "<payment.type_name><SF><payment.value>",
"font" : "Lucida Console, 8pt",
"interval" : 2,
"alignment": 0
}
],
В разделе доступны для использования следующие переменные:
Содержит информацию о итоговой сумме оплат, сумме сдачи.
"payment_totals":[
{
"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
},
],
В разделе доступны для использования следующие переменные:
Содержит дополнительную информацию.
"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.