NDemia Новости CashMatic Рубли Форум

Чек по шаблону


Наиболее универсальный режим, позволяет прикладному скрипту вообще не вдаваться в подробности форматирования чека и ограничиться предоставлением объекту
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, иначе печать автоматически переключится в режим "текст без шаблона", без фискализации.


Обратите внимание: вид чека в существенной степени зависит от дизайна шаблона, скрипт только предоставляет данные, заполнение полей делается по выбранному шаблону.


Другие примеры подготовки данных для печати чека по шаблону:
тел. +7-(916)-129-26-84 (C)opyright: NDemia Ltd, Москва, 2006..2024 ndemia@ndemia.com