Задача
Учёт вёлся в тетрадях. Из-за этого никто не мог быстро сказать, сколько товара осталось, какие партии скоро потеряют пригодность и что нужно заказать к ближайшей поставке. Закупка делалась по памяти закупщика, а её ошибки обнаруживались либо пустой полкой, либо списанием просрочки.
Осложняло всё то, что три магазина торгуют по-разному. Продукты зависят от сроков годности и сезонного спроса. Стройматериалы — от сезона и крупных нерегулярных продаж, когда один клиент забирает месячный объём. У автозапчастей длинный ассортимент, где половина позиций продаётся редко, но должна лежать на складе. Одна и та же логика пополнения для этих трёх случаев не работает, а три отдельные системы не дали бы руководителю общей картины.
Решение
Касса. Кассир входит под своим логином, открывает смену и находит товар по штрихкоду, артикулу или названию. Система считает сумму, скидки и способ оплаты, печатает чек и сразу уменьшает остаток нужного магазина. Поддержаны возвраты, отмены, корректировки и закрытие смены со сверкой кассового итога. Каждая операция сохраняет сотрудника, время, магазин и состав чека. Поэтому история продаж служит достоверным источником и для складского учёта, и для прогноза: сверять отдельные наборы цифр не нужно.
Партии и пригодность. Поступления учитываются партиями. Для продуктов фиксируются дата приёмки и срок годности, и при продаже и планировании применяется FEFO: первой уходит партия, которая раньше станет непригодной. Для стройматериалов и автозапчастей срок годности можно не применять, сохранив серийный, партионный или обычный количественный учёт. Система показывает остаток по магазину и складу, зарезервированный товар, ожидаемые поставки, расхождения инвентаризации, медленно оборачиваемые позиции и партии с приближающимся сроком списания.
Прогноз спроса. Прогноз строится отдельно для каждой пары «товар — магазин». В основе лежит модель временных рядов с экспоненциальным сглаживанием уровня, тренда и сезонности: она учитывает недавнюю скорость продаж, устойчивое изменение спроса и повторяющиеся сезонные колебания. Для новых и редко продаваемых позиций, где ряда нет, используется более простая оценка по средней скорости и похожей товарной категории.
Расчёт потребности. Закупщик выбирает горизонт — три дня, неделю, месяц. Система прогнозирует спрос на этот период с учётом времени до поставки и считает:
```text потребность = прогноз спроса + страховой запас − пригодный остаток − товар в ожидаемых поставках ```
В пригодный остаток не входят партии, срок годности которых истекает раньше расчётного горизонта, хотя физически они лежат на складе. Количество округляется до упаковки поставщика и проверяется по минимальной партии заказа.
Контроль остаётся у человека. Система не отправляет непрозрачный автоматический заказ. Закупщик видит тренд, историю продаж, остатки и объяснение расчёта, может изменить рекомендацию вручную и оставить комментарий. Рекомендации группируются по магазину, поставщику и дате следующей поставки; отдельно подсвечиваются дефицит, избыточный запас, риск списания и товары с аномальным изменением спроса. После утверждения формируется заявка, а после поступления фактические количества связываются с исходной заявкой. Так система видит отклонение поставки от плана и учитывает его в следующем цикле.
Аналитика. Отчёты показывают продажи и маржинальность по магазинам и категориям, оборачиваемость, дни запаса, дефицит, списания, приближающиеся сроки годности и точность предыдущих прогнозов. Руководитель сравнивает три направления бизнеса, а закупщик быстро находит позиции, требующие решения до планового заказа.
Серверная часть построена на ASP.NET.
Результат
«Монолит» перешёл от тетрадей к сквозному цифровому учёту продаж, партий и остатков. Кассиры проводят товары в системе, склады обновляются автоматически, а закупщик получает готовую потребность на выбранный период вместе с обоснованием, которое можно оспорить.
Одна платформа обслуживает три разных ассортимента и три набора правил хранения, но даёт руководителю общий отчёт. Прогноз связан с учётом: продажа в тот же момент меняет остаток и следующий расчёт закупки. За счёт этого одновременно снизился риск дефицита, избыточных закупок и списаний просроченных партий.