Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Если у вас есть интернет-магазин и вы принимаете платежи через Интернет, то с 01 июля 2017 года у вас есть онлайн-касса.
С помощью Небес, программистов и пары крепких слов она была установлена, фискализирована, подключена к интернет-магазину на Битрикс и теперь более-менее стабильно работает и даже печатает чеки.И вроде все были довольны и спали спокойно, пока не произошел первый сбой. И не важно, что именно послужило причиной сбоя, важно то, что никакого способа мониторинга работы кассы до сих пор не было. Емейлы на почту или сообщения в Телеграм не приходили, если касса вдруг уходила в офлайн, теряла интернет или происходило что-то другое.
Такой функции, как мониторинг и уведомление владельца магазина о том, что онлайн-касса недоступна, в Битриксе не было предусмотрено. В первых числах июля даже статус кассы в Списке касс в Битриксе не показывал ее реальное состояние.
Статус "В сети" никакого отношения к доступности кассы не имел. После обращения в техподдержку Битрикса в ближайшем горячем обновлении пришел новый столбец — "Дата последнего соединения с онлайн-кассой". Он обновлялся каждую минуту и послужил хорошей опорой для разработки модуля.
Модуль мониторинга онлайн-кассы от Sensorium
Пока наш отдел техподдержки выл от напряжения, проверяя раз по 20 в день, что в каждом интернет-магазине онлайн-кассы доступны и все чеки напечатаны и имеют ссылки в ОФД, к нам обратились коллеги из Sensorium и предложили подключить свой сервис для мониторинга онлайн-касс.
Sensorium — это сервис мониторинга сайтов, интернет-магазинов, который не только следит за доступностью сайта, но и проверяет его критические функции как реальный пользователь, открывая браузер и выполняя пользовательские сценарии. При ошибках Sensorium мгновенно сообщает вам в канал Telegram.
Мы уже и сами думали написать модуль, который будет следить за доступностью кассы, но задача сильно упростилась, так как мы получили готовые функции прямо из сервиса Sensorium.
Итак, бесплатный модуль мониторинга онлайн-касс для интернет-магазинов на Битрикс вышел в свет 16 августа 2017г. Он прост в настройке и позволяет владельцам и службе поддержки интернет-магазинов забыть о постоянных проверках доступности онлайн-касс.
Модуль самостоятельно отслеживает доступность кассы по двум параметрам: "Касса в Сети" и "Дата последнего соединения". Если касса уходит "из сети" или не соединяется с сайтом 2 минуты, вы получаете мгновенное сообщение в канал Telegram о том, что касса недоступна.
Просто, быстро, эффективно. В прошлое уходят дни и ночи наблюдения за кассой в админке Битрикса. Модуль уже доступен в Маркетплейсе, его можно установить и скачать.
Для тех, кто хочет также в автоматическом режиме отслеживать ошибки печати чеков, z-отчетов, ошибки добавления чеков, а также отслеживать недоступность самого сайта и Битрикса, Sensorium выпустил тариф 54-ФЗ
Приключения с 54-ФЗ. Виды ошибок работы онлайн-кассы
Модуль был разработан, протестирован на нескольких сайтах, техподдержка ликовала и перестала нервничать.
Битрикс продолжал выпускать обновления, улучшать работу модуля Онлайн-касс, а мы продолжили ловить ошибки, баги и особенности работы онлайн-касс.
Ниже мы хотим поделиться бесценным опытом проблем и их решений, которые обязательно догонят всех владельцев интернет-магазинов на Битриксе в один прекрасный день.
Основные проблемы в работе онлайн-касс Битрикс:
1. Доступность кассы не всегда означает, что она успешно соединяется с ОФД.
2. Статус чека "Напечатан" в Битриксе не означает, что чек передан в ОФД
3. Если по заказу был напечатан чек, заказ нельзя удалять.
4. Если компьютер, к которому подключена онлайн-касса, регулярно зависает, установите новую версию программы BxDTO.
5. Частичная оплата. Невозможно напечатать чек, если в заказе 2 разные оплаты.
Доступность кассы не всегда означает, что она успешно соединяется с ОФД
Вернемся к нашей картинке со списком касс.
Как оказалось, спокойствие картины, когда Касса в сети —да, а Дата последнего соединения = 1 минуту назад, обманчиво.
Посмотрим еще раз на знакомую всем схему с сайта kassy54fz.ru:
- есть сервер с интернет-магазином на Битриксе;
- на компьютер с кассой установлена программа BxDTO (обозначена красной иконкой);
- Эта программа соединена с онлайн-кассой;
- Онлайн-касса держит соединение с ОФД через сеть Интернет;
- ОФД передает чеки в ФНС.
"Где же подвох?" — задаст вопрос подозрительный читатель.
Подвох или особенность заключается в том, что именно отображается в полях "В сети" и "Последнее обращение". Оказывается:
- в поле "В сети" — показывает не статус соединения онлайн-кассы с ОФД, а доступность онлайн-кассы для программы BxDTO. При этом соединение онлайн-кассы с ОФД никак не отслеживается.
- в поле "Последнее обращение" — указывается дата и время последнего обращения программы BxDTO на сайт.
Проведем эксперимент: отсоединим usb-кабель кассы от компьютера, что же мы увидим?
- Касса в сети — Нет.
- Последнее обращение — продолжает упорно обновляться, как будто касса действительно доступна.
- Касса в сети — Да. Ведь реально программа BxDTO успешно соединяется с Кассой.
- Последнее обращение — актуальная дата и время, обновляется раз в 1 минуту.
Итог: с помощью этих параметров можно отслеживать только следующие ситуации:
- Касса физически подключена к компьютеру.
- На компьютере с кассой работает интернет.
- Программа BxDTO не зависла и работает стабильно.
Статус чека "Напечатан" в Битриксе не означает, что чек передан в ОФД
Этот парадокс выявил реальный случай, когда мы заглянули в личный кабинет ОФД нашего клиента и увидели, что несмотря на статус чеков "Напечатан" в Битриксе, ОФД эти чеки не получал и, соответственно, не передавал в ФНС.
Естественно, никакого подозрения, что чеки реально не уходят в ОФД и не было. Битрикс радостно выводил статус "Напечатан", при этом все уже привыкли различать проблемные чеки по статусу "Ошибка".
Что же случилось?
Как мы выяснили в п.1, ничто в Битриксе не проверяет, что онлайн-касса имеет соединение с Интернетом и ОФД. В самой кассе — это два разных параметра. Касса может иметь соединение с Интернетом, но не с ОФД. Чтобы убедиться в этом, достаточно напечатать чек самодиагностики. Он покажет 2 разные строки: Соединение с Интернет — да; Соединение с ОФД — отсутствует.
Но если нет соединения с ОФД, то и чеки не должны иметь статус "Напечатан" в Битриксе, скажете вы... Мы тоже так думали, пока не выяснили, что статус "Напечатан" у чека в Битриксе ставится, когда онлайн-касса записала чек в фискальный накопитель. При этом факт передачи чека в ОФД программа BxDTO никак не проверяет.
Ну вот честно, это не статус "Напечатан", это скорее "Записан", если уж строго следовать логике 54-ФЗ. Или надо было ввести еще один статус "Отправлен в ОФД", чтобы хоть как-то разделить ситуации записи чека в ФН кассы и передачи чека в ИФНС.
Решение: мы пока нашли два решения:
- Ручная сверка чеков за день из Битрикса и ОФД. Из обоих источников можно выгрузить чеки в Excel.
- Автоматическая сверка чеков через сервис Sensorium в рамках тарифа 54-ФЗ, когда робот проверяет, что каждый чек в Битриксе со статусом "Напечатан" имеет реальную запись на сайте ОФД.
Если по заказу был напечатан чек, заказ нельзя удалять.
Его надо отменить, вернув платеж и напечатав чек Возврата. Эта истина постигнута тоже экспериментальным путем, когда в один ужасный день чеки в интернет-магазине перестали уходить. Часть чеков встала со статусом Ошибка, остальные — в статусе " В процессе печати".
Решение подсказал внимательный просмотр списка чеков. У этих двух чеков в статусе Ошибка не было служб оплаты, хотя номера заказов стояли.
Оказалось, что менеджер удалил эти 2 заказа, чеки ушли в BxDTO с пустым списком товаров. Поэтому BxDTO все время возвращал ошибку, но ее суть была тайной для всех... И хотя в Битриксе есть скрытая таблица b_cashbox_error_log (она показывает все ошибки печати чеков), на момент разбирательств в ней не было никаких нормальных пояснений по этим двум чекам.
Проблема оказалась в логике работы BxDTO, которую пояснила тех.поддержка:
BxDTO всю пачку присылаемых (в одном JSON-документе) чеков игнорирует, т.к. его формат не проходит валидацию из-за отсутствующих товаров. Если удалить пустые чеки, то оставшаяся часть станет "видимой" для разбора и печати.
Решения два:
- Организационное: запретить менеджерам удалять заказы. Делать только отмену
- Программное: сделать обработчик, который при удалении заказа проверяет, что у заказа нет чеков. Если чеки есть, удаление заказа блокируется.
Если компьютер, к которому подключена онлайн-касса, регулярно зависает, установите новую версию программы BxDTO.
Получить новую версию под нашу ОС нам удалось только на странице учебного курса через Чат. Спасибо коллегам из Битрикса, что регулярно дежурили в чате на этой странице. На диагностику этой проблемы ушло 3 дня и 3 компьютера.
Невозможно напечатать чек, если в заказе 2 разные оплаты.
Ну и на десерт главная проблема онлайн-касс/Атола/Битрикса — частичные оплаты. Это когда в заказе есть две оплаты от клиента: например, банковской картой и наличными.
В нашем случае бОльшая часть заказа оплачивается банковской картой, а остаток — бонусами. Причем бонусы — это тоже платежная система.
А в скрытой табличке Ошибок печати чеков в Битриксе — b_sale_cashbox_err_log появляется ошибка:
К чести Битрикса надо сказать, что эта же ошибка показывается в данном случае и в поле Проблема с заказом на странице этого заказа.
Решение: пока отсутствует. По словам ТП Битрикса, кассовые аппараты Атола не поддерживают печать чеков с частичной оплатой.