Задать вопрос
@Qist27000

Kkm Server. Печать чека товара. Как прописать в чеке товар и QR код?

Используем KKM Server API для печати чека. Как правильно подключиться к системе KKM. Ниже привели пример кода который используем, нашли его в примере API на официальном сайте KKM. При его запуске печатается аннулированный чек без товара. Так же не печатается QR код

Печать производится по нажатию на кнопку:
```
Печать чека
```

Вот код обработчика:

```
function ExecuteSuccess(result) {
$('#kkm-result').html(JSON.stringify(result));
}

// Печать чека
function RegisterCheck(NumDevice, TypeCheck, IsBarCode, Print) {

// Подготовка данных команды, параметры (TypeCheck = 0, NumDevice = 0, InnKkm = "", CashierName = "")
var Data = KkmServer.GetDataCheck(TypeCheck, NumDevice, "", "Kазакова Н.А.", "430601071197");

Data.NumDevice = NumDevice;
Data.InnKkm = "";
Data.KktNumber = "";

Data.Timeout = 30;
// Это фискальный или не фискальный чек
Data.IsFiscalCheck = true;
// Тип чека;
// 0 – продажа; 10 – покупка;
// 1 – возврат продажи; 11 - возврат покупки;
// 8 - продажа только по ЕГАИС (обычный чек ККМ не печатается)
// 9 - возврат продажи только по ЕГАИС (обычный чек ККМ не печатается)
Data.TypeCheck = TypeCheck;
// Не печатать чек на бумагу
Data.NotPrint = false; //true,
// Количество копий документа
Data.NumberCopies = 0;
// Продавец, тег ОФД 1021
Data.CashierName = "Kазакова Н.А.";
// ИНН продавца тег ОФД 1203
Data.CashierVATIN = "430601071197";
Data.ClientAddress = "sochi@papa.com";
Data.ClientInfo = "Везучий В.В. РЕ-125486";
Data.ClientINN = "502906602876";
Data.SenderEmail = "sochi@mama.com";
Data.PlaceMarket = "kkmserver.ru";
Data.TaxVariant = "";
// Дополнительный реквизит пользователя тег ОФД 1084
Data.UserAttribute = {
// Наименование дополнительного реквизита пользователя тег ОД 1085
Name: "Поле-тест",
// Значение дополнительного реквизита пользователя тег ОФД 1086
Value: "Тестовое значение"
};
// Дополнительный реквизит чека тег 1192
Data.AdditionalAttribute = "Тест";

Data.KPP = "782543005";

Data.PayByProcessing = false; //В тестовом чеке автоматический эквайринг выключен
// Номер устройства для эквайринга - Null - из настроек на сервере, 0 - любое, число - номер конкретного устройства
Data.NumDeviceByProcessing = null;
// Номер чека для эквайринга
Data.ReceiptNumber = "TEST-1";
// Печатать Слип-чек после чека (а не в чеке)
PrintSlipAfterCheck = false;
// Печатать Слип-чек дополнительно для кассира (основной слип-чек уже будет печататся в составе чека)
Data.PrintSlipForCashier = true;
//Если это чек возврата то возможны два поля для отмены транзакции (если не указано то по эквайрингу будет не отмена а возврат оплаты)
Data.RRNCode = ""; // RRNCode из операции эквайринга. Только для отмены оплаты! Для Оплаты или возврата оплаты не заполнять!
Data.AuthorizationCode = ""; // AuthorizationCode из операции эквайринга. Только для отмены оплаты! Для Оплаты или возврата оплаты не заполнять!

// Добавление признаков агенте и поставщика
Data.AddDataAgent(
2,
// Операция платежного агента тег 1044
"95315",
// Телефон платежного агента тег 1073
"+79995554422",
// Телефон оператора по приему платежей тег 1074
"+72223334455",
// Телефон оператора перевода тег 1075
"+74447776655",
// Наименование оператора перевода тег 1026
"ООО Тестовая организация",
// Адрес оператора перевода тег 1005
"Москва, зубовский бульвар 44",
// ИНН оператора перевода тег 1016
"430601071197",
// Телефон поставщика тег 1171
"+76662229955"
);


// Добавление печати текста по полям

//При вставке в текст символов ">#10#<" строка при печати выровнеется по центру, где 10 - это на сколько меньше станет строка ККТ
Data.AddTextString(">#2#<ООО \"Рога и копыта\"", 1);
// При вставке в текст в середину строки символов "<#10#>" Левая часть строки будет выравнена по левому краю, правая по правому, где 10 - это на сколько меньше станет строка ККТ
// При вставке в текст в середину строки символов "<#10#>>" Левая часть строки будет выравнена по правому краю, правая по правому, где 10 - отступ от правого клая
Data.AddTextString("<<->>");
Data.AddTextString("Пример №1:<#10#>154,41");
Data.AddTextString("2-рое поле:<#10#>4,00");
Data.AddTextString("<<->>");
Data.AddTextString("Пример №2:<#8#>>4,00");
Data.AddTextString("2-рое поле:<#8#>>1544,00");

Data.AddTextString("<<->>");
Data.AddTextString("Шрифт № 1", 1, 15);
Data.AddTextString("Шрифт № 2", 2, 10);
Data.AddTextString("Шрифт № 3", 3, 5);
Data.AddTextString("Шрифт № 4", 4, 15);
Data.AddTextString("<<->>");

// Добавление печати фискальной строки
var DataStr = Data.AddRegisterString(
// НаименованиеТовара(64 символа)
"Сапоги женские DF-3099-1",
// Количество (3 знака после запятой)
1,
// ЦенаБезСкидки (2 знака после запятой)
1,
// СуммаСтроки (2 знака после запятой)
0.01,
// СтавкаНДС(0(НДС 0%), 10(НДС 10%), 20(НДС 20%), -1(НДС не облагается), 120 (НДС 20/120), 110 (НДС 10/110))
-1,
// Отдел
0,
// Код товара EAN13 - не обязательно
"1254789547853",
4,
1,
"0104300943734342212413195240818240640291ffd092MDEwNDMwMDk0MzczNDM",
// Единица измерения предмета расчета. Можно не указывать
"пара",
// Цифровой код страны происхождения товара (CountryOfOrigin) в соответствии с Общероссийским классификатором стран мира 3 симв. Тег 1230
"156",
// Регистрационный номер таможенной декларации (CustomsDeclaration) 32 симв. Тег 1231
"54180656/1345865/3435625/23",
// Сумма акциза (ExciseAmount) с учетом копеек, включенная в стоимость предмета расчета Тег 1229
0.01,
// Дополнительный реквизит предмета расчета тег 1191, Только для ФФД 1.1 !
"Тест-доп.реквизит"
);

// DataStr.EGAIS = {
// Barcode: "22N0000154NUCPRZ3R8381461004001003499NKAQ0ZBUVDNV62JQAR69PEV878RO93V",
// Ean: "3423290167937",
// Volume: 0.7500,
// };

Data.AddAgentSign(2);
// Добавляет в последнею строку данные агента (не обязательно)
Data.AddAgentData(
// Операция платежного агента тег 1044
"95315",
// Телефон платежного агента тег 1073
"+79995554422",
// Телефон оператора по приему платежей тег 1074
"+72223334455",
// Телефон оператора перевода тег 1075
"+74447776655",
// Наименование оператора перевода тег 1026
"ООО Рога и копыта",
// Адрес оператора перевода тег 1005
"Москва, зубовский бульвар 44",
// ИНН оператора перевода тег 1016
"430601071197"
);
// Добавляет в последнею строку данные поставщика (не обязательно)
Data.AddPurveyorData(
// Телефон поставщика тег 1171
"+76662229955",
// Наименование поставщика ОФД 1225
"ООО 'Гаражик в деревне'",
// ИНН поставщика тег 1226
"430601071197"
);

// Добавление печати штрихкода
// Data.AddBarcodeString(ТипШтрихКода ("EAN13", "CODE39", "CODE128", "QR", "PDF417", "1254789547853"), ШтрихКод);
Data.AddBarcodeString("EAN13", "1254789547853");
Data.AddTextString("<<->>");

Data.AddTextString("Это мега крутой товар. Продается во всех магазинах страны. Покупайте только у нас", 4, 0);

// Добавление печати еще одной фискальной строки
Data.AddRegisterString("Шаровары мужские красные: НИМБУС-2000", 1, 1, 0.01, 1, 1, "1254789547853", 1, 1);

// Добавляет в последнею строку Код товарной номенклатуры
Data.AddGoodCodeData("02", "04630037591316", "sgEdK2y5");

// Наличная оплата (2 знака после запятой)
Data.Cash = 100;
// Сумма электронной оплаты (2 знака после запятой)
Data.ElectronicPayment = 0.01;
// Сумма из предоплаты (зачетом аванса) (2 знака после запятой)
Data.AdvancePayment = 0;
// Сумма постоплатой(в кредит) (2 знака после запятой)
Data.Credit = 0;
// Сумма оплаты встречным предоставлением (сертификаты, др. мат.ценности) (2 знака после запятой)
Data.CashProvision = 0;

//#if Relese
// Скидываем данные об агенте - т.к.у Вас неверняка ККТ не зарегистрирована как Агент.
Data.AgentSign = null;
Data.AgentData = null;
Data.PurveyorData = null;
//#endif
for (var i = 0; i < Data.CheckStrings.length; i++) {
if (Data.CheckStrings[i] != undefined && Data.CheckStrings[i].Register != undefined) {
Data.CheckStrings[i].Register.AgentSign = null;
Data.CheckStrings[i].Register.AgentData = null;
Data.CheckStrings[i].Register.PurveyorData = null;
};
};

}
```
  • Вопрос задан
  • 341 просмотр
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы