//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();