Описание шаблона

Шаблон чека продажи(возврата)

Шаблон имеет строго определенную,но расширяемую структуру. Шаблон чека описан в формате JSON и имеет обязательные переменные.

Пример чека продажи(возврата)

Базовая структура шаблона чека:

{
  "margin_left": 0, 
  "margin_right": 10,

  "variables":{
    "type_sale":"Sotuv",
    "type_return":"Qaytaruv"
  },
  "header":[  ],    
  "positions":[  ],    
  "position_totals":[  ],    
  "payments":[  ],    
  "footer":[  ]
}
Переменные, отвечающие за отображение данных:
  • "margin_left" - Отступ в пикселях от края слева.
  • "margin_right" - Отступ в пикселях от края справа.
  • "alignment" - выравнивание текста. 0 - по левому краю, 1 - по центру, 2 - по правому краю;
  • <SF> - заполнение пробелами (" ");
  • <DF> - заполнение прочерками ("-");
  • <UF> - заполнение знаком ("_");
  • <EF> - заполнение знаком равенства ("=");
  • <PF> - заполнение знаком плюс ("+");
  • <AF> - заполнение знаком звёздочка ("*").
Текстовые переменные:
  • "type_sale":"Sotuv" - Текст переменной doc.type в чеке домента продажи
  • "type_return":"Qaytaruv" - Текст переменной 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.cash_id - ID кассы
  • doc.type - Тип документа. Данные переменной берутся из переменных в начале шаблона
  • doc.fiscal_sign - Фискальный признак чека
  • doc.terminal_id - ID фискального модуля
  • doc.sn - Серйиный номер REGOS: VCR
  • doc.qr_code - QR код
  • doc.total_recieved - Сумма принятых оплат
  • doc.duplicate - Номер дубликата чека. Если чек печатается в первый раз, данная переменная не выводится
  • company.inn - ИНН компании
  • company.name - Наименование компании
  • company.address - Адрес торговой точки или компании
  • company.phone - контактный номер

В данном разделе можно использовать собственные переменные, которые передаются непосредственно в чеке. Наименование такой переменной задаётся по следующему формату:
custom.<name>, где name - это значение поля name в custom_variables

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

  • "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 - Значение суммы ставки НДС
  • pos.discount - Процент скидки
  • pos.amount_discount - Сумма скидки
  • pos.icps - ИКПУ. Примечание: данное поле указывать в отдельном блоке
  • pos.label - Маркировка. Примечание: данное поле указывать в отдельном блоке
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_amount - Значение полной суммы чека с учётом скидки
  • pos.total.discount - Значение суммы скидки
  • pos.total_recieved - Сумма принятых оплат
  • payment.total_other - Сумма оплат другими формами оплаты (пока не задействовано)
  • pos.total_price - К оплате
  • pos.total_vat - Сумма НДС
4. payments - Список позиций оплат.

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

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

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

  • payment.type_name - Наименование типа оплаты
  • payment.value - Значение типа оплаты
5. 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.

Пример чека продажи(возврата)