Скрипт чек коррекции - исправляем СНО (ФФД 1.05)

Опубликовано Valery - чт, 09/15/2022 - 09:46


Самый простой способ формирования нестандартных чеков - это написать и выполнить скрипт

Исходные данные: Клиент на протоколе ФФД 1.05 формировал чеки ККТ с неправильным установленным СНО - надо было указать патент, вместо УСН. Ставка НДС - "Без НДС" была указана правильно. Других проблем в формировании чека не было. Все чеки, которым требуется коррекция, были в 2022 году.

Подготовительные работы: Так как у клиента, в отчетный период, были не только продажи, но и возвраты, то было принято решение не делать чеки коррекции на пару "Продажа-Возврат". Сделали отчет по продажам из ОФД, далее, в сформированном отчете удалили чеки возврата продаж и относящиеся к ним чеки продаж.

Немного теории: Так как ККТ работал на ФФД 1.05, то задача формирования чека коррекции значительно упрощается - наименование товара на ФФД 1.05 указывать не надо, а сам чек коррекции можно формировать на весь чек, вне зависимости от количества позиций в чеке.

Деньги по "неправильным" чекам были уже взяты, соотвественно скрипт значительно упрощается - вне зависимости был товар оплачен за наличный или безналичный расчет, все чеки коррекции формируются "Встречным предложением". В качестве номера предписания налогового органа будем указывать номер фискального документа из ФН. Нижеприведенный скрипт работает только на платформе 2.5 (Важно! На платформе 5.0 скрипт не правильно формирует ставку НДС).

Поэтому вводим в скрипт 4 переменные:
summ = 6881.00 (полная сумма по итогу чеку, не путать с суммой по позиции);
osnow_cor = "2654" (сквозной номер документа (ФД) по ФН, не путать с номером документа внутри смены);
dayy = "01" день;
monthh = "09" месяц;

Кассир в скрипте будет один - сам ИП-шник (в скрипте: "Иванов Иван Иванович"), соотвественно, ИНН кассира, будет ИНН ИП (в скрипте: "740000000000")

Сам скрипт под ФФД 1.05 с исправленным СНО - Патент (в скрипте: LIBFPTR_TT_PATENT) выглядит так:

summ = 6881.00;
osnow_cor = "2654";
dayy = "01"; monthh = "09";

name_tovar = " ";

Fptr.setParam(1021, "Иванов Иван Иванович");
Fptr.setParam(1203, "740000000000");
Fptr.operatorLogin();
Fptr.setParam(1179, osnow_cor);
Fptr.setParam(1178, new Date("2022-" + monthh + "-" + dayy + "T00:00:00"));
Fptr.setParam(1177, "Служебная записка");
Fptr.utilFormTlv();

correctionInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL_CORRECTION);
Fptr.setParam(1173, 0);
Fptr.setParam(1174, correctionInfo);
Fptr.setParam(1055, Fptr.LIBFPTR_TT_PATENT);
Fptr.openReceipt();

Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, name_tovar);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, summ);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 1);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_NO);
Fptr.registration();
Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_TYPE, Fptr.LIBFPTR_PT_OTHER); Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_SUM, summ); Fptr.payment();

Fptr.setParam(Fptr.LIBFPTR_PARAM_SUM, summ);
Fptr.receiptTotal();
Fptr.closeReceipt();

 


Результат выполнения скрипта на ЧПМ платформа 2.5