Новый год, новый НДС, СНО
Первые - для тех кто не хочет обновлять фронтол на версию поддерживающую новые ставки НДС (22/122).
Вторые - для тех кто в ночь с 31 на 1 хочет встретить с оливье и игристым, а не с кассой и учетной системой.
Третьи - кто не уверен, что в праздники хочет поймать какую то непонятную ошибку в, потенциально, сыром релизе Фронтола (на момент публикации это 28.0).
0. То что написано ниже - актуально для фискальных регистраторов Атол, работающих на 10 драйвере!!!!
- Устанавливаем драйвер ККМ с поддержкой ставки НДС 22-122% (это 10.10.8.0 или 10.10.8.20)
- Дальше нам нужно сделать небольшой скрипт для драйвера ККТ (даже 2 - для продажи и для возврата). Сами скрипты драйвера находятся в папке c:\Program files(x86)\Atol\Frontol6\bin\json_scripts
- теперь сделаем простой скрипт для драйвера с подменой ставки НДС 20 на ставку НДС 22. Для этого вэ той папке создаем файл json_sell:
const receipt = require('fptr10_base_receipt');
const validator = require('fptr10_validators');
function validateTask(task) {
return receipt.validate(task);
}
function execute(task) {
var targetDay = new Date('2026-01-01'); // <= yyyy-MM-dd
var nowDay = new Date();
if (nowDay > targetDay) {
task = changeVat(task)
}
return receiptResult = receipt.executeReceipt(task);
}
function changeVat(task) {
for (var i = 0; i < task.items.length; i++) {
var item = task.items[i];
if (item.type !== "position")
continue;
if (validator.isMissing(item.tax))
continue;
if (item.tax.type === "vat20")
item.tax.type = "vat22";
if (item.tax.type === "vat120")
item.tax.type = "vat122";
}
return task;
}- абсолютно аналогичный код будет у чека возврата прихода - json_sellReturn.
Таким образом два файла дадут вам автоматический переход на 22% НДС.
Так же можно автоматически менять СНО (предварительно только нужно зарегистрировать кассу на нужную СНО).
Добавим в скрипт переход на другу СНО с 1 января:
const receipt = require("fptr10_base_receipt");
const validator = require("fptr10_validators");
function validateTask(task) {
return receipt.validate(task);
}
function execute(task) {
var targetDay = new Date("2026-01-01"); // <= yyyy-MM-dd
var nowDay = new Date();
if (nowDay > targetDay) {
task = changeVat(task);
task = changeTaxStation(task);
}
return receiptResult = receipt.executeReceipt(task);
}
function changeVat(task) {
for (var i = 0; i < task.items.length; i++) {
var item = task.items[i];
if (item.type !== "position")
continue;
if (validator.isMissing(item.tax))
continue;
if (item.tax.type === "vat20")
item.tax.type = "vat22";
if (item.tax.type === "vat120")
item.tax.type = "vat122";
}
return task;
}
function changeTaxStation(task) {
var targetTaxStation = "usnIncomeOutcome"; // osn usnIncome usnIncomeOutcome esn patent
if (validator.isMissing(task.taxationType))
return;
task.taxationType = targetTaxStation;
return task;
}В общем - ничего сложного. И будет работать со всеми версиям фронтола (в том числе и "дотарифными").