Офлайн-каса — продажі без інтернету
Що це
Офлайн-каса — автономне робоче місце ERPJS: застосунок на касовому комп'ютері з власною локальною базою даних. Каса продає навіть за повної відсутності інтернету, а з появою зв'язку автоматично синхронізується з сервером: отримує оновлення довідників (товари, контакти) та передає чеки. Кожен переданий чек сервер одразу перетворює на повноцінний проведений Рахунок-фактуру — зі списанням складу, проводками та оплатою.
Можливості
- Продаж без зв'язку — чеки оформлюються локально, інтернет не потрібен.
- Автоматична синхронізація — термінал сам виходить на зв'язок за розкладом (зазвичай раз на 20–60 секунд); вручну нічого передавати не треба.
- Без конфліктів номерів — у кожної каси свої діапазони номерів документів; сервер та інші каси їх не займають.
- Без дублікатів — повторна передача чека після обриву зв'язку не створює другого документа.
- Повний облік на сервері — кожен чек стає проведеним рахунком-фактурою з тим самим номером: бухгалтерія та каса закриваються автоматично, склад — якщо рахунки компанії списують склад (див. крок 6).
- Контроль — журнал сеансів зв'язку, статус перетворення кожного чека, миттєве блокування загубленого терміналу.
Передумови
- Функція увімкнена на сервері. Офлайн-обмін вмикається параметром оточення сервера
OFFLINE_SYNC_ENABLED=1. Якщо ваша система розміщена в постачальника (SaaS) — запросіть увімкнення в підтримки. - Довідники заповнені: Товари, Контакти, Місця зберігання, Спосіб оплати.
- Право доступу для реєстрації терміналів. Одноразова реєстрація кожної каси виконується під обліковим записом з правом зміни реєстру «Офлайн-термінали».
Крок 1. Заведіть термінал
Відкрийте Модулі → Офлайн → Офлайн-термінали та створіть запис:
| Поле | Що вказати |
|---|---|
| Код терміналу | Унікальний код каси, наприклад SHOP3-KASSA1. Він же буде вказаний у налаштуванні касового застосунку. |
| Опис | «Каса магазин №3» — для зручності. |
| Статус | 1 (активний). |
| Склад | Склад торгової точки — з нього списуватимуться продані товари. Обов'язково: без складу чеки каси не перетворюються на рахунки-фактури, навіть якщо каса продає лише послуги. |
У вкладці «Регістри синхронізації» налаштуйте склад обміну. Типова конфігурація POS-каси:
| Реєстр | Напрям | Сенс |
|---|---|---|
Items |
ToClient | Товари приходять на касу. |
Contacts |
ToClient | Контакти приходять на касу. |
OfflineSales |
Full | Чеки йдуть на сервер, а назад приходить результат їх обробки: «Статус», «Номер р/ф», «Помилка конвертації». Каса отримує лише свої чеки й записує результат у той самий чек, який створила; чеки інших кас компанії до неї не приходять. Напрям ToServer теж працює, але тоді результат обробки видно лише на сервері. |
Крок 2. Виділіть діапазони номерів
Відкрийте Модулі → Офлайн → Офлайн-серії номерів та створіть запис для терміналу:
- Код терміналу — той самий, що в Кроці 1.
- У матриці «Діапазони номерів» додайте рядок: Регістр =
OfflineSales, № З / № По — діапазон із запасом (наприклад, 5001–5999), «Останній використаний» = 0.
Правила:
- Діапазони різних кас не повинні перетинатися.
- Коли діапазон закінчується — додайте новий рядок з новим діапазоном (не розширюйте старий): каса підхопить його автоматично при черговій синхронізації.
- Створений із чека рахунок-фактура успадковує номер чека, тому діапазон резервується й у нумерації рахунків. Якщо для рахунків-фактур не налаштовано серії номерів, онлайн-документи ці номери обходять автоматично. Якщо серії налаштовано, обходу немає: стежте, щоб їхні діапазони не перетиналися з діапазонами кас, інакше чек із уже зайнятим номером не перетвориться на рахунок.
Крок 3. Заповніть налаштування синхронізації
Відкрийте Модулі → Офлайн → Налаштування офлайн-синхронізації:
| Поле | Що вказати |
|---|---|
| Клієнт за замовчуванням | Код роздрібного покупця з Контактів — підставляється в чеки, де покупця не вказано. |
| Умови сплати за замовчуванням | Код умови типу «Готівка» з Умов сплати — рахунок закривається оплатою одразу при створенні. |
Без «Клієнта за замовчуванням» та «Умов сплати за замовчуванням» чеки без покупця не зможуть перетворитися на рахунки-фактури. Адресу, інтервал і таймаут у цьому налаштуванні каса зараз не читає — адресу сервера й інтервал обміну задають у конфігурації касового застосунку (Крок 4).
Крок 4. Встановіть та зареєструйте касовий застосунок
Встановлення виконує ІТ-фахівець або постачальник системи.
- На касовий комп'ютер встановлюється офлайн-клієнт ERPJS (застосунок із вбудованою локальною базою).
- У конфігурації застосунку вказуються: адреса сервера, код терміналу з Кроку 1 та інтервал синхронізації.
- Виконується одноразова реєстрація каси на сервері — під обліковим записом з правом на «Офлайн-термінали» (див. Передумови). Пароль цього облікового запису на касі не зберігається: каса отримує власний довгостроковий ключ доступу, прив'язаний до коду терміналу.
- При першому запуску каса автоматично викачує довідники та діапазони номерів — можна працювати.
Крок 5. Робота касира
- Касир входить у застосунок на касі (локальний обліковий запис — видається при встановленні).
- Продаж оформлюється в реєстрі Офлайн-продажі: новий запис, рядки з товарами (код, кількість, ціна), спосіб оплати, суми «Отримано готівки» / «Решта». Номер чека й код термінала каса ставить сама при збереженні: номер — наступний із її діапазону, код — код цього термінала. Поле «Сер. номер» лишайте порожнім: набраний вручну номер каса не прийме («Номер чека призначає каса»). Діапазон вичерпано або ще не отримано — збереження відмовить: виділіть новий діапазон в «Офлайн-серіях номерів» на сервері й дочекайтесь синхронізації.
- Більше нічого робити не треба: чек піде на сервер при найближчому сеансі зв'язку.
Крок 6. Що відбувається на сервері
- Прийняті чеки з'являються в Модулі → Офлайн → Офлайн-продажі.
- Кожен чек автоматично перетворюється на проведений рахунок-фактуру з тим самим номером: бухгалтерські проводки, оплата POS-готівкою і списання товару зі складу каси. Склад списується за тим самим правилом, що й у будь-якого рахунку: лише якщо в Налаштуванні рахунку-фактури увімкнено «Списувати склад по рах/ф». Без цієї галочки рахунок проводиться, а проданий товар лишається на складі. Статус чека стає 1, у полі «Номер р/ф» — номер створеного рахунку.
- Якщо перетворення не вдалося — чек отримує Статус 2 і текст причини в полі «Помилка конвертації». Сам чек не втрачається.
Контроль та розбір помилок
Журнал зв'язку
Модулі → Офлайн → Журнал офлайн-синхронізації — хто, коли й що передавав; відхилені записи; помилки раундів. Порожні опитування (без даних) не журналюються. Останній сеанс каси видно також у її картці терміналу («Дата/Час останньої синхр.»).
Чеки з помилкою (Статус = 2)
Відфільтруйте Офлайн-продажі за Статусом = 2 і подивіться «Помилку конвертації»:
| Причина | Рішення |
|---|---|
| Невідомий спосіб оплати | Заведіть код у налаштуванні «Спосіб оплати» або виправте налаштування каси. |
| Не визначився покупець | Заповніть «Клієнт за замовчуванням» (Крок 3). |
| Немає умов сплати | Заповніть «Умови сплати за замовчуванням» (Крок 3) або умови сплати в картці покупця. |
| У терміналу немає складу | Заповніть «Склад» у картці терміналу (Крок 1). |
| Не вистачає товару на складі | Оприбуткуйте товар на склад каси. Послуг це не стосується. |
Автоматичного повторного перетворення немає: після усунення причини адміністратор відкриває чек і в меню вікна натискає «Сконвертувати знову» — сервер повторить обробку, і вдалий чек отримає Статус 1 з номером рахунку (Офлайн-продажі).
Блокування каси
Касу загублено або вкрадено → у картці терміналу встановіть Статус = 2 (заблокований). Доступ до сервера відкликається миттєво, при першій же спробі зв'язку.
Обмеження поточної версії
- Одна каса належить одній компанії (у багатокомпанійній системі).
- Поля «Фільтр» та «Після синхронізації» в матриці терміналу зарезервовані й поки не діють.
- Автоповтору перетворення чеків зі Статусом 2 немає — розбір вручну.
- Касовий застосунок встановлює та налаштовує ІТ-фахівець (майстра встановлення поки немає).