Пример шаблона при установке программного продукта
NDemia CashMatic KioskBrowser размещается в файле
"\Program Files\NDemia\CashMatic\PrintTemplates\Развёрнутый.TXT"
В этом примере показан достаточно сложный шаблон, используются практически все
возможности языка описания шаблонов NDemia CashMatic. Если Вам нужны начальные сведения о разработке шаблонов, смотрите более простые примеры: "
Простой" и "
Торговый".
%bNDemia CashMatic: %(загол)%b
%d %t
%{если(%(ид)):Код платежа: %(id)
%}%{прод:%(текств)%(номер). %(назв) %(цена) *%(колво) = %(стоим)
%i%(текстн)%i
%}%bИтого%b %(итого) руб.
%{cash:%(шрифт2)Оплачено наличными %m руб. через терминал %(терминал)
%{debt:При получении заказа покупатель должен доплатить %(долг) руб.
%}%{change:Покупателю сдача %(сдача) руб.
%}%}%{nocash:Заказ не оплачен
%}%{если(%(перем:ТелефонСлужбыПоддержки)):%{прим:может быть не задан
%}Телефон службы поддержки: %(перем:ТелефонСлужбыПоддержки)
%}
%{фискал:Фискальный режим
%{if(%o):%(штрихкод)%(код)%}%}%{нефискал:%{if(%(код)):Код документа: %o%}%}
(•) Пример из комплектации программного продукта может незначительно отличаться от этого текста
При печати:
- %bNDemia CashMatic: ...%b - выделение жирным шрифтом строки "NDemia CashMatic: ..." (не действует на фискальном регистраторе);
- %(загол) заменяется на CashMatic.Print.Receipt.Title;
- %d заменяется на дату печати чека (в формате краткой даты);
- %t заменяется на время печати чека (в формате времени, без секунд);
- %(ид)/%(id) заменяется на значение CashMatic.Print.Receipt.Id;
- строка "Код платежа: ..." (блок %{если(%(ид)):Код платежа: %(id)%}) печатается только в случае, если чек имеет непустой номер или идентификатор (задано свойство CashMatic.Print.Receipt.Id);
- блок %{прод:...%} при нефискальной печати повторяется для каждой позиции продажи, при создании фискального чека фискальный регистратор сам форматирует строки продажи, текст фискального чека вставляется на место блока %{прод:...%};
- внутри блока %{прод:...%} для каждой позиции продажи (элемента списка продажи - см. объект CashMaticSaleItem):
- %bИтого%b - выделение жирным шрифтом слова "Итого" (не действует на фискальном регистраторе);
- %(итого) заменяется на CashMatic.Print.Receipt.Total;
- блок %{cash:...%} (строка "Оплачено ... руб. через терминал ...") печатается только в случае, если были приняты какие-либо наличные;
- %(шрифт2) - выбор шрифта №2 (по таблице прошитых шрифтов используемого оборудования) действует только на фискальном регистраторе (обратите внимание, указание шрифта работает только в первой позиции выходной строки, хотя в шаблоне эта позиция может быть сдвинута предшествующими синтаксическими конструкциями);
- %m заменяется на значение CashMatic.Print.Receipt.Cash (в формате денежной суммы);
- %(терминал) заменяется на имя терминала, заданное в Панели управления NDemia CashMatic;
- блок %{debt:...%} (строка "При получении заказа покупатель должен доплатить ...") печатается только в случае, если при приёме платежа принято наличных меньше итоговой стоимости чека (см. Чек по шаблону, см. свойство CashMatic.Print.Receipt.Debt);
- %(долг) заменяется на CashMatic.Print.Receipt.Debt (в формате денежной суммы);
- блок %{change:...%} (строка "Покупателю сдача ...") печатается только в случае, если при приёме платежа принято наличных больше итоговой стоимости чека (см. Чек по шаблону, см. свойство CashMatic.Print.Receipt.Change);
- %(сдача) заменяется на CashMatic.Print.Receipt.Change (в формате денежной суммы);
- блок %{nocash:...%} (строка "Заказ не оплачен") печатается только в случае, если при приёме платежа наличных принято не было (принципиально возможна печать и нулевых чеков, т.е. без приёма наличных);
- строка "Телефон службы поддержки: ..." (блок %{если(%(перем:ТелефонСлужбыПоддержки)): ... %}) печатается только в случае, если в текущем платёжном сеансе переменная "ТелефонСлужбыПоддержки" имеет непустое значение (был сделан вызов CashMatic.Session.AddProp("ТелефонСлужбыПоддержки", "..."));
- %(перем:ТелефонСлужбыПоддержки) - значение переменной "ТелефонСлужбыПоддержки" из текущего платёжного сеанса (как CashMatic.Session.GetProp("ТелефонСлужбыПоддержки"));
- блок %{фискал:...%} (строка "Фискальный режим" и последующий опциональный штрих-код) отображается только при печати фискального чека на фискальном регистраторе;
- %o, %(код) - заменяется на код документа, назначенный чеку (CashMatic.Print.Receipt.Code);
- %(штрихкод) - режим печати штрих-кода, для всей строки, действует только на фискальном регистраторе (обратите внимание, выбор режима штрих-кода работает только в первой позиции выходной строки, хотя в шаблоне эта позиция может быть сдвинута предшествующими синтаксическими конструкциями);
- строка со штрих-кодом (блок %{if(%o):%(штрихкод)%(код)%}) печатается только в случае, если чеку назначен непустой номер документа (задано свойство CashMatic.Print.Receipt.Code);
- код документа на фискальном регистраторе печатается как штрих-код (задано конструкцией "%(штрихкод)%(код)");
- блок %{нефискал:...%} обрабатывается только при нефискальной печати;
- строка "Код документа: ..." (блок %{if(%(код)):Код документа: %o%}) печатается только в случае, если чеку назначен непустой номер документа (задано свойство CashMatic.Print.Receipt.Code);
- код документа при нефискальной печати отображается цифрами.
Полный список возможных подставляемых значений: см.
Макроимена.
Полный список возможных типов блоков: см.
Макроблоки.
Сведения о форматах данных: см.
Форматирование данных.
Сведения об управлении шрифтами символов: см.
Атрибуты шрифта и
Выбор шрифта строки.
Для печати чека по этому шаблону прикладная программа (javascript внутри HTML-страницы) должна задать свойства
Title,
Id и
Cash объекта
CashMatic.Print.Receipt, в список продажи (объект
CashMatic.Print.Receipt.SaleItems) нужно добавить хотя бы один элемент (см. объект
CashMaticSaleItem), для каждого добавленного элемента нужно указать свойства
Name,
Price и
Quantity (опционально можно ещё
TextAbove и
TextBelow).
Опционально могут быть заданы свойство
CashMatic.Print.Receipt.Code и переменная платёжного сеанса
"ТелефонСлужбыПоддержки" (см. метод
CashMatic.Session.AddProp()).
Кроме того, нужно указать используемый шаблон и вызвать печать:
CashMatic.Print.Receipt.Title="Пример приёма платежа";
CashMatic.Print.Receipt.Id="112";
CashMatic.Print.Receipt.Cash=50;
var Sale1 = CashMatic.Print.Receipt.SaleItems.Add();
Sale1.Name = "Пример 1";
Sale1.Price = 100;
Sale1.Quantity = 1;
var Sale2 = CashMatic.Print.Receipt.SaleItems.Add();
Sale2.Name = "Пример 2";
Sale2.Price = 500;
CashMatic.Print.Receipt.Code="200000000001"; //опционально
CashMatic.Session.AddProp("ТелефонСлужбыПоддержки", "00000000"); //опционально
CashMatic.Print.Receipt.Template="Развёрнутый.txt";
CashMatic.Print.PrintOut(); //при ошибке печати возвращает FALSE
Сведения об объекте
CashMatic.Print и других объектах печати: см.
Объекты печати.
Другие примеры подготовки данных для печати чека по шаблону:
Пример чека, напечатанного по шаблону "Развёрнутый": |
|