SetRetail10 ◾️ Редактирование чека продажи с помощью XML-разметки

Публичное пространство

SetRetail10 ◾️ Редактирование чека продажи с помощью XML-разметки

Внимание!

Настоятельно рекомендуется производить редактирование только в редакторе чековых форм!

Логика редактирования

Все вносимые изменения в форме чека записываются в базу данных 

set → 
cash_print_form → 
check-sale → 
xml_representation

1. При клике по ссылке восстановить стандартные настройки загрузится форма чека из папки сервера в базу данных 

set → 
cash_print_form → 
check-sale → 
xml_representation

  • Windows: \SetRetail10\standalone\configuration\modules\cash\default-cash-documents\check-sale.xml

  • Linux: var\lib\jboss\standalone\configuration\modules\cash\default-cash-documents\check-sale.xml

После создания в редакторе чековых форм эталонной формы чека сохраните её в файл формы на сервере, для того, чтобы при клике восстановить стандартные настройке загружалась утверждённая форма.

Состав xml-формы чека

Родительские узлы

В родительских узлах определяются основные секции в которых содержатся элементы отображения данных из редактора чековых форм.

XML-свойство

Секция чека

XML-свойство

Секция чека

<section id="logo">

Логотип

Отвечает только за вывод на печать логотипа, загруженного через утилиту фискального регистратора

<section id="header">

Заголовок/шапка

<section id="position">

Позиции

<section id="payment">

Оплаты

<section id="discount">

Скидки

<section id="tax">

Налоги

<section id="total">

Итоги

<section id="bonuses">

Бонусные балансы

<section id="level">

https://crystals.atlassian.net/browse/SLS-2965

https://crystals.atlassian.net/browse/CR-9451

10.3.30.0

ТОЛЬКО SETLOYALTY

Уровневая программа лояльности

<section id="presentCard">

Подарочная карта

<section id="slip">

Банковский слип внутри чека 

<section id="includedSlips">

Слип лояльности в составе чека

<section id="fiscal">

Фискальная часть

<section id="footer">

Подвал

Описание родительских узлов

Для нефискальных принтеров типа Axiohm редактирование любой из секции приведёт к изменению данных на форме чека. Для фискальных принтеров Пирит 1Ф, Пирит 2Ф редактирование следующих секций не приведет к изменению формы чека, так как данные реквизиты настраиваются специальными программами для фискального принтера.

Узел

Секция

Редактирование данных для фискального принтера

Пирит 1Ф, Пирит 2Ф

logo

Логотип

Нет

Служебная. Не подлежит редактирования также и на нефискальных режимах.

header

Заголовок (шапка чека)

Нет

Реквизиты печатаются на основе данных карточки магазина и юридического лица

position

Позиции

Да

payment

Типы оплат

Нет

discount

Скидки

Да

tax

Налоги

Нет

total

Итоги

Нет

bonuses

Бонусные балансы

Да

presentCard

Подарочная карта

Да

level

https://crystals.atlassian.net/browse/SLS-2965

https://crystals.atlassian.net/browse/CR-9451

10.3.30.0

ТОЛЬКО SETLOYALTY

Уровневая программа лояльности

Да

includedSlips

Слип лояльности в составе чека

Нет

slip

Банковский слип внутри чека 

Нет

Только размер шрифта.

fiscal

Фискальная часть

Нет

footer

Подвал

Нет

cut

Специальная секция, которая отправляет команду чековому принтеру сделать отрез бумаги

Нет

Служебная. Не подлежит редактирования также и на нефискальных режимах.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <document xmlns="http://crystals.ru/pos/fiscalprinter/templates/parser"> <section id="logo"/> <section id="header"> <line font="normal"> <element precision="0" value="ShopName" clip="true" width="36" filler="space" align="center"/> </line> <line font="normal"> <element precision="0" value="ShopAddress" clip="true" width="36" filler="space" align="center"/> </line> <line font="normal"> <text value="-----------------------------------------" clip="true" width="36" filler="space" align="left"/> </line> <line font="normal"> <text value="Смена:" width="6" filler="space" align="left"/> <element precision="0" value="numshift" width="6" filler="space" align="left"/> <text value="ЭКЛЗ:" clip="true" width="5" filler="space" align="right"/> <element precision="0" value="eklz" width="12" filler="space" align="right"/> </line> <line font="normal"> <text value="Номер кассы:" width="12" filler="space" align="left"/> <element precision="0" value="cashnum" width="6" filler="space" align="left"/> <text value="ИНН:" clip="true" width="4" filler="space" align="right"/> <element precision="0" value="inn" width="12" filler="space" align="right"/> </line> <line font="normal"> <text value="Кассир:" width="7" filler="space" align="left"/> <element precision="0" value="cashier" clip="true" width="6" filler="space" align="left"/> </line> <line font="normal"> <text value="----------------------------------------" clip="true" width="36" filler="space" align="left"/> </line> <line font="normal"> <text value="ЧЕК ПРОДАЖИ" clip="true" width="12" filler="space" align="left"/> <element precision="0" value="numberfield" width="4" filler="space" align="left"/> <element precision="0" value="datecreate" width="11" filler="space" align="right"/> <element precision="0" value="timecreate" width="7" filler="space" align="right"/> </line> <line font="normal"> <text value="----------------------------------------" clip="true" width="36" filler="space" align="left"/> </line> </section> <section id="position"> <list> <line font="small"> <element precision="0" value="name" clip="true" width="30" filler="space" align="left"/> <element precision="2" value="endPricePerUnit" width="7" prefix="space" filler="space" align="right"/> <element precision="3" value="qnty" width="7" prefix="star" filler="space" align="right"/> <element precision="2" value="endPositionPrice" width="11" prefix="equalsign" filler="space" align="right"/> </line> <header> <line font="normal"> <text value="---------------------------------------------------------------------------------------------------------------------" clip="true" width="0" filler="space" align="left"/> </line> </header> <footer> <line font="normal"> <text value="---------------------------------------------------------------------------------------------------------------------" clip="true" width="0" filler="space" align="left"/> </line> </footer> </list> </section> <section id="payment"> <list> <line font="normal"> <element precision="0" value="payment_type" clip="true" width="25" filler="space" align="left"/> <element precision="2" value="sumpay" width="10" prefix="equalsign" filler="space" align="right"/> </line> <header> <line font="normal"> <text value="---------------------------------------------------------------------------------------------------------------------" clip="true" width="0" filler="space" align="left"/> </line> </header> <footer> </footer> </list> </section> <section id="discount"> <line font="normal"> <text value="---------------------------------------------------------------------------------------------------------------------" clip="true" width="0" filler="space" align="left"/> </line> <line font="doubleheight"> <condition name="Есть скидка"> <operand key="more"> <varLogical> <element value="discountValueTotal" width="0" align="left"/> </varLogical> <varLogical> <numeral value="0"/> </varLogical> </operand> </condition> <text value="ВАША СКИДКА СОСТАВИЛА, руб " width="32" filler="space" align="left"/> <element precision="2" value="discountValueTotal" clip="true" width="0" prefix="equalsign" filler="space" align="right"/> </line> <line font="normal"> <text value=" " clip="true" width="0" filler="space" align="left"/> </line> <line font="normal"> <text value="СПАСИБО ЗА ПОКУПКУ!" clip="true" width="0" filler="space" align="center"/> </line> <line font="normal"> <text value=" " clip="true" width="0" filler="space" align="left"/> </line> <line multyple="true" font="normal"> <condition name="дк"> <operand key="equal"> <varLogical> <element value="isDiscCard" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value="Цены указаны с учетом скидки по карте постоянного покупателя " multyple="true" clip="true" width="10" filler="space" align="center"/> </line> <line font="normal"> <condition name="дк"> <operand key="equal"> <varLogical> <element value="isDiscCard" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <element precision="0" value="disccardnumber" clip="true" width="0" filler="space" align="center"/> </line> <line font="normal"> <text value=" " clip="true" width="0" filler="space" align="left"/> </line> </section> <section id="tax"/> <section id="total"> <line font="normal"> <text value="----------------------------------------" clip="true" width="36" filler="space" align="left"/> </line> <line font="normal"> <text value="Итого без скидки" width="25" filler="space" align="left"/> <element precision="2" value="Totalsum" clip="true" width="0" prefix="space" filler="space" align="left"/> </line> <line font="normal"> <text value="Скидка" width="10" filler="space" align="left"/> <element precision="2" value="discountValueTotal" clip="true" width="0" prefix="space" filler="space" align="left"/> </line> <line font="normal"> <text value="Итого к оплате" width="15" filler="space" align="left"/> <element precision="2" value="checksum" clip="true" width="0" prefix="space" filler="space" align="left"/> </line> <line font="normal"> <text value="СДАЧА" clip="true" width="25" filler="space" align="left"/> <element precision="2" value="changecash" width="10" prefix="equalsign" filler="space" align="right"/> </line> </section> <section id="bonuses"> <list> <line font="normal"> <condition name="Были операции по бонусам"> <operand key="equal"> <varLogical> <element align="left" value="hasBonusOperations" width="0"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value="Бонусная карта" width="14"/> <element value="bonusCardNumber" clip="true" width="0" prefix="space" align="right"/> </line> <line font="normal"> <condition name="Были начисления бонусов"> <operand key="more"> <varLogical> <element value="bonusesAccrued" width="0" align="left"/> </varLogical> <varLogical> <numeral value="0"/> </varLogical> </operand> </condition> <text value="Начислено бонусов" width="17"/> <element value="bonusesAccrued" clip="true" precision="2" prefix="space" width="0" align="right"/> </line> <line font="normal"> <condition name="Были начисления бонусов"> <operand key="more"> <varLogical> <element value="bonusesAccrued" width="0" align="left"/> </varLogical> <varLogical> <numeral value="0"/> </varLogical> </operand> </condition> <text value="Дата активации бонусов" width="22"/> <element value="bonusesActivationDate" clip="true" width="0" prefix="space" align="right"/> </line> <line font="normal"> <condition name="Были списания бонусов"> <operand key="more"> <varLogical> <element value="bonusesChargedOff" width="0" align="left"/> </varLogical> <varLogical> <numeral value="0"/> </varLogical> </operand> </condition> <text value="Списано бонусов" width="15"/> <element value="bonusesChargedOff" precision="2" clip="true" width="0" prefix="space" align="right"/> </line> <line font="normal"> <condition name="Знаем детальную информацию о бонусах"> <operand key="equal"> <varLogical> <element value="hasBonusesDetailedInfo" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value="Итого бонусов" width="13"/> <element value="totalBonusesSum" precision="2" clip="true" width="0" prefix="space" align="right"/> </line> <line font="normal"> <condition name="Знаем детальную информацию о бонусах"> <operand key="equal"> <varLogical> <element value="hasBonusesDetailedInfo" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value="Доступно для списания" width="21"/> <element value="totalActiveBonusesSum" precision="2" clip="true" width="0" prefix="space" align="right"/> </line> <line font="normal"> <condition name="Есть дата сгорания бонусов"> <operand key="equal"> <varLogical> <element value="hasBonusesScheduledForVoiding" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value=" " width="0" clip="true" filler="space"/> </line> <line font="normal"> <condition name="Есть дата сгорания бонусов"> <operand key="equal"> <varLogical> <element value="hasBonusesScheduledForVoiding" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value="Внимание! Следующее сгорание бонусов" clip="true" width="0"/> </line> <line font="normal"> <condition name="Есть дата сгорания бонусов"> <operand key="equal"> <varLogical> <element value="hasBonusesScheduledForVoiding" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value="Сумма сгорания" width="14"/> <element value="bonusesToVoidAmount" precision="2" clip="true" width="0" prefix="space" align="right"/> </line> <line font="normal"> <condition name="Есть дата сгорания бонусов"> <operand key="equal"> <varLogical> <element value="hasBonusesScheduledForVoiding" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value="Дата сгорания" width="13"/> <element value="nearestBonusExpirationDate" clip="true" width="0" prefix="space" align="right"/> </line> <line font="normal"> <condition name="Были операции по бонусам"> <operand key="equal"> <varLogical> <element align="left" value="hasBonusOperations" width="0"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text value="---------------------------------------------------------------------------------------------------------------------" clip="true" width="0"/> </line> <header> </header> <footer> </footer> </list> </section> <section id="presentCard"> <list font="normal"> <line font="normal"> <text align="left" filler="space" precision="0" width="0" value="ПОДАРОЧНАЯ КАРТА:" clip="true"/> <element align="left" filler="space" precision="0" width="0" value="presentcard_number"/> </line> <line font="normal"> <text align="left" filler="space" precision="0" width="0" value=" Сумма:" clip="true"/> <element align="left" filler="space" precision="2" width="0" value="presentcard_amount"/> </line> <line font="normal"> <text align="left" filler="space" precision="0" width="0" value=" Срок действия до:" clip="true"/> <element align="left" filler="space" precision="0" width="0" value="presentcard_expiration_date"/> </line> <header> <line font="normal"> <text align="left" filler="space" precision="0" width="0" value="---------------------------------------------------------" clip="true"/> </line> <line font="doubleheight"> <text align="center" filler="space" precision="0" width="0" value="ИНФОРМАЦИЯ О ПОДАРОЧНОЙ КАРТЕ" clip="true"/> </line> <line font="normal"> <text align="left" value="Касса:" width="6" filler="space"/> <element align="left" value="cashnum" width="4" prefix="space" filler="space" precision="0"/> <text align="left" value="Смена:" width="7" filler="space" prefix="space"/> <element align="left" value="numshift" width="5" prefix="space" filler="space" precision="0"/> <text align="left" value="Чек:" width="5" filler="space" prefix="space"/> <element align="left" value="numberfield" width="5" prefix="space" filler="space" precision="0"/> <text align="left" value="Дата:" width="6" filler="space" prefix="space"/> <element align="left" value="datecreate" width="10" prefix="space" filler="space" clip="true" precision="0"/> </line> <line font="normal" extFont="2"> <text align="left" filler="space" precision="0" width="0" value="Активированные подарочные карты:" clip="true"/> </line> </header> <footer> <line font="normal"> <text align="left" filler="space" precision="0" width="0" value="---------------------------------------------------------" clip="true"/> </line> </footer> </list> </section> <section id="includedSlips"></section> <section id="fiscal"> <line font="normal"> <text value="Текст" clip="true" width="0" filler="space" align="left"/> </line> <line font="normal"/> </section> <section id="footer"> <line> <text value="Док N:" width="6"/> <element value="numberfield" clip="true" width="6" align="left"/> <element value="datecreate" width="11" align="left"/> <element value="timecreate" width="7" align="left"/> </line> <line> <text value="Спасибо за покупку!" clip="true" width="36" align="left"/> </line> </section> <section id="cut"/> <collectionFunctions/> <collectionConditions> <condition name="Есть скидка"> <operand key="more"> <varLogical> <element value="discountValueTotal" width="0" align="left"/> </varLogical> <varLogical> <numeral value="0"/> </varLogical> </operand> </condition> <condition name="дк"> <operand key="equal"> <varLogical> <element value="isDiscCard" width="0" align="left"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> </collectionConditions> </document>

Дочерние узлы

В дочерних узлах содержатся элементы, добавляемые на форму чека.

Пример сопоставления элементов заголовка чека <header>:

Атрибуты элементов дочерних узлов 

Атрибуты дочерних узлов - это настройки каждого элемента того, как будет напечатан элемент на бумаге.

Элемент формы чека

Допустимые параметры

Назначение

Элемент формы чека

Допустимые параметры

Назначение

element

  • align

  • value

  • additional

  • width

  • filler

  • precision

  • prefix

  • multyple

  • clip

Поле формы чека для вывода на печать.

line

  • font

  • exrFont

Строка с набором элементов формы чека.

Например: [Номер смены] [Номер кассы] [Дата].

 

<element align="left" value="fiscaldocnum" width="0" filler="space" precision="0" clip="true"/>

Список атрибутов настроек элементов форм чека

Параметр

Допустимое значение

Назначение

Параметр

Допустимое значение

Назначение

align

  • left

  • center

  • right

Выравнивание

value

Текст

Значение

additional

Текст

Специальный параметр, установленный клиентом, чтобы печаталась информация о примененных персональных предложениях в чеке продажи.

https://crystals.atlassian.net/browse/SR-3026

10.2.70.0

Скидки по персональному предложению подразумевают применение купона или вхождение клиента в сегмент.

Например добавляет в чековую форму текст, который будет отображаться только при выполнении нового условия "Сработала акция с меткой"=[значение метки РЕКЛАМНОЙ АКЦИИ]

  1. Если метка не указана в условии для вывода подстановки/текста, то условие не сработает

  2. Подстановка "Сумма скидки по акциям с меткой" должна рассчитывать сумму для всех сработавших акций с указанной меткой

<line font="small"> <condition name="Скидка по меткам"> <operand key="equal"> <varLogical> <element align="left" value="action_label_applied" width="0" additional="Personal Offer" hasAdditional="true"/> </varLogical> <varLogical> <boolean value="true"/> </varLogical> </operand> </condition> <text align="left" value="Ваша персональная скидка составила " width="35" filler="space" clip="true"/> <element align="right" value="action_label_discount" width="11" prefix="equalsign" filler="space" precision="2" additional="Personal Offer" hasAdditional="true"/> </line>

width

Число

Длина поля

filler

Один текстовый символ

Разделитель между элементами

precision

Число

Кратность разрядности, только для количественных или денежных полей

prefix

Один текстовый символ

Префикс

multyple

true

Многострочность

clip

true

Сжимаемое поле

font

  • small - маленький шрифт.

  • normal - средний.

  • doubleheight - большой.

Используется только в элементе <line> для настройки размеров шрифта одного из 3-х размеров.

Пример работы в статье Пирит 2Ф ◾️ Создание компактного чека глава Редактирование формы чека продажи с помощью мнемоник и размера шрифта (extFont) и Компактная печать банковского слипа внутри чека.

Также допустима установка шрифта nano, начиная с версии 10.3.26.0

Например: <line font="nano">

  • Вики Принт 80 Плюс Ф

    • номер шрифта = 2 (Шрифт 8*14)

  • Пирит 2Ф

    • номер шрифта = 4 (Шрифт 8*14. 56 символов в строке)

https://crystals.atlassian.net/browse/SRTZ-2578

https://crystals.atlassian.net/browse/CR-9506

extFont

  • 0 - шрифт 13x24 стандартный;

  • 1 - шрифт 10x20 стандартны;

  • 2 - шрифт 13x24 жирный;

  • 3 - шрифт 10x20 жирный;

  • 4 - шрифт 8x14 стандартный;

  • 5 - шрифт 24x45 стандартный;

  • 6 - шрифт 24x45 жирный;

  • 7 - шрифт 13x24 TPG;

  • 8 - шрифт 10x24 TPG.

Применение шрифта из Пирит 2Ф только в элементе <line> или <section>.

Устанавливается номер шрифта.

Пример работы в статье Пирит 2Ф ◾️ Создание компактного чека глава Редактирование формы чека продажи с помощью мнемоник и размера шрифта (extFont) и Компактная печать банковского слипа внутри чека.

Элементы формы чека

Элементы - это те поля форм чека, которые будут выводить данные на печать. Они являются атрибутами.

Заголовок <header>

Тег

Подстановка

Описание

text

Текст

Текстовое поле для свободного ввода текста

numshift

Номер смены

Номер смены в текущем операционном дне

numberfield

Номер чека

Программный номер чека

datecreate

Дата создания чека

Дата регистрации чека в кассовом модуле

timecreate

Время создания чека

Время регистрации чека в кассовом модуле

fiscaldocnum

Номер фискального документа

Фискальный номер чекового документа присваиваемый фискальным накопителем

cashnum

Номер кассы

Номер кассы

cashier

Кассир

Табельный номер, Фамилия Имя Отчество кассира так как они заданы в его карточке

cashSerial

Заводской номер ККМ

Заводской номер чекового принтера

cashiertabnum

Табельный номер кассира

Отображается табельный номер кассира (в том числе и при авторизации через LDAP).

https://crystals.atlassian.net/browse/SRTZ-2005

https://crystals.atlassian.net/browse/CR-8506

10.3.18.0

regNum

Регистрационный номер ККМ

Регистрационный номер фискального накопителя

ShopName

Наименование магазина

Наименование магазина из поля карточки "Название магазина"

ShopAddress

Адрес магазина

Адрес магазина из поля карточки "Адрес магазина"

shop_index

Номер магазина

Номер магазина из поля карточки "Номер магазина"

inn

ИНН

Идентификационный номер налогоплательщика (ИНН) из карточки юридического лица

eklz

Номер ЭКЛЗ

НЕ ИСПОЛЬЗУЕТСЯ

departNumber

Номер отдела

Номер отдела

opening_hours_from

Время работы магазина с...

Время начала работы магазина

https://crystals.atlassian.net/browse/SRTZ-2384

https://crystals.atlassian.net/browse/CR-9402

10.3.24.0

opening_hours_to

Время работы магазина до...

Время завершения работы магазина

https://crystals.atlassian.net/browse/SRTZ-2384

https://crystals.atlassian.net/browse/CR-9402

10.3.24.0

client_name

Наименование юридического лица

Наименование покупателя - юридического лица (из поля counterparty из примененной дисконтной карты)

https://crystals.atlassian.net/browse/SRTZ-3473

https://crystals.atlassian.net/browse/CR-11341

10.4.6.0

client_address

Адрес юридического лица 

Адрес покупателя - юридического лица (из поля counterparty из примененной дисконтной карты)

https://crystals.atlassian.net/browse/SRTZ-3473

https://crystals.atlassian.net/browse/CR-11341

10.4.6.0

client_inn

ИНН клиента

ИНН покупателя - юридического лица (из поля counterparty из примененной дисконтной карты)

https://crystals.atlassian.net/browse/SRTZ-3473

https://crystals.atlassian.net/browse/CR-11341

10.4.6.0

Позиции <position>

Тег

Подстановка

Описание

Тег

Подстановка

Описание