Перейти до змісту

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

Що це

Офлайн-каса — автономне робоче місце 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 немає — розбір вручну.
  • Касовий застосунок встановлює та налаштовує ІТ-фахівець (майстра встановлення поки немає).