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