Наиболее универсальный режим, позволяет прикладному скрипту вообще не вдаваться в подробности форматирования чека и ограничиться предоставлением объекту
CashMatic.Print.Receipt информации о выполненном платеже. Скрипт должен предоставить всю возможную информацию, использование или неиспользование её в чеке будет определяться выбранным шаблоном печати (подробности см.
Шаблоны печати).
Пример:
/*
Печать чека продажи на 2 позиции:
- платёж за услугу на 100 руб.
- 5 конфет по 5 рублей.
при условии внесения наличных 150 руб.
*/
CashMatic.Print.Reset(); //начальная установка объекта печати
//CashMatic.Print.Fiscal=false; //если раскомментировать эту строку,
// то даже на фискальном регистраторе чек
// будет печататься как на обычном принтере,
// без фискализации.
CashMatic.Print.Receipt.Template="Торговый.txt"; //выбираем шаблон
CashMatic.Print.Receipt.Title = "Пример"; //заголовок чека (отображается
// только если в шаблоне есть ссылка)
CashMatic.Session.AddProp("ТелефонСлужбыПоддержки", "00000000");
// дополнительная информация, на которую может
// ссылаться шаблон печати
CashMatic.Print.Receipt.Id = "DEMO1234"; //идентификатор чека
//(отображается только если в шаблоне есть ссылка)
CashMatic.Print.Receipt.Code = "200000000001"; //код платёжного документа
//(отображается только если в шаблоне есть ссылка)
//Добавляем позицию в список продажи:
Item = CashMatic.Print.Receipt.SaleItems.Add();
Item.Name = "Платёж за услугу"; //название позиции в списке продажи
Item.Price = 100; //цена товарной единицы
Item.Quantity = 1; //количество оплаченного товара
Item.TextBelow = "Спасибо за своевременную оплату"; //строка печати
// ниже товарной позиции
//Добавляем позицию в список продажи:
Item = CashMatic.Print.Receipt.SaleItems.Add();
Item.Name = "Конфета"; //название позиции в списке продажи
Item.Price = 5; //цена товарной единицы
Item.Quantity = 5; //количество оплаченного товара
//количество внесённых наличных:
CashMatic.Print.Receipt.Cash = 150;
//собственно печать чека:
if(CashMatic.Print.PrintOut())
{ //при успешной печати:
SendInfoToServer(
CashMatic.Print.Receipt.Terminal,
CashMatic.Print.Receipt.Date,
CashMatic.Print.Receipt.Time,
CashMatic.Print.Receipt.Id,
CashMatic.Print.Receipt.Total,
CashMatic.Print.Receipt.Cash
);//предполагаемая функция прикладной программы,
// отсылающая на сервер данные чека: имя терминала,
// дата, время, итоговая сумма, внесённые наличные
// - всё в том виде, как было напечатано на чеке.
//(функция SendInfoToServer не написана, указана
// только для иллюстрации)
}
Свойства
CashMatic.Print.Receipt.Id (идентификатор чека) и
CashMatic.Print.Receipt.Code (код чека) - это просто строки, которые будут напечатаны в соответствующих местах в чеке, их значение и смысл задаются разработчиками
прикладного скрипта и
шаблона чека.
Как правило, на чеке нужно отдельно показать номер чека и номер лицевого счёта, по которому выполнен платёж.
Кроме того, на фискальном регистраторе в чеке может быть напечатан
штрих-код, который должен однозначно идентифицировать чек.
Предполагаемые (но не обязательные) назначения для этих свойств:
Шаблон печати может ссылаться не только на свойства объекта
CashMatic.Print.Receipt и т.п., но и на
переменные платёжного сеанса.
Обратите внимание, итоговая стоимость чека составляет 125 руб., внесено 150 руб., при фискальной печати на чеке будет показана сдача 25 руб. и сделана соответствующая запись в фискальной памяти. При печати на обычном принтере язык описания шаблонов позволяет также указать сдачу, и даже долг (если внесённая сумма меньше стоимости чека). Чеки со сдачей и долгом имеют смысл, если платёжная система допускает последующие дополнительные расчёты с плательщиком. (Чеки с долгом не могут быть оформлены в фискальном режиме, поскольку этому будет противодействовать фискальный регистратор)
Дополнительно можно задать значения свойствам
TextAbove и/или
TextBelow (текст над/текст под) для каждого элемента (позиции) в списке продажи.
Нельзя задать значения свойствам
TextAbove и/или
TextBelow (текст над/текст под) всего списка продажи (
CashMatic.Print.Receipt.SaleItems.TextAbove /
CashMatic.Print.Receipt.SaleItems.TextBelow) - это поддерживается только в режиме
фискального чека без шаблона.
Значения свойств подставляются в выходной текст вместо соответствующих макроимён исходного текста шаблона печати.
Значения, задаваемые произвольным текстом (например,
CashMatic.Print.Receipt.Title = "Пример"), подставляются как есть, без дополнительной макрообработки их текста или текста, полученного в результате их подстановки. Атрибуты форматирования должны задаваться шаблоном и не могут задаваться внутри значений полей.
Следует обратить внимание, что на выводимый текст действуют параметры печати, заданные в Панели управления
NDemia CashMatic - преобразование кодировки и обработка %-кодов форматирования (на фискальном регистраторе эти операции не поддерживаются, независимо от настройки параметров). Если использование кодов форматирования выключено, то атрибуты шрифта всё равно удаляются из текста, а не пропускаются на печать (атрибуты шрифта рассматриваются как элементы
языка описания шаблонов печати, в отличие от режима "
текст без шаблона").
Если Вы организуете печать через
CashMatic.Print.Receipt, то Вы не должны изменять значение
CashMatic.Print.Text, иначе печать автоматически переключится в режим "
текст без шаблона", без фискализации.
Примерный вид чека, который может быть напечатан этим скриптом |
 |
Обратите внимание: вид чека в существенной степени зависит от дизайна шаблона, скрипт только предоставляет данные, заполнение полей делается по выбранному шаблону.
Такой же скрипт, шаблон "Простой" |
 |
Такой же скрипт, шаблон "Развёрнутый" |
 |
Другие примеры подготовки данных для печати чека по шаблону: