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

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

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

"header":[
    {
      "text": "",
      "font": "",
      "interval": 10,
      "img_src": "1",
      "alignment": 1,
      "img_width": 220,
      "img_height": 60
    },
    {
      "text": "<company.name> ",
      "font": "Lucida Console, 8pt, style=bold",
      "interval": -10,
      "alignment": 1
    }
]

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

  • doc.id - ID документа в фискальном модуле
  • 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 - Номер дубликата чека. Если чек печатается в первый раз, данная переменная не выводится
  • doc.terminal_slip - SLIP (ответ терминала в текстовом виде с информацией о платеже)
  • 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:

"positions":[
    {
      "text": "<pos.n>. <pos.name> [<pos.unit>]",
      "font": "Lucida Console, 7pt",
      "interval": 15,
      "alignment": 0
    },
    {
      "text": "Sh.k: <pos.barcode>",
      "font": "Lucida Console, 7pt",
      "interval": -10,
      "alignment": 0
    }
]

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

  • pos.n - Номер позиции номенклатуры
  • pos.name - Наименование номенклатуры
  • pos.code - Код номенклатуры
  • pos.articul - Артикул номенклатуры
  • pos.unit - Единица измерения количества номенклатуры
  • pos.unit2 - Единица измерения количества номенклатуры с КДТ
  • pos.kdt - Количество номенклатуры с КДТ
  • pos.size - Размер номенклатуры
  • pos.color - Цвет номенклатуры
  • pos.brand - Бренд номенклатуры
  • pos.producer - Производитель номенклатуры
  • pos.country - Страна производителя номенклатуры
  • pos.department - Отдел номенклатуры
  • pos.group - Номенклатурная группа
  • pos.quantity - Количество номенклатуры
  • pos.price - Цена номенклатуры
  • pos.amount - Значение суммы цены номенклатуры (pos.quantity * pos.price)
  • pos.vat_value - Ставки НДС
  • pos.vat_amount - Значение суммы ставки НДС
  • pos.discount - Процент скидки
  • pos.amount_discount - Сумма скидки
  • pos.icps - ИКПУ. Примечание: данное поле указывать в отдельном блоке
  • pos.label - Маркировка. Примечание: данное поле указывать в отдельном блоке
  • pos.owner_type - Происхождение товара
  • pos.barcode - Штрих-код цифрами
  • pos.inn - ИНН комиссионера

3. position_totals - Итоги по списку позиций.

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

Пример раздела position_totals:

"position_totals":[
    {
      "text": "<DF>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 1
    },
    {
      "text": "Jami:<SF><pos.total_amount>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    }
]

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

  • pos.total_amount - Значение полной суммы чека с учётом скидки
  • pos.total.discount - Значение суммы скидки
  • pos.total_recieved - Сумма принятых оплат
  • payment.total_other - Сумма оплат другими формами оплаты (пока не задействовано)
  • pos.total_price - К оплате
  • pos.total_vat - Сумма НДС

4. payments - Список позиций оплат.

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

Пример раздела payments:

"payments":[
    {
      "text": "<payment.type_name><SF><payment.value>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    },
    {
      "text": "Bank kartasi turi<SF><payment.card_type>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    }
]

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

  • payment.type_name - Наименование типа оплаты
  • payment.value - Значение типа оплаты
  • payment.card_type - Тип пластиковой карты (2 - личная, 1 - корпоративная)
  • payment.rrn - RRN (Идентификатор транзакции платежа процессингово центра)

Содержит дополнительную информацию.

Пример раздела footer:

"footer":[
    {
      "text": "FB:<doc.fiscal_sign>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    },
    {
      "text": "FM chek raqami:<doc.id>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    }
]

В разделе доступны для использования те же переменные, что и в блоке header.

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