January 1

Использование скриптов драйвера ККТ Атол в xPos

Для начала - лично я не рекомендую использовать xPos в проде.

Тем более сейчас в одной лицензии и Frontol 6 и это недоразумение.

Но если у вас linux, то возможности перейти на F6 нет.

Начнем.

xPos с ККТ общается командами. В отличии от F6, который в драйвер шлет json-задание. Именно это не дает нам "в лоб" использовать скрипты драйвера.

Но! xPos поддерживает подключение через 1С БПО. А оно, в свою очередь, работает уже через json задания!

Значит можно пользоваться!!!

Для этого:

1. Подключаем ККТ через 1с БПО:

2. Настраиваем переменную среды, в которой указываем каталог со скриптами (путь приведен для примера может быть любым - хоть папка яндекс диска):

имя переменной строго DTO10_SCRIPTS_PATH

3. Немного модифицируем скрипт (например для продаж 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";
            delete item.tax.sum;
        }

        if (item.tax.type === "vat120") {
            item.tax.type = "vat122";
            delete item.tax.sum;
        };
    }

    return task;
}

Все: