5.1. Шаблон основного чека

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

  "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 опция не используется.
Текстовые переменные:
  • "change":"(сдача)" - Текст к сумме сдачи в payment.type_name
  • "type_sale":"Продажа" - Текст переменной doc.type в чеке домента продажи
  • "type_return":"Возврат" - Текст переменной doc.type в чеке домента возврата

Далее структура шаблона имеет следующие разделы:

1. header - Заголовок шаблона чека.

Может содержать информацию о смене, кассире, кассе, дате продажи.

"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
    },

В разделе доступны для использования следующие переменные:

  • doc.code - Код документа
  • doc.date - Дата регистрации чека
  • doc.time - Время регистрации чека
  • doc.session - Кассовая смена, в которой регистрируется чек
  • doc.cashier_name - Имя кассира
  • doc.seller_name - Имя продавца
  • doc.type - Тип документа. Данные переменной берутся из переменных в начале шаблона.
  • doc.cash_id - ID кассы
  • doc.cash_serial_num - Номер кассы

Если текстовый блок в данном разделе включает в себя следующие теги, то текстовое содержимое блока игнорируется и в блоке отображается указанное изображение:

  • "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 - Тип штрих-кода. 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
    },
2. positions - Список позиций.

Содержит информацию о списке номенклатуры, её количестве, цене.

"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
    }
  ],

В разделе доступны для использования следующие переменные:

  • 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.vat.name - Наименование ставки НДС
  • pos.vat_amount - Значение суммы ставки НДС
3. position_totals - Итоги по списку позиций.

Содержит информацию о итоговой сумме, сумме скидки.

"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
    },
  ],

В разделе доступны для использования следующие переменные:

  • pos.total.price2 - Значение полной суммы чека
  • pos.total.discount - Значение суммы скидки
  • pos.total.price - Значение итоговой суммы чека с учетом скидки
4. payments - Список позиций оплат.

Содержит информаци о списке оплат, сумме каждой оплаты и её типа.

"payments":[
    {
      "text" : "<payment.type_name><SF><payment.value>",
      "font" : "Lucida Console, 8pt",
      "interval" : 2,
      "alignment": 0
    }
  ],

В разделе доступны для использования следующие переменные:

  • payment.type_name - Наименование типа оплаты
  • payment.value - Значение типа оплаты
5. payment_totals - Итоги по списку оплат.

Содержит информацию о итоговой сумме оплат, сумме сдачи.

"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
    },
  ],

В разделе доступны для использования следующие переменные:

  • payment.total.payed_value - Общая сумма оплаты
  • payment.total.change_value - Значение суммы сдачи
6. 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.

Пример основного чека.