Проведення чеків та оновлення даних на касі Shopdesk в реальному часі
Обробка чеків в реальному часі є вкрай важливою вимогою для сучасної облікової системи. Завдяки цьому функціоналу обліковець точно знає, скільки товару в нього зараз в магазині, він може точно сформувати замовлення постачальнику, він відстежує по яких цінах продається товар (якщо працює програма лояльності і надаються знижки), якщо це кулінарія чи кафе, то ми чітко бачимо витрати інгредієнтів і вчасно можемо поповнювати кухню.
Але ще більш цікавою можливістю виявляється оновлення залишків та цін в реальному часі на касах.
Ключові тези
- Shopdesk працює автономно (офлайн) на касі, щоб продажі не зупинялись у разі збоїв Інтернету або центрального сервера.
- Чеки відправляються на касовий сервер одразу, а Trade Control Utility отримує їх майже миттєво та проводить за 2–3 секунди.
- Оновлені ціни та залишки після проведення чека/переоцінки розсилаються на всі каси магазину практично без затримок.
- Результат: переваги онлайн (актуальні дані) + надійність офлайн (безперервна торгівля).
Нижче пояснюємо, як саме це працює: офлайн-режим, обмін чеками, розсилка оновлень.
Онлайн та офлайн
Є два підходи до побудови касового робочого місця: онлайн та офлайн (автономний режим).
Робота онлайн
Каса напряму підключена до центрального сервера, в процесі роботи постійно взаємодіє з центральним сервером через мережу. В процесі набору чека запитує та отримує дані по товарах, під час проведення чека зберігає його на центральному сервері.
Автономна робота каси (офлайн-режим)
В такому режимі каса не працює напряму з центральною базою даних. Вона працює з власною копією (реплікою) центральної бази, яка вміщує лише ті дані, які важливі для каси. Періодично каса завантажує оновлення даних з центральної бази, що дає можливість підтримувати репліку в актуальному стані (товари, ціни та залишки), та відправляти проведені чеки до центрального сервера.
Недоліки та переваги
Здавалось би, можна підключити касу напряму до центральної бази даних. Каса буде працювати з актуальними даними в онлайн-режимі, не буде цих зайвих операцій з реплікацією, все значно спроститься. Але уявімо собі, що раптом на середині набору чека урвався зв'язок. Прибиральниця кабель зачепила, випадково вимкнули роутер, чи зник Інтернет. Каса завмирає, касир нічого не може вдіяти, продаж товару (все заради чого працює цілий магазин) зірвалась. Тому забезпечення автономної роботи каси є нагальною потребою.
Автономний режим також має свої недоліки. Дані можуть втрачати актуальність в період між сеансами зв'язку. Наприклад, каса отримує оновлення цін раз на 4 години. А на центральному офісі в обліковій системі зробили переоцінку. Каса про це дізнається лише згодом, коли відбудеться сеанс зв'язку і оновляться дані. Те саме і з накопиченими чеками. Вони будуть зберігатись на касі, і не потраплять на центральний сервер тривалий час. І це не зовсім добре.
І все ж таки, саме автономний режим каси став стандартом, бо лише він гарантує виконання самої важливої задачі - здійснення продажу товару за будь яких умов.
Базовий та розширений функціонал каси
Щоб забезпечити для каси максимальну живучість, потрібно розділити функціонал на базовий, який в будь якому разі забезпечить продаж товару, і додатковий, який є бажаним, але не є необхідним.
Наприклад, не працює центральний сервер. Не можемо провести сеанс зв'язку з центральним сервером, отримати оновлення довідників та залишків, і не можемо відправити накопичені чеки. Ок, коли сервер стане доступним, відбудеться обмін даними. Обмін даними відбувається в фоновому режимі окремим процесом, касир цього ніяк не відчує. Тобто ми втратили додатковий функціонал обміну даними, але основний функціонал - продаж товару, зберегли.
Якщо взагалі зникає Інтернет-з'єднання, не буде працювати банківський термінал, але за готівку ми зможемо торгувати. Не працює програма лояльності, клієнтам не нараховуються бонуси, але купити товар вони все одно можуть. Тобто ми і зараз не втратили базовий функціонал, торгівля триває.
Універсальний режим роботи каси Shopdesk
Чи можливо вирішити проблему затримок оновлення інформації між сеансами зв'язку з центральним сервером? Зазвичай, саме каса є ініціатором з'єднання з сервером та обміну даними. Сервер в класичній архітектурі не є ініціатором обміну і нічого не знає про стан конкретної каси. Але ми маємо сучасний протокол WebSocket (стандартний протокол для постійного двостороннього каналу), коли між сервером та касою створюється постійний допоміжний канал обміну даними. Якщо дані на сервері оновились, сервер завжди може відправити на потрібну касу оновлення практично без затримок.
Оновлення цін на касах
Коли облікова система Trade Control Utility проводить якийсь документ, наприклад, переоцінку, вона відправляє товарні залишки з оновленими цінами на касовий сервер, а касовий сервер роздає це оновлення на каси торгової точки, де відбулась переоцінка. Таким чином, ми отримуємо миттєве оновлення цін на всіх касах магазину.
Оновлення товарних залишків на касах.
Коли каса проводить чек, відправка чека на касовий сервер відбувається одразу. Облікова система Trade Control Utility підписана на подію отримання касового чека касовим сервером, і миттєво отримує цей чек. Проводить його приблизно за 2–3 секунди, на магазині змінюються залишки товарів з чека. Після цього Trade Control Utility відправляє оновлені товарні залишки на касовий сервер, а касовий сервер роздає їх по касам магазину так само, як і оновлені ціни. Тобто чек провела одна каса, а залишки паралельно оновлюються на всіх касах цього магазину. Те саме стосується і приходів товарів, і списань, і переобліків.
Переваги без недоліків
Фактично, ми отримуємо всі переваги онлайн-режиму, не втрачаючи переваг режиму офлайн.
Trade Control Utility: Обробка чеків в реальному часі
Trade Control Utility підписана на події касового сервера, і коли на касовий сервер Shopserver надходить чек, Trade Control Utility одразу цей чек отримує і бере в роботу. Часто буває так, що в чергу одночасно потрапляє багато чеків з різних кас, в цьому випадку Trade Control Utility проводить їх одночасно в паралельному режимі. Що значно прискорює процес проведення.
Зверніть увагу на інформаційні повідомлення типу "5 changed inventory records was published into message queue". Це означає, що після проведення чека були змінені залишки для 5 товарів, і ці змінені залишки були відправлені до касового сервера. Касовий сервер відправить ці дані назад на каси цього магазину. Всі каси отримають оновлені залишки.
Підсумок
Архітектура Shopdesk у поєднанні з касовим сервером і Trade Control Utility дає касі “живучість” офлайн-режиму та одночасно забезпечує майже миттєве оновлення даних у магазині.
- Продажі не зупиняються навіть при проблемах із мережею (каса працює з локальною реплікою).
- Чеки синхронізуються одразу, а в пікові моменти можуть проводитись паралельно.
- Ціни та залишки оновлюються в реальному часі на всіх касах торгової точки.
- Це зменшує розбіжності в даних і дає точні залишки/ціни для продажів, замовлень і виробництва.
Якщо вам важливо, щоб каса працювала офлайн, але при цьому ціни й залишки оновлювались без затримок — цей підхід закриває обидві задачі одночасно.
Andriy Kravchenko
Admin, Writer, File Uploader
Останнє оновлення:
1/16/2026 2:53:03 AM
111