|
//http://partner.atol.ru/files/163/1039/h_13bc4bb95d4580d20b990925e2425c22
|
|
|
|
//*********************************************************************************//
|
|
// Примеры работы с ККТ АТОЛ под новый порядок. //
|
|
// Примеры предназначены для работы с прошивками, поддерживающими ФФД 1.0. //
|
|
// Так как в примерах создаются чеки для ОСН и ЕНВД, то ККТ должна //
|
|
// быть зарегистрирована как минимум на эти 2 СНО. //
|
|
// Примеры необходимо запускать в 32-ух битном интерпретаторе WScript: //
|
|
// C:\Windows\SysWOW64\WScript.exe ФФД_1_0_примеры.js //
|
|
//*********************************************************************************//
|
|
|
|
// Вспомогательные функции для отладочного логирования
|
|
function AddLeft(str, add, len)
|
|
{
|
|
// Потому что в JScript нет функций форматированного вывода
|
|
str = String(str);
|
|
while (str.length < len)
|
|
str = add + str;
|
|
return str;
|
|
}
|
|
|
|
function dump(Text)
|
|
{
|
|
var DumpFolder = "C:\\DUMPS\\";
|
|
var now = new Date();
|
|
var DumpFile = now.getYear() + '_' + AddLeft(now.getMonth() + 1, '0', 2) + '_' + AddLeft(now.getDate(), '0', 2) + '_' + AddLeft(now.getHours(), '0', 2) + '_' + AddLeft(now.getMinutes(), '0', 2) + '_' + AddLeft(now.getSeconds(), '0', 2) + '_' + AddLeft(now.getMilliseconds(), '0',3) + ".txt";
|
|
fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
if (!fso.FolderExists(DumpFolder))
|
|
fso.CreateFolder(DumpFolder);
|
|
ts = fso.OpenTextFile(DumpFolder + DumpFile, 8, true);
|
|
ts.WriteLine(Text);
|
|
ts.Close();
|
|
}
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// --------------------------- Подключение к устройству -----------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
var driver = new ActiveXObject ("AddIn.FPrnM8");
|
|
// Программное указание параметров подключения
|
|
driver.AddDevice();
|
|
driver.Model = 69;
|
|
driver.UseAccessPassword = 1;
|
|
driver.DefaultPassword = 30;
|
|
// Номер COM порта 8 соответствует значению PortNumber 1008
|
|
driver.PortNumber = 1009;
|
|
driver.BaudRate = 18;
|
|
// Подключение через окно настройки свойств
|
|
driver.ShowProperties();
|
|
driver.DeviceEnabled = 1;
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ---------------------------------- Поддерживаемая версия ФФД ------------------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
driver.Mode = 0;
|
|
driver.SetMode ();
|
|
driver.Caption = "Чтение поддерживаемой версии ФФД";
|
|
driver.Alignment = 1;
|
|
driver.TextWrap = 1;
|
|
driver.PrintString();
|
|
driver.Alignment = 0;
|
|
|
|
driver.Caption = "Формат x.y.z:";
|
|
driver.PrintString();
|
|
driver.Caption = "x - версия ФФД ККТ";
|
|
driver.PrintString();
|
|
driver.Caption = "y - версия ФФД ФН";
|
|
driver.PrintString();
|
|
driver.Caption = "z - версия ФФД";
|
|
driver.PrintString();
|
|
driver.Caption = "Список значений:";
|
|
driver.PrintString();
|
|
driver.Caption = "1 – ФФД 1.0";
|
|
driver.PrintString();
|
|
driver.Caption = "2 – ФФД 1.05";
|
|
driver.PrintString();
|
|
driver.Caption = "3 – ФФД 1.1";
|
|
driver.PrintString();
|
|
driver.RegisterNumber = 54;
|
|
driver.GetRegister();
|
|
driver.Caption = "Значение из ККТ: " + driver.ROMVersion;
|
|
driver.PrintString();
|
|
|
|
// Печать клише
|
|
driver.PrintHeader();
|
|
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ---------------------------------- Открыть смену ------------------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
driver.OpenSession();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ---------- Чек прихода без отправки электронного чека покупателю ---------- //
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
|
|
// Mode - Режим:
|
|
// 0 - Выбора
|
|
// 1 - Регистрации
|
|
// 2 - Отчётов без гашения
|
|
// 3 - Отчётов с гашением
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
|
|
// Записать должность и ФИО кассира
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
|
|
// CheckType - Тип чека:
|
|
// 1 - Приход
|
|
// 2 - Возврат прихода
|
|
// 4 - Расход
|
|
// 5 - Возврат расхода
|
|
// 7 - Коррекция прихода
|
|
// 9 - Коррекция расхода
|
|
driver.CheckType = 1;
|
|
// CheckMode - Режим формирования чека:
|
|
// 0 - только в электронном виде без печати на чековой ленте
|
|
// 1 - печатать на чековой ленте
|
|
driver.CheckMode = 1;
|
|
driver.OpenCheck();
|
|
|
|
// Применяемая система налогооблажения в чеке:
|
|
// ОСН - 1
|
|
// УСН доход - 2
|
|
// УСН доход-расход - 4
|
|
// ЕНВД - 8
|
|
// ЕСН - 16
|
|
// ПСН - 32
|
|
driver.AttrNumber = 1055;
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
// Регистрация товара или услуги
|
|
driver.BeginItem();
|
|
driver.Name = "Молоко 3.2%";
|
|
driver.Price = 50.33;
|
|
driver.Quantity = 2;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 100.66;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 1;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 2;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(50.33 * 10 / 110 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
//driver.DiscountValue = 10;
|
|
// DiscountType - Тип скидки:
|
|
// 0 - суммовая
|
|
// 1 - процентная
|
|
//driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
driver.Caption = "В том числе скидка: 4.67";
|
|
driver.PrintString();
|
|
driver.Caption = "Цена без скидки: 55.00";
|
|
driver.PrintString();
|
|
|
|
// Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения. SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
|
|
// Destination - Назначение скидки:
|
|
// 0 - на чек
|
|
// 1 - на позицию (недоступно)
|
|
driver.Destination = 0;
|
|
driver.Summ = 0.66;
|
|
driver.SummDiscount();
|
|
|
|
// Нефискальная печать с информацией по скидкам чека
|
|
driver.Caption = "--Скидки по чеку--";
|
|
driver.PrintString();
|
|
driver.Caption = "Сумма чека без скидок 110.00";
|
|
driver.PrintString();
|
|
driver.Caption = "Скидки по карте: 9.34";
|
|
driver.PrintString();
|
|
driver.Caption = "Округление: 0.66";
|
|
driver.PrintString();
|
|
|
|
// Оплата и закрытие чека
|
|
// TypeClose - Тип оплаты:
|
|
// 0 - Наличными
|
|
// 1 - Электронными средствами платежа
|
|
driver.TypeClose = 0;
|
|
driver.Summ = 500.00;
|
|
driver.Payment();
|
|
driver.CloseCheck();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ----- Чек возврата прихода без отправки электронного чека покупателю ---- //
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
|
|
// Mode - Режим:
|
|
// 0 - Выбора
|
|
// 1 - Регистрации
|
|
// 2 - Отчётов без гашения
|
|
// 3 - Отчётов с гашением
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
|
|
// Записать должность и ФИО кассира
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
|
|
// CheckType - Тип чека:
|
|
// 1 - Приход
|
|
// 2 - Возврат прихода
|
|
// 4 - Расход
|
|
// 5 - Возврат расхода
|
|
// 7 - Коррекция прихода
|
|
// 9 - Коррекция расхода
|
|
driver.CheckType = 2;
|
|
// CheckMode - Режим формирования чека:
|
|
// 0 - только в электронном виде без печати на чековой ленте
|
|
// 1 - печатать на чековой ленте
|
|
driver.CheckMode = 1;
|
|
driver.OpenCheck();
|
|
|
|
// Применяемая система налогооблажения в чеке:
|
|
// ОСН - 1
|
|
// УСН доход - 2
|
|
// УСН доход-расход - 4
|
|
// ЕНВД - 8
|
|
// ЕСН - 16
|
|
// ПСН - 32
|
|
driver.AttrNumber = 1055;
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
// Регистрация товара или услуги
|
|
driver.BeginItem();
|
|
driver.Name = "Молоко 3.2%";
|
|
driver.Price = 50.33;
|
|
driver.Quantity = 2;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 100.66;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 1;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 2;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(50.33 * 10 / 110 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
// driver.DiscountValue = 10;
|
|
// // DiscountType - Тип скидки:
|
|
// // 0 - суммовая
|
|
// // 1 - процентная
|
|
// driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
driver.Caption = "В том числе скидка: 4.67";
|
|
driver.PrintString();
|
|
driver.Caption = "Цена без скидки: 55.00";
|
|
driver.PrintString();
|
|
|
|
// Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения. SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
|
|
// Destination - Назначение скидки:
|
|
// 0 - на чек
|
|
// 1 - на позицию (недоступно)
|
|
driver.Destination = 0;
|
|
driver.Summ = 0.66;
|
|
driver.SummDiscount();
|
|
|
|
// Нефискальная печать с информацией по скидкам чека
|
|
driver.Caption = "--Скидки по чеку--";
|
|
driver.PrintString();
|
|
driver.Caption = "Сумма чека без скидок 110.00";
|
|
driver.PrintString();
|
|
driver.Caption = "Скидки по карте: 9.34";
|
|
driver.PrintString();
|
|
driver.Caption = "Округление: 0.66";
|
|
driver.PrintString();
|
|
|
|
// Оплата и закрытие чека
|
|
// TypeClose - Тип оплаты:
|
|
// 0 - Наличными
|
|
// 1 - Электронными средствами платежа
|
|
driver.TypeClose = 0;
|
|
driver.Summ = 500.00;
|
|
driver.Payment();
|
|
driver.CloseCheck();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // // ---------- Чек прихода с отправкой электронного чека покупателю ---------- //
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
|
|
// Mode - Режим:
|
|
// 0 - Выбора
|
|
// 1 - Регистрации
|
|
// 2 - Отчётов без гашения
|
|
// 3 - Отчётов с гашением
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
|
|
// Записать должность и ФИО кассира
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
|
|
// CheckType - Тип чека:
|
|
// 1 - Приход
|
|
// 2 - Возврат прихода
|
|
// 4 - Расход
|
|
// 5 - Возврат расхода
|
|
// 7 - Коррекция прихода
|
|
// 9 - Коррекция расхода
|
|
driver.CheckType = 1;
|
|
// CheckMode - Режим формирования чека:
|
|
// 0 - только в электронном виде без печати на чековой ленте
|
|
// 1 - печатать на чековой ленте
|
|
driver.CheckMode = 1;
|
|
driver.OpenCheck();
|
|
|
|
// Применяемая система налогооблажения в чеке:
|
|
// ОСН - 1
|
|
// УСН доход - 2
|
|
// УСН доход-расход - 4
|
|
// ЕНВД - 8
|
|
// ЕСН - 16
|
|
// ПСН - 32
|
|
driver.AttrNumber = 1055;
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
// Запись контакта покупателя для отправки электронного чека
|
|
driver.AttrNumber = 1008;
|
|
driver.AttrValue = "+79091235566";
|
|
driver.WriteAttribute();
|
|
|
|
// Регистрация товара или услуги
|
|
driver.BeginItem();
|
|
driver.Name = "Детсткое питание Тёма";
|
|
driver.Price = 47.70;
|
|
driver.Quantity = 6;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 286.20;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 1;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 2;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(47.70 * 10 / 110 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
// driver.DiscountValue = 10;
|
|
// // DiscountType - Тип скидки:
|
|
// // 0 - суммовая
|
|
// // 1 - процентная
|
|
// driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
driver.Caption = "В том числе скидка: 5.30";
|
|
driver.PrintString();
|
|
driver.Caption = "Цена без скидки: 53.00";
|
|
driver.PrintString();
|
|
|
|
driver.BeginItem();
|
|
driver.Name = "Коньяк Победа 0,5";
|
|
driver.Price = 813.50;
|
|
driver.Quantity = 1;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 813.50;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 2;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 3;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(813.50 * 18 / 118 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
// driver.DiscountValue = 10;
|
|
// // DiscountType - Тип скидки:
|
|
// // 0 - суммовая
|
|
// // 1 - процентная
|
|
// driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
|
|
// Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения. SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
|
|
// Destination - Назначение скидки:
|
|
// 0 - на чек
|
|
// 1 - на позицию (недоступно)
|
|
driver.Destination = 0;
|
|
driver.Summ = 0.70;
|
|
driver.SummDiscount();
|
|
|
|
// Нефискальная печать с информацией по скидкам чека
|
|
driver.Caption = "--Скидки по чеку--";
|
|
driver.PrintString();
|
|
driver.Caption = "Сумма чека без скидок 1131.50";
|
|
driver.PrintString();
|
|
driver.Caption = "Скидки по карте: 31.80";
|
|
driver.PrintString();
|
|
driver.Caption = "Округление: 0.70";
|
|
driver.PrintString();
|
|
|
|
// TypeClose - Тип оплаты:
|
|
// 0 - Наличными
|
|
// 1 - Электронными средствами платежа
|
|
driver.TypeClose = 0;
|
|
driver.Summ = 1500.00;
|
|
driver.Payment();
|
|
driver.CloseCheck();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ---------- Чек прихода с отправкой электронного чека покупателю -----------//
|
|
// // ---------------------------- без печати на чековой ленте ---------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
|
|
driver.NewDocument();
|
|
|
|
// Mode - Режим:
|
|
// 0 - Выбора
|
|
// 1 - Регистрации
|
|
// 2 - Отчётов без гашения
|
|
// 3 - Отчётов с гашением
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
|
|
// Записать должность и ФИО кассира
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
|
|
// CheckType - Тип чека:
|
|
// 1 - Приход
|
|
// 2 - Возврат прихода
|
|
// 4 - Расход
|
|
// 5 - Возврат расхода
|
|
// 7 - Коррекция прихода
|
|
// 9 - Коррекция расхода
|
|
driver.CheckType = 1;
|
|
// CheckMode - Режим формирования чека:
|
|
// 0 - только в электронном виде без печати на чековой ленте
|
|
// 1 - печатать на чековой ленте
|
|
driver.CheckMode = 0;
|
|
driver.OpenCheck();
|
|
|
|
// Запись контакта покупателя для отправки электронного чека. Внимание!!! Обязательно передавать сразу после открытия чека
|
|
driver.AttrNumber = 1008;
|
|
driver.AttrValue = "+79091235566";
|
|
driver.WriteAttribute();
|
|
|
|
// Применяемая система налогооблажения в чеке:
|
|
// ОСН - 1
|
|
// УСН доход - 2
|
|
// УСН доход-расход - 4
|
|
// ЕНВД - 8
|
|
// ЕСН - 16
|
|
// ПСН - 32
|
|
driver.AttrNumber = 1055;
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
// Регистрация товара или услуги
|
|
driver.BeginItem();
|
|
driver.Name = "Детсткое питание Тёма";
|
|
driver.Price = 47.70;
|
|
driver.Quantity = 6;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 286.20;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 1;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 2;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(47.70 * 10 / 110 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
// driver.DiscountValue = 10;
|
|
// // DiscountType - Тип скидки:
|
|
// // 0 - суммовая
|
|
// // 1 - процентная
|
|
// driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
driver.Caption = "В том числе скидка: 5.30";
|
|
driver.PrintString();
|
|
driver.Caption = "Цена без скидки: 53.00";
|
|
driver.PrintString();
|
|
|
|
driver.BeginItem();
|
|
driver.Name = "Коньяк Победа 0,5";
|
|
driver.Price = 813.50;
|
|
driver.Quantity = 1;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 813.50;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 2;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 3;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(813.50 * 18 / 118 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
// driver.DiscountValue = 10;
|
|
// // DiscountType - Тип скидки:
|
|
// // 0 - суммовая
|
|
// // 1 - процентная
|
|
// driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
|
|
// Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения. SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
|
|
// Destination - Назначение скидки:
|
|
// 0 - на чек
|
|
// 1 - на позицию (недоступно)
|
|
driver.Destination = 0;
|
|
driver.Summ = 0.70;
|
|
driver.SummDiscount();
|
|
|
|
// Нефискальная печать с информацией по скидкам чека
|
|
driver.Caption = "--Скидки по чеку--";
|
|
driver.PrintString();
|
|
driver.Caption = "Сумма чека без скидок 1131.50";
|
|
driver.PrintString();
|
|
driver.Caption = "Скидки по карте: 31.80";
|
|
driver.PrintString();
|
|
driver.Caption = "Округление: 0.70";
|
|
driver.PrintString();
|
|
|
|
// TypeClose - Тип оплаты:
|
|
// 0 - Наличными
|
|
// 1 - Электронными средствами платежа
|
|
driver.TypeClose = 0;
|
|
driver.Summ = 1500.00;
|
|
driver.Payment();
|
|
driver.CloseCheck();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ------ Приём операций от лица банковского платёжного агента (1057 = 1) ------ //
|
|
// // ---------------------------- Или субагента (1057 = 2) ------------------------------------------ //
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
|
|
// Mode - Режим:
|
|
// 0 - Выбора
|
|
// 1 - Регистрации
|
|
// 2 - Отчётов без гашения
|
|
// 3 - Отчётов с гашением
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
|
|
// Записать должность и ФИО кассира
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
|
|
// CheckType - Тип чека:
|
|
// 1 - Приход
|
|
// 2 - Возврат прихода
|
|
// 4 - Расход
|
|
// 5 - Возврат расхода
|
|
// 7 - Коррекция прихода
|
|
// 9 - Коррекция расхода
|
|
driver.CheckType = 1;
|
|
// CheckMode - Режим формирования чека:
|
|
// 0 - только в электронном виде без печати на чековой ленте
|
|
// 1 - печатать на чековой ленте
|
|
driver.CheckMode = 1;
|
|
driver.OpenCheck();
|
|
|
|
driver.AttrNumber = 1055;
|
|
// Применяемая система налогооблажения в чеке:
|
|
// ОСН - 1
|
|
// УСН доход - 2
|
|
// УСН доход-расход - 4
|
|
// ЕНВД - 8
|
|
// ЕСН - 16
|
|
// ПСН - 32
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
driver.AttrNumber = 1057;
|
|
// Указание признака агента:
|
|
// Банковскй платежный агент - 1
|
|
// Банковскй платежный субагент - 2
|
|
// Платежный агент - 4
|
|
// Платежный субагент - 8
|
|
// Проверенный агент - 16
|
|
// Комиссионер - 32
|
|
// Иной агент - 64
|
|
driver.AttrValue = 4;
|
|
driver.WriteAttribute();
|
|
|
|
// Адрес оператора по переводу денежных средств
|
|
driver.AttrNumber = 1005;
|
|
driver.AttrValue = "г. Москва, ул. Пушкина, д. колотушкина";
|
|
driver.WriteAttribute();
|
|
|
|
// ИНН оператора по переводу денежных средств
|
|
driver.AttrNumber = 1016;
|
|
driver.AttrValue = "006449013711";
|
|
driver.WriteAttribute();
|
|
|
|
// Наименование оператора по переводу денежных средств
|
|
driver.AttrNumber = 1026;
|
|
driver.AttrValue = "ООО Супер Банк";
|
|
driver.WriteAttribute();
|
|
|
|
// Операция платёжного агента
|
|
driver.AttrNumber = 1044;
|
|
driver.AttrValue = "Перевод";
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон платёжного агента
|
|
driver.AttrNumber = 1073;
|
|
driver.AttrValue = "8-800-111-11-11";
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон оператора перевода
|
|
driver.AttrNumber = 1075;
|
|
driver.AttrValue = "8-800-222-22-22";
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон поставщика
|
|
driver.AttrNumber = 1171;
|
|
driver.AttrValue = "8-800-333-33-33";
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон поставщика
|
|
driver.AttrNumber = 1171;
|
|
driver.AttrValue = "8-800-444-44-44";
|
|
driver.WriteAttribute();
|
|
|
|
// Регистрация товара или услуги
|
|
|
|
driver.BeginItem();
|
|
driver.Name = "Денежный перевод";
|
|
driver.Price = 110.00;
|
|
driver.Quantity = 1;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 110;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 4;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 3;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(110 * 18 / 118 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
// driver.DiscountValue = 10;
|
|
// // DiscountType - Тип скидки:
|
|
// // 0 - суммовая
|
|
// // 1 - процентная
|
|
// driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
|
|
// Оплата и закрытие чека
|
|
// TypeClose - Тип оплаты:
|
|
// 0 - Наличными
|
|
// 1 - Электронными средствами платежа
|
|
driver.TypeClose = 0;
|
|
driver.Summ = 500.00;
|
|
driver.Payment();
|
|
driver.CloseCheck();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ------- Выполнение операций от лица платёжного агента (1057 = 4) -------//
|
|
// // ------------------------------- Или субагента (1057 = 8) ------------------------------- //
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
|
|
// Mode - Режим:
|
|
// 0 - Выбора
|
|
// 1 - Регистрации
|
|
// 2 - Отчётов без гашения
|
|
// 3 - Отчётов с гашением
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
|
|
// Записать должность и ФИО кассира
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
|
|
// CheckType - Тип чека:
|
|
// 1 - Приход
|
|
// 2 - Возврат прихода
|
|
// 4 - Расход
|
|
// 5 - Возврат расхода
|
|
// 7 - Коррекция прихода
|
|
// 9 - Коррекция расхода
|
|
driver.CheckType = 1;
|
|
// CheckMode - Режим формирования чека:
|
|
// 0 - только в электронном виде без печати на чековой ленте
|
|
// 1 - печатать на чековой ленте
|
|
driver.CheckMode = 1;
|
|
driver.OpenCheck();
|
|
|
|
driver.AttrNumber = 1055;
|
|
// Применяемая система налогооблажения в чеке:
|
|
// ОСН - 1
|
|
// УСН доход - 2
|
|
// УСН доход-расход - 4
|
|
// ЕНВД - 8
|
|
// ЕСН - 16
|
|
// ПСН - 32
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
driver.AttrNumber = 1057;
|
|
// Указание признака агента:
|
|
// Банковскй платежный агент - 1
|
|
// Банковскй платежный субагент - 2
|
|
// Платежный агент - 4
|
|
// Платежный субагент - 8
|
|
// Проверенный агент - 16
|
|
// Комиссионер - 32
|
|
// Иной агент - 64
|
|
driver.AttrValue = 4;
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон платёжного агента
|
|
driver.AttrNumber = 1073;
|
|
driver.AttrValue = "8-800-111-11-11";
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон оператора по приёму платежей
|
|
driver.AttrNumber = 1074;
|
|
driver.AttrValue = "8-800-222-22-22";
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон поставщика
|
|
driver.AttrNumber = 1171;
|
|
driver.AttrValue = "8-800-333-33-33";
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон поставщика
|
|
driver.AttrNumber = 1171;
|
|
driver.AttrValue = "8-800-444-44-44";
|
|
driver.WriteAttribute();
|
|
|
|
// Регистрация товара или услуги
|
|
|
|
driver.BeginItem();
|
|
driver.Name = "Оплата услуг";
|
|
driver.Price = 110.00;
|
|
driver.Quantity = 1;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 110;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 4;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 3;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(110 * 18 / 118 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
// driver.DiscountValue = 10;
|
|
// // DiscountType - Тип скидки:
|
|
// // 0 - суммовая
|
|
// // 1 - процентная
|
|
// driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
|
|
// Оплата и закрытие чека
|
|
// TypeClose - Тип оплаты:
|
|
// 0 - Наличными
|
|
// 1 - Электронными средствами платежа
|
|
driver.TypeClose = 0;
|
|
driver.Summ = 500.00;
|
|
driver.Payment();
|
|
driver.CloseCheck();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ----------- Выполнение операций от лица проверенного (1057 = 16) ---------------//
|
|
// // ------------------------------------- комиссионера (1057 = 32) -------------------------------//
|
|
// // ------------------------------- или иного агента (1057 = 64) ---------------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
|
|
// Mode - Режим:
|
|
// 0 - Выбора
|
|
// 1 - Регистрации
|
|
// 2 - Отчётов без гашения
|
|
// 3 - Отчётов с гашением
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
|
|
// Записать должность и ФИО кассира
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
|
|
// CheckType - Тип чека:
|
|
// 1 - Приход
|
|
// 2 - Возврат прихода
|
|
// 4 - Расход
|
|
// 5 - Возврат расхода
|
|
// 7 - Коррекция прихода
|
|
// 9 - Коррекция расхода
|
|
driver.CheckType = 1;
|
|
// CheckMode - Режим формирования чека:
|
|
// 0 - только в электронном виде без печати на чековой ленте
|
|
// 1 - печатать на чековой ленте
|
|
driver.CheckMode = 1;
|
|
driver.OpenCheck();
|
|
|
|
driver.AttrNumber = 1055;
|
|
// Применяемая система налогооблажения в чеке:
|
|
// ОСН - 1
|
|
// УСН доход - 2
|
|
// УСН доход-расход - 4
|
|
// ЕНВД - 8
|
|
// ЕСН - 16
|
|
// ПСН - 32
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
driver.AttrNumber = 1057;
|
|
// Указание признака агента:
|
|
// Банковскй платежный агент - 1
|
|
// Банковскй платежный субагент - 2
|
|
// Платежный агент - 4
|
|
// Платежный субагент - 8
|
|
// Проверенный агент - 16
|
|
// Комиссионер - 32
|
|
// Иной агент - 64
|
|
driver.AttrValue = 16;
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон поставщика
|
|
driver.AttrNumber = 1171;
|
|
driver.AttrValue = "8-800-333-33-33";
|
|
driver.WriteAttribute();
|
|
|
|
// Телефон поставщика
|
|
driver.AttrNumber = 1171;
|
|
driver.AttrValue = "8-800-444-44-44";
|
|
driver.WriteAttribute();
|
|
|
|
// Регистрация товара или услуги
|
|
|
|
driver.BeginItem();
|
|
driver.Name = "Оплата услуг";
|
|
driver.Price = 110.00;
|
|
driver.Quantity = 1;
|
|
// Если значение |Summ - Price * Quantity| > 0.01 , то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2
|
|
driver.Summ = 110;
|
|
// Признак предмета расчёта. Свойство ItemType может принимать значения:
|
|
// 1 - товар, за исключением подакцизного товара
|
|
// 2 - подакцизный товар
|
|
// 3 - работа
|
|
// 4 - услуга
|
|
// 5 - приём ставок при деятельность по организации и проведению азартных игр
|
|
// 6 - выплата выигрышей в азартных играх
|
|
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
|
|
// 8 - выплата выигрышей в лотереях
|
|
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
|
|
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
|
|
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
|
|
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
|
|
driver.ItemType = 4;
|
|
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
|
|
// 1 - Полная предварительная оплата до момента передачи предмета расчета
|
|
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
|
|
// 3 - Аванс
|
|
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
|
|
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
|
|
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
|
|
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
|
|
driver.PaymentMode = 1;
|
|
driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 3;
|
|
// Способ исчисления суммы налога. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(110 * 18 / 118 * 100) / 100;
|
|
// Скидка больше не изменяет сумму позиции, теперь она просто добавляет информационную печать. Необходимо рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
|
|
// driver.DiscountValue = 10;
|
|
// // DiscountType - Тип скидки:
|
|
// // 0 - суммовая
|
|
// // 1 - процентная
|
|
// driver.DiscountType = 0;
|
|
driver.EndItem();
|
|
|
|
// Оплата и закрытие чека
|
|
// TypeClose - Тип оплаты:
|
|
// 0 - Наличными
|
|
// 1 - Электронными средствами платежа
|
|
driver.TypeClose = 0;
|
|
driver.Summ = 500.00;
|
|
driver.Payment();
|
|
driver.CloseCheck();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ----------------------------- Чек коррекции прихода ------------------------------- //
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
|
|
// Mode - Режим:
|
|
// 0 - Выбора
|
|
// 1 - Регистрации
|
|
// 2 - Отчётов без гашения
|
|
// 3 - Отчётов с гашением
|
|
driver.Mode = 1;
|
|
driver.SetMode();
|
|
|
|
// Записать должность и ФИО кассира
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
|
|
// CheckType - Тип чека:
|
|
// 1 - Приход
|
|
// 2 - Возврат прихода
|
|
// 4 - Расход
|
|
// 5 - Возврат расхода
|
|
// 7 - Коррекция прихода
|
|
// 9 - Коррекция расхода
|
|
driver.CheckType = 7;
|
|
// CheckMode - Режим формирования чека:
|
|
// 0 - только в электронном виде без печати на чековой ленте
|
|
// 1 - печатать на чековой ленте
|
|
driver.CheckMode = 1;
|
|
driver.OpenCheck();
|
|
|
|
// Применяемая система налогооблажения в чеке:
|
|
// ОСН - 1
|
|
// УСН доход - 2
|
|
// УСН доход-расход - 4
|
|
// ЕНВД - 8
|
|
// ЕСН - 16
|
|
// ПСН - 32
|
|
driver.AttrNumber = 1055;
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
// // Тип коррекции:
|
|
// // 0 - самостоятельная операция
|
|
// // 1 - операция по предписанию
|
|
driver.AttrNumber = 1173;
|
|
driver.AttrValue = 1;
|
|
driver.WriteAttribute();
|
|
|
|
// Начало записи комплексного атрибута 1174
|
|
driver.AttrNumber = 1174;
|
|
driver.BeginComplexAttribute();
|
|
// Наименование основания для коррекции. Произвольная строка 256 символов
|
|
driver.AttrNumber = 1177;
|
|
driver.AttrValue = "Чека покупателя не давал. Деньга из касса вытаскивал, а тута насяльника пришел... бельменде... кульманде...";
|
|
driver.WriteAttribute();
|
|
// Дата документа основания для коррекции. В формате unixtime
|
|
driver.AttrNumber = 1178;
|
|
date = new Date();
|
|
driver.AttrValue = parseInt(date.getTime()/1000);
|
|
driver.WriteAttribute();
|
|
// Номер документа основания для коррекции. Произвольная строка 32 символа
|
|
driver.AttrNumber = 1179;
|
|
driver.AttrValue = "1234567890";
|
|
driver.WriteAttribute();
|
|
// Конец записи комплексного атрибута 1174
|
|
driver.EndComplexAttribute();
|
|
|
|
// Регистрация суммы коррекции. В чеках коррекции можно зарегистрировать только одну позицию в количестве 1 на сумму коррекции. Передавать скидки/надбавки, цену, количество запрещено. Чек коррекции можно только закрыть без сдачи по нескольким типам оплаты.
|
|
// Регистрация товара или услуги
|
|
driver.BeginItem();
|
|
// Свойства Name, Price и Quantity не имеют смысла в чеке коррекции, так как в коррекции нет единицы товара, а регистрируется сумма коррекции
|
|
//driver.Name = "Коррекция прихода";
|
|
//driver.Price = 109.33;
|
|
//driver.Quantity = 1;
|
|
driver.Summ = 109.33;
|
|
// driver.Department = 0;
|
|
// TaxTypeNumber - Номер налога:
|
|
// 0 - Налог из секции
|
|
// 1 - НДС 0%
|
|
// 2 - НДС 10%
|
|
// 3 - НДС 18%
|
|
// 4 - без НДС
|
|
// 5 - НДС 10/110
|
|
// 6 - НДС 18/118
|
|
driver.TaxTypeNumber = 2;
|
|
// Способ исчисления суммы налога. Свойство не имеет смысла в чеке коррекции, так как в коррекции нет единицы товара, а регистрируется сумма коррекции. Доступные значения TaxMode:
|
|
// 0 - налог расчитывается от суммы позиции
|
|
// 1 - налог расчитывается от цены позиции
|
|
//driver.TaxMode = 1;
|
|
// Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова).
|
|
driver.TaxSumm = Math.round(109.33 * 10 / 110 * 100) / 100;
|
|
driver.EndItem();
|
|
|
|
// Оплата и закрытие чека
|
|
// TypeClose - Тип оплаты:
|
|
// 0 - Наличными
|
|
// 1 - Электронными средствами платежа
|
|
driver.TypeClose = 0;
|
|
driver.Summ = 99.33;
|
|
driver.Payment();
|
|
driver.TypeClose = 1;
|
|
driver.Summ = 10.00;
|
|
driver.Payment();
|
|
driver.CloseCheck();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ---------------------------------- Закрыть смену -------------------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
driver.Mode = 3;
|
|
driver.SetMode();
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
driver.ReportType = 1;
|
|
driver.Report();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ------------------------- Отчёт о состоянии расчётов ------------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
driver.Mode = 2;
|
|
driver.SetMode();
|
|
driver.AttrNumber = 1021;
|
|
driver.AttrValue = "Старший кассир Иванов И.И.";
|
|
driver.WriteAttribute();
|
|
// Записать ИНН кассира
|
|
driver.AttrNumber = 1203;
|
|
driver.AttrValue = "526317984689";
|
|
driver.WriteAttribute();
|
|
driver.ReportType = 42;
|
|
driver.Report();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ----------- Получение состояния связи фискального накопителя --------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
driver.Mode = 0;
|
|
driver.SetMode();
|
|
driver.Caption = "Состояния связи фискального накопителя";
|
|
driver.Alignment = 1;
|
|
driver.TextWrap = 1;
|
|
driver.PrintString();
|
|
driver.Alignment = 0;
|
|
|
|
// Расшифровки кодов приведены в документации на протокол ККТ.
|
|
// Код ошибки сети
|
|
driver.RegisterNumber = 43;
|
|
driver.OFDLastError = 1;
|
|
driver.GetRegister();
|
|
driver.Caption = "Код ошибки сети: " + driver.OFDLastError;
|
|
driver.PrintString();
|
|
|
|
// Код ошибки ОФД
|
|
driver.RegisterNumber = 43;
|
|
driver.OFDLastError = 2;
|
|
driver.GetRegister();
|
|
driver.Caption = "Код ошибки ОФД: " + driver.OFDLastError;
|
|
driver.PrintString();
|
|
|
|
// Код ошибки ФН
|
|
driver.RegisterNumber = 43;
|
|
driver.OFDLastError = 3;
|
|
driver.GetRegister();
|
|
driver.Caption = "Код ошибки ФН: " + driver.OFDLastError;
|
|
driver.PrintString();
|
|
|
|
// Печать клише
|
|
driver.PrintHeader();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ----------- Получение количества неотправленных документов и --------------//
|
|
// //------------------- даты самого старого неотправленного -------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
driver.Mode = 0;
|
|
driver.SetMode();
|
|
driver.Caption = "Данные по неотправленным документам";
|
|
driver.Alignment = 1;
|
|
driver.TextWrap = 1;
|
|
driver.PrintString();
|
|
driver.Alignment = 0;
|
|
|
|
// // Количество неотправленных документов:
|
|
driver.RegisterNumber = 44;
|
|
driver.GetRegister();
|
|
driver.Caption = "Количество неотправленных документов: " + driver.Count;
|
|
driver.PrintString();
|
|
|
|
// Дата самого старого неотправленного документа
|
|
driver.RegisterNumber = 45;
|
|
driver.GetRegister();
|
|
driver.Caption = "Дата самого старого неотправленного документа: " + driver.Day + "." + driver.Month + "." + driver.Year + " " + driver.Hour + ":" + driver.Minute;
|
|
driver.PrintString();
|
|
|
|
// Печать клише
|
|
driver.PrintHeader();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // ----------- Получение регистрационных данных ККТ ----------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
driver.Mode = 0;
|
|
driver.SetMode();
|
|
driver.Caption = "Регистрационный данные ККТ";
|
|
driver.Alignment = 1;
|
|
driver.TextWrap = 1;
|
|
driver.PrintString();
|
|
driver.Alignment = 0;
|
|
|
|
// Наименование пользователя
|
|
driver.AttrNumber = 1048;
|
|
driver.ReadAttribute();
|
|
driver.Caption = "Наименование пользователя: " + driver.AttrValue;
|
|
driver.PrintString();
|
|
|
|
// ИНН пользователя
|
|
driver.AttrNumber = 1018;
|
|
driver.ReadAttribute();
|
|
driver.Caption = "ИНН пользователя: " + driver.AttrValue;
|
|
driver.PrintString();
|
|
|
|
// Набор выбранных СНО в виде значения в десятичной системе исчисления, которое в двоичной соответствует битовой маске. Например 41 соответствует маске 101001 (ОСН 1, УСН доход 0, УСН доход-расход 0, ЕНВД 1, ЕСН 0, ПСН 1)
|
|
driver.AttrNumber = 1062;
|
|
driver.ReadAttribute();
|
|
driver.Caption = "Выбранные СНО: " + driver.AttrValue;
|
|
driver.PrintString();
|
|
|
|
// Регистрационный номер ККТ
|
|
driver.AttrNumber = 1037;
|
|
driver.ReadAttribute();
|
|
driver.Caption = "Регистрационный номер ККТ: " + driver.AttrValue;
|
|
driver.PrintString();
|
|
// аналогичным образом запрашиваются и остальные атрибуты
|
|
|
|
// Печать клише
|
|
driver.PrintHeader();
|
|
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
// // -------------------- Получение прочих данных из ККТ ---------------------------//
|
|
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
|
|
|
|
driver.NewDocument();
|
|
driver.Mode = 0;
|
|
driver.SetMode();
|
|
driver.Caption = "Получение прочих данных из ККТ";
|
|
driver.Alignment = 1;
|
|
driver.TextWrap = 1;
|
|
driver.PrintString();
|
|
driver.Alignment = 0;
|
|
|
|
// Номер фискального накопителя
|
|
driver.RegisterNumber = 47;
|
|
driver.GetRegister();
|
|
driver.Caption = "Номер фискального накопителя: " + driver.SerialNumber;
|
|
driver.PrintString();
|
|
|
|
// Номер фискального документа последней регистрации/перерегистрации, а также дата и время
|
|
driver.RegisterNumber = 48;
|
|
driver.GetRegister();
|
|
driver.Caption = "Номер ФД последней регистрации/перерегистрации: " + driver.DocNumber;
|
|
driver.PrintString();
|
|
driver.Caption = "Дата ФД последней регистрации/перерегистрации: " + driver.Day + "." + driver.Month + "." + driver.Year + " " + driver.Hour + ":" + driver.Minute;
|
|
driver.PrintString();
|
|
|
|
// Данные по последнему фискальному документу чека
|
|
driver.RegisterNumber = 51;
|
|
driver.GetRegister();
|
|
driver.Caption = "Номер фискального документа: " + driver.DocNumber;
|
|
driver.PrintString();
|
|
driver.Caption = "Тип чека: " + driver.LastCheckType;
|
|
driver.PrintString();
|
|
driver.Caption = "Сумма чека: " + driver.Summ;
|
|
driver.PrintString();
|
|
driver.Caption = "Дата и время чека: " + driver.Day + "." + driver.Month + "." + driver.Year + " " + driver.Hour + ":" + driver.Minute;
|
|
driver.PrintString();
|
|
driver.Caption = "Фискальный признак документа: " + driver.FiscalSign;
|
|
driver.PrintString();
|
|
|
|
// Данные по последнему фискальному документу
|
|
driver.RegisterNumber = 52;
|
|
driver.GetRegister();
|
|
driver.Caption = "Номер фискального документа: " + driver.DocNumber;
|
|
driver.PrintString();
|
|
driver.Caption = "Тип чека: " + driver.LastCheckType;
|
|
driver.PrintString();
|
|
driver.Caption = "Сумма чека: " + driver.Summ;
|
|
driver.PrintString();
|
|
driver.Caption = "Дата и время чека: " + driver.Day + "." + driver.Month + "." + driver.Year + " " + driver.Hour + ":" + driver.Minute;
|
|
driver.PrintString();
|
|
driver.Caption = "Фискальный признак документа: " + driver.FiscalSign;
|
|
driver.PrintString();
|
|
|
|
// Получение статуса фискального накопителя
|
|
// ValuePurpose - назначение параметра:
|
|
// 0 – проверить наличие ФН. 0 – ФН отсутствует, 1 – ФН есть.
|
|
// 1 – получить фазу жизни ФН. ответ – битовая маска: бит 0 – проведена настройка ФН, бит 1- открыт фискальный режим, бит 2 – постфискальный режим, бит 3 – закончена передача фискальных данныхв ОФД. Установленный бит 2 означает, что архив ФН закрыт
|
|
driver.ValuePurpose = 0;
|
|
driver.ReadFNStatus();
|
|
driver.Caption = "Наличие ФН: " + driver.Value;
|
|
driver.PrintString();
|
|
driver.ValuePurpose = 1;
|
|
driver.ReadFNStatus();
|
|
driver.Caption = "Фаза жизни ФН: " + driver.Value;
|
|
driver.PrintString();
|
|
|
|
// Получение параметров фискального накопителя
|
|
// ValuePurpose - назначение параметра:
|
|
// 0 – получить серийный номер ФН;
|
|
// 1 – получить номер последнего документа регистрации/перерегистрации ФН;
|
|
// 2 - получить срок действия ФН, оставшееся количество перегистраций, количество созданных отчётов решистрации/перергистраций
|
|
driver.ValuePurpose = 0;
|
|
driver.ReadFNParam();
|
|
driver.Caption = "Серийный номер ФН: " + driver.InboundStream;
|
|
driver.PrintString();
|
|
driver.ValuePurpose = 1;
|
|
driver.ReadFNParam();
|
|
driver.Caption = "Номер посл. документа регистрации/перерегистрации ФН: " + driver.InboundStream;
|
|
driver.PrintString();
|
|
driver.ValuePurpose = 2;
|
|
driver.ReadFNParam();
|
|
driver.Caption = "Срок действия ФН: " + driver.Day + "." + driver.Month + "." + driver.Year + " " + driver.Hour + ":" + driver.Minute;
|
|
driver.PrintString();
|
|
driver.Caption = "Оставшееся количество перегистраций ФН: " + driver.Duration;
|
|
driver.PrintString();
|
|
driver.Caption = "Количество созданных отчётов регистраций/перегистраций: " + driver.Count;
|
|
driver.PrintString();
|
|
|
|
// Печать клише
|
|
driver.PrintHeader();
|