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

Как распечатать чек через API Атол?

// Авторизация кассира
                fptr.setParam(1021, "Кассир Иванов И.");
                fptr.setParam(1203, "123456789047");
                fptr.operatorLogin();

                // Открываем чек продажи
                fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
                fptr.openReceipt();

                // Регистрируем позицию
                fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, "Булка");
                fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100.00);
                fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 2.00);
                fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
           
                fptr.registration();

                // Оплата наличными
                fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_TYPE, Constants.LIBFPTR_PT_CASH); // 0 = наличные
                fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_SUM, 200.00);
                fptr.payment();

                // Закрываем чек
                fptr.closeReceipt();
Собстсвенно взял с мануала https://integration.atol.ru/api/ но не печатает, чтонее чек выходит аннулированный с ошибкой 3448 (Параметры реквизита не соответствуют форматам данных) а как понять подробнее в чем проблема?

Опытным путем выяснилось что проблема в этом блоке
// Регистрируем позицию
        fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, "Булка"); // Название
        fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100.00); // Цена
        fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 2.00); // Количество
        fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT20); // Налог
        fptr.registration();


По Api там вообще 3 поля обязательных, но всё равно ошибка
пробовал добавить
fptr.setParam(2108, 0);  // мера количества "штука"
        fptr.setParam(1212, 1); // 1 = товар


Результат тот же
  • Вопрос задан
  • 604 просмотра
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
igolets
@igolets
Программист C#, MSSQL
В целом код выглядит вполне корректным.

На счёт замечаний про 3 обязательных поля в конце — по ФФД1.2 добавилась обязательная отправка параметра 2108, остальные я указываю всегда. Причём, если ФФД не обновили до 1.2, то параметр 2108 отправлять нельзя. Но эти ошибки должны вылезти только при отправке а ОФД, не на этапе формирования чека. 1212 я отправляю всегда.

Повторюсь, я проверил свой код, я отправляю данные те же.

Я бы проверил варианты в таком порядке:
  1. Поскольку у меня клиенты печатают без НДС, я не шлю налог. Попробуйте посчитать налог вручную и отправить явно из своего кода для каждой позиции и в итогах.
  2. Альтернативно — попробуйте отправить то же самое с булками, но с нулевой ставкой налога.
  3. Попробуйте отправить те же данные из родной утилиты.
  4. Посмотрите низкоуровневый лог работы C:\Users\User\AppData\Roaming\ATOL\drivers10\ там могут быть подсказки.
  5. Ещё можно посмотреть а утилите Тест драйвера «Информация о ККТ»\ «Тип запроса» «34 – Фатальные ошибки».
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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