Шаблон основного чека предназначен для печати документов продажи и возврата. Шаблон имеет строго определенную, но расширяемую структуру. Шаблон чека описан в формате 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.