У мережі фірмових магазинів щодня після закриття рахунку починаються суперечки: суми в касі не збігаються зі списанням запасів, транзакції по переміщенню товару в дорозі вважаються як відсутність товару, а акційні подарунки знижують валовий прибуток. У окремому магазині система обліку продажів, запасів і постачання ще може триматися, але коли у багатьох магазинах відбувається переміщення товару, таблиці одразу стають неправильними. Менеджер магазину повідомляє про стан запасів за власним відчуттям, а головний офіс бачить лише таблицю зі затримкою на один день.

Проблема бізнесу: для щоденного закриття потрібна «одна й та ж сама правда»
У мережі фірмових магазинів необхідно узгодити щонайменше чотири речі: основні дані про товари, облік запасів, історію продажів та переміщення товару. Щоденне закриття — це не просто експорт у Excel, а формування аудиторського знімка, який включає продажі, повернення, переміщення товару, а також розбіжності під час інвентаризації, щоб завершити рахунки за день.
- Продажі на касі: видача товару з POS-терміналу відбувається одразу зі списанням запасів
- Переміщення товару: після відправлення магазин блокується, а товар доступний до використання лише після його приймання та реєстрації у складі магазину
- Інвентаризація: проводиться по поличках/категоріям, розбіжності фіксуються з кодами причин
- Щоденне закриття: підбиття підсумків у касі + закриття обліку запасів, а розбіжності вивчаються вже наступного ранку
Основні моменти проектування: права користувачів у багатьох магазинах та стан товару в дорозі
Головний офіс контролює основні дані та цінову політику; регіональні менеджери мають доступ до своїх районів; менеджери магазинів займаються лише прийманням, відправкою та інвентаризацією свого магазину. Заборонено співробітникам змінювати собівартість товару. У документах на переміщення обов’язково має бути вказано стан товару в дорозі, інакше товар буде списаний у відправляючому магазині, але не зарахований у приймаючому, що призведе до помилки у загальній кількості товару, доступного для продажу.
- Основні дані SKU: штрих-код, специфікація, одиниця обрахунку, чи вагається товар
- Складські запаси магазину: на складі, у дорозі, заблоковані (не закриті продажі)
- Історія продажів через POS: номер замовлення, спосіб оплати, розподіл акційних знижок
- Партія щоденного закриття: дата, магазин, оператор, зведені розбіжності

Розробка та приймання
Послуги POS та обліку запасів мають бути практично миттєвими; у разі відключення мережі — локальна черга, після відновлення — повторне відтворення з урахуванням принципу ідемпотентності, щоб уникнути подвійного списання. Акційний двигун спочатку розраховує розподіл, а потім записує продажі, інакше звіти про валовий прибуток завжди будуть неузгоджені. Приймання проводиться на основі реальних «брудних» даних:
- Чи правильно врахована кількість товару, доступного для продажу у двох магазинах, коли товар пересилається між ними, але ще не прийнятий?
- Чи заборонено змінювати історію продажів того дня після закриття рахунків (наприклад, скасовувати продажі, щоб виправити помилку)?
- Чи правильно враховується кількість товару, який важиться, разом з товаром, що вимірюється за штуками?
- Чи може акція «купуйте стільки-то, отримуйте стільки-то в подарунок» призвести до виникнення негативних запасів, що блокують продажі?
У системі мережі фірмових магазинів спочатку треба добитися того, щоб «рахунки збігалися», а потім уже говорити про інтелектуальне поповнення запасів. Якщо розбіжності під час щоденного закриття не зменшуються, алгоритми поповнення запасів лише посилюють помилки.
Темпи впровадження
Спочатку узгоджуються штрих-коди та ціни, потім — стан товару в дорозі, і нарешті — обов’язкове закриття рахунків після щоденного закриття. Вибираються 2–3 пілотні магазини, де протестують протягом двох тижнів, звертаючи увагу на топ-5 причин розбіжностей (помилкове сканування, невідправлені замовлення, самовільне переміщення запасів). Лише після стабілізації система запускається по всій мережі.
Акції та вага: два найбільш проблемні моменти, які легко призводять до збоїв під час щоденного закриття
Знижки за покупку, подарунки за покупку, знижки на N‑ту одиницю товару розбивають історію продажів на кілька частин, розподілені між різними акціями. Якщо запаси списуються за «строками продажів», а фінанси розраховують за «сумами після розподілу», то збігів між ними немає — це нормально. Правильний підхід: запаси враховують лише фактично відправлені товари; фінанси — суми після розподілу; а щоденний звіт включає одночасно два списки: розбіжності за кількістю та розбіжності за сумою.
Для товарів, що важаться, необхідно фіксувати вагу без упаковки та джерело ціни. Коли штрих-кодова вага друкує тимчасовий код, система має визначати цей тимчасовий код і повертатися до базового PLU. Інакше під час інвентаризації завжди будуть «привиди запасів».
Ритм співпраці між головним офісом та магазинами
Головний офіс щотижня оприлюднює список змін цін та обов’язкових товарів для продажу; магазини перед щоденним закриттям повинні завершити підтвердження приймання товару, що був переміщений. Система попереджає про «переміщення товару, який не прийнятий понад N годин», щоб уникнути довгострокового списання товару в дорозі. Нові товари вводяться за допомогою спеціального завдання, а не масовою розсилкою фотографій — кожен магазин повинен підтвердити кількість товару, який виставлено на полиці, щоб запаси були достовірними.
Політика відключення мережі має бути включена до посібника з технічного обслуговування: максимальний обсяг локального кешу POS, конфлікт при відновленні — чи орієнтуватися на сервер, чи на магазин. Без чіткої стратегії, під час пікового навантаження при відключенні мережі запаси списуються удвічі більше.
Політика інвентаризації та запобігання втратам
Циклічна інвентаризація за класифікацією ABC: високовартісні товари перевіряються часто, низьковартісні — вибірково. Завдання на інвентаризацію надсилається до мобільного додатка магазину; без виконання — неможливо закрити рахунки. Коди причин розбіжностей мають бути достатньо деталізованими (неприйняття товару, помилкове сканування в касі, підозра на внутрішнє крадіжку, системні помилки), щоб можна було проводити навчання або перевірки.
У питаннях запобігання втратам, для товарів з високим ризиком втрати вводиться попередження про відхилення від норми продажів та запасів; незвичайні знижки та скасування цілих замовлень потребують авторизаційного коду керівника. Система, що залишає сліди, легше контролювати, ніж встановлення кількох камер.
У моделі франчайзингу також треба вирішувати питання прав на товар: власні запаси франчайзі та запаси, розміщені головним офісом, мають бути розділені. Щоденний звіт розбивається за правами на товар, щоб розрахунки не викликали суперечок. Під час налаштування правила розрахунків слід прописати у конфігурації, а не закладати в код.
Порядок збалансування бонусів для учасників програми лояльності та поповнення рахунків: повернення платежів має супроводжуватися відкотом запасів та бонусів, інакше права учасників та реальні товари будуть у хаосі. Повторне тестування має охоплювати весь процес повернення товару.
Поповнення запасів та замовлення товару
Замовлення товару магазином має базуватися на даних про продажі за останні 7/14/28 днів, стані товару в дорозі та рівні безпечних запасів, але остаточно підтверджується менеджером магазину. Система дає рекомендовану кількість, але не автоматично призначає, щоб уникнути бездумного розповсюдження запасів головним офісом. Дозвіл на замовлення може залежати від суми або категорії товару; товари з високою оборотністю — вільні, а товари високої вартості — під суворим контролем.
Товар доступний для продажу лише після сканування приймання; зона очікування має окремий статус. Для свіжих продуктів або товарів із коротким терміном придатності можна налаштувати автоматичне зниження ціни напередодні закінчення терміну придатності, але процедура зниження має залишати сліди.
У випадку прямої доставки товару від постачальника до магазину (обходячи центральний склад), товар все одно потрапляє до складу магазину, а розрахунки з постачальником відбуваються в головному офісі. Процедура має бути чітко прописана, щоб фінанси не вважали пряму доставку «відсутністю закупівлі».
Відкриття та закриття магазину
При відкритті нового магазину використовується список завдань для підготовки: синхронізація основних даних, первинна інвентаризація, реєстрація POS-терміналу, тренування щоденного закриття. При закритті — перенос запасів та прибирання незакритих рахунків, щоб після закриття не залишались «привиди продажів». Ці процедури можуть використовуватися лише кілька разів на рік, але вартість помилок висока, тому варто оформити їх у формі покрокових інструкцій.
На практиці рекомендується провести двотижневе пілотне тестування основних процедур, а потім розширити масштаб; список пілотних магазинів, перелік проблем та умови відкоту мають бути включеними до листа зі стартовим запуском, щоб уникнути усної передачі інформації. Приймання проводиться за бізнес-показниками, а не за принципом «все вже натиснуто на екрані».
Облік продажів, запасів та щоденного закриття у роздрібній мережі — типовий випадок індивідуального програмного забезпечення: процеси схожі, але деталі сильно відрізняються залежно від виду діяльності. Shandong XYN Information Technology Co., Ltd. (XYN Tech) займається індивідуальною розробкою для виробничої, роздрібної та зовнішньоекономічної сфери; офіційний сайт https://www.xynkeji.com; компетенції з управління бізнесом та координації ланцюга постачання також можна знайти на сайті https://www.xynadmin.com.