Перейти к содержанию

Офлайн-касса — продажи без интернета

Что это

Офлайн-касса — автономное рабочее место ERPJS: приложение на кассовом компьютере с собственной локальной базой данных. Касса продаёт даже при полном отсутствии интернета, а при появлении связи автоматически синхронизируется с сервером: получает обновления справочников (товары, контакты) и передаёт чеки. Каждый переданный чек сервер сразу превращает в полноценный проведённый Счёт-фактуру — со списанием склада, проводками и оплатой.

Возможности

  • Продажа без связи — чеки оформляются локально, интернет не нужен.
  • Автоматическая синхронизация — терминал сам выходит на связь по расписанию (обычно раз в 20–60 секунд); вручную ничего передавать не нужно.
  • Без конфликтов номеров — у каждой кассы свои диапазоны номеров документов; сервер и другие кассы их не занимают.
  • Без дубликатов — повторная передача чека после обрыва связи не создаёт второй документ.
  • Полный учёт на сервере — каждый чек становится проведённым счётом-фактурой с тем же номером: бухгалтерия и касса закрываются автоматически, склад — если счета компании списывают склад (см. шаг 6).
  • Контроль — журнал сеансов связи, статус преобразования каждого чека, мгновенная блокировка потерянного терминала.

Предусловия

  1. Функция включена на сервере. Офлайн-обмен включается параметром окружения сервера OFFLINE_SYNC_ENABLED=1. Если ваша система размещена у поставщика (SaaS) — запросите включение у поддержки.
  2. Справочники заполнены: Товары, Контакты, Места хранения, Способ оплаты.
  3. Право доступа для регистрации терминалов. Однократная регистрация каждой кассы выполняется под учётной записью с правом изменения регистра «Офлайн-терминалы».

Шаг 1. Заведите терминал

Откройте Модули → Офлайн → Офлайн-терминалы и создайте запись:

Поле Что указать
Код терминала Уникальный код кассы, например SHOP3-KASSA1. Он же будет указан в настройке кассового приложения.
Описание «Касса магазин №3» — для удобства.
Статус 1 (активен).
Склад Склад торговой точки — с него будут списываться проданные товары. Обязательно: без склада чеки кассы не превращаются в счета-фактуры, даже если касса продаёт только услуги.

Во вкладке «Регистры синхронизации» настройте состав обмена. Типовая конфигурация POS-кассы:

Регистр Направление Смысл
Items ToClient Товары приходят на кассу.
Contacts ToClient Контакты приходят на кассу.
OfflineSales Full Чеки уходят на сервер, а обратно приходит результат их обработки: «Статус», «Номер сч.ф», «Ошибка конвертации». Касса получает только свои чеки и записывает результат в тот же чек, который создала; чеки других касс компании к ней не приходят. Направление ToServer тоже работает, но тогда результат обработки виден только на сервере.

Шаг 2. Выделите диапазоны номеров

Откройте Модули → Офлайн → Офлайн-серии номеров и создайте запись для терминала:

  • Код терминала — тот же, что в Шаге 1.
  • В матрице «Диапазоны номеров» добавьте строку: Регистр = OfflineSales, № С / № По — диапазон с запасом (например, 5001–5999), «Последний использованный» = 0.

Правила:

  • Диапазоны разных касс не должны пересекаться.
  • Когда диапазон заканчивается — добавьте новую строку с новым диапазоном (не расширяйте старую): касса подхватит его автоматически при очередной синхронизации.
  • Созданный из чека счёт-фактура наследует номер чека, поэтому диапазон резервируется и в нумерации счетов. Если для счетов-фактур не настроены серии номеров, онлайн-документы эти номера обходят автоматически. Если серии настроены, обхода нет: следите, чтобы их диапазоны не пересекались с диапазонами касс, иначе чек с уже занятым номером не превратится в счёт.

Шаг 3. Заполните настройки синхронизации

Откройте Модули → Офлайн → Настройки офлайн-синхронизации:

Поле Что указать
Клиент по умолчанию Код розничного покупателя из Контактов — подставляется в чеки, где покупатель не указан.
Условия оплаты по умолчанию Код условия типа «Наличные» из Условий оплаты — счёт закрывается оплатой сразу при создании.

Без «Клиента по умолчанию» и «Условий оплаты по умолчанию» чеки без покупателя не смогут преобразоваться в счета-фактуры. Адрес, интервал и таймаут в этой настройке касса сейчас не читает — адрес сервера и интервал обмена задаются в конфигурации кассового приложения (Шаг 4).

Шаг 4. Установите и зарегистрируйте кассовое приложение

Установку выполняет ИТ-специалист или поставщик системы.

  1. На кассовый компьютер устанавливается офлайн-клиент ERPJS (приложение со встроенной локальной базой).
  2. В конфигурации приложения указываются: адрес сервера, код терминала из Шага 1 и интервал синхронизации.
  3. Выполняется однократная регистрация кассы на сервере — под учётной записью с правом на «Офлайн-терминалы» (см. Предусловия). Пароль этой учётной записи на кассе не сохраняется: касса получает собственный долгосрочный ключ доступа, привязанный к коду терминала.
  4. При первом запуске касса автоматически выкачивает справочники и диапазоны номеров — можно работать.

Шаг 5. Работа кассира

  1. Кассир входит в приложение на кассе (локальная учётная запись — выдаётся при установке).
  2. Продажа оформляется в регистре Офлайн-продажи: новая запись, строки с товарами (код, количество, цена), способ оплаты, суммы «Получено наличных» / «Сдача». Номер чека и код терминала касса ставит сама при сохранении: номер — следующий из её диапазона, код — код этого терминала. Поле «Сер. номер» оставляйте пустым: набранный вручную номер касса не примет («Номер чека назначает касса»). Диапазон исчерпан или ещё не получен — сохранение откажет: выделите новый диапазон в «Офлайн-сериях номеров» на сервере и дождитесь синхронизации.
  3. Больше ничего делать не нужно: чек уйдёт на сервер при ближайшем сеансе связи.

Шаг 6. Что происходит на сервере

  • Принятые чеки появляются в Модули → Офлайн → Офлайн-продажи.
  • Каждый чек автоматически преобразуется в проведённый счёт-фактуру с тем же номером: бухгалтерские проводки, оплата POS-наличными и списание товара со склада кассы. Склад списывается по тому же правилу, что у любого счёта: только если в Настройке счетов-фактур включено «Списывать склад по сч/ф». Без этой галочки счёт проводится, а проданный товар остаётся на складе. Статус чека становится 1, в поле «Номер сч.ф» — номер созданного счёта.
  • Если преобразование не удалось — чек получает Статус 2 и текст причины в поле «Ошибка конвертации». Сам чек не теряется.

Контроль и разбор ошибок

Журнал связи

Модули → Офлайн → Журнал офлайн-синхронизации — кто, когда и что передавал; отклонённые записи; ошибки раундов. Пустые опросы (без данных) не журналируются. Последний сеанс кассы виден также в её карточке терминала («Дата/Время последней синхр.»).

Чеки с ошибкой (Статус = 2)

Отфильтруйте Офлайн-продажи по Статусу = 2 и посмотрите «Ошибку конвертации»:

Причина Решение
Неизвестный способ оплаты Заведите код в настройке «Способ оплаты» или исправьте настройку кассы.
Не определился покупатель Заполните «Клиент по умолчанию» (Шаг 3).
Нет условий оплаты Заполните «Условия оплаты по умолчанию» (Шаг 3) или условия оплаты в карточке покупателя.
У терминала нет склада Заполните «Склад» в карточке терминала (Шаг 1).
Не хватает товара на складе Оприходуйте товар на склад кассы. Услуг это не касается.

Автоматического повторного преобразования нет: после устранения причины администратор открывает чек и в меню окна нажимает «Сконвертировать снова» — сервер повторит обработку, и удачный чек получит Статус 1 с номером счёта (Офлайн-продажи).

Блокировка кассы

Касса потеряна или украдена → в карточке терминала установите Статус = 2 (заблокирован). Доступ к серверу отзывается мгновенно, при первой же попытке связи.


Ограничения текущей версии

  • Одна касса принадлежит одной компании (в многокомпанейской системе).
  • Поля «Фильтр» и «После синхронизации» в матрице терминала зарезервированы и пока не действуют.
  • Автоповтора преобразования чеков со Статусом 2 нет — разбор вручную.
  • Кассовое приложение устанавливает и настраивает ИТ-специалист (мастера установки пока нет).