Клиент - производственная компания с собственным цехом и складом. Учёт вёлся в разрозненных таблицах: заказы у менеджеров, остатки материалов у кладовщика, загрузка оборудования у начальника производства, расчёты у бухгалтера. Данные между отделами передавались вручную и с задержкой.
Из-за этого возникали типовые для такой схемы проблемы. Менеджер называл клиенту срок, не зная реальной загрузки цеха. Заказ запускался в работу, а нужного материала на складе не оказывалось. Себестоимость считалась постфактум и приблизительно, поэтому по части заказов маржа выяснялась только в конце месяца.
Цель ставилась так: свести все процессы в одну систему, где заказ проходит путь от заявки до отгрузки внутри одной базы, а руководитель в любой момент видит текущее состояние по деньгам, складу и производству без запросов к сотрудникам.
Требования, которые задавались отдельно:
Разграничение доступа по ролям. Менеджер, кладовщик, мастер цеха, бухгалтер и руководитель должны видеть только свою часть и не иметь возможности править чужие данные.
Автоматический расчёт потребности в материалах при запуске заказа в производство, с проверкой остатков и резервированием.
Планирование загрузки оборудования, чтобы срок для клиента назывался не на глаз, а исходя из реальной очереди.
Расчёт себестоимости по каждому заказу с учётом материалов, работ и накладных расходов.
Отчётность для руководителя: обороты, маржинальность по заказам и клиентам, движение по складу, загрузка цеха за период.
Работа в браузере с рабочих мест в офисе и в цехе, без установки программ на каждый компьютер
Начал с описания процессов вместе с сотрудниками каждого отдела, а не с интерфейсов. Прошёл путь заказа от звонка клиента до отгрузки, зафиксировал, где данные создаются, кто их меняет и в какой момент они нужны смежникам. По этой карте спроектировал структуру базы.
Ядром сделал сквозной документооборот: заявка превращается в заказ, заказ порождает производственное задание, задание списывает материалы со склада и фиксирует выполненные операции, на выходе формируется отгрузка и расчёт себестоимости. Все документы связаны между собой, поэтому по любому заказу поднимается вся цепочка с датами и ответственными.
Складской учёт построил на партионном движении: приход, резерв, списание и возврат пишутся отдельными записями, остаток вычисляется из них, а не хранится перезаписываемым числом. Это исключает расхождения и даёт историю по каждой позиции.
Планирование производства собрал как очередь заданий по рабочим центрам с учётом их загрузки и нормативного времени операций. Менеджер при оформлении заказа видит расчётную дату готовности, а мастер цеха управляет очередью и отмечает выполнение операций с планшета прямо в цехе.
Себестоимость считается автоматически при закрытии заказа: списанные материалы по фактическим партиям, трудозатраты по отмеченным операциям, накладные по заданному правилу распределения.
Роли и права вынес в отдельный слой с настройкой из админки, чтобы новые должности добавлялись без правок кода. Каждое изменение ключевых документов пишется в журнал с указанием пользователя и времени.
Отчёты сделал на предрасчитанных выборках, тяжёлые сводки кешируются и обновляются по расписанию, поэтому дашборд руководителя открывается мгновенно даже при большой истории.
Интерфейс развёл под задачи: у менеджера воронка заказов, у кладовщика приход и отгрузка с поиском по номенклатуре, у мастера доска заданий, у руководителя сводные показатели. Общего перегруженного меню на всех нет.
Внедрял поэтапно с приёмкой каждого блока: сначала справочники и заказы, затем склад, следом производство, после этого финансы и отчётность. Перед запуском перенёс действующие остатки и справочники из таблиц, прогнал сквозные сценарии на реальных данных и обучил сотрудников на их же рабочих местах. Систему развернул на сервере клиента с резервным копированием базы по расписанию и мониторингом
Компания перешла с разрозненных таблиц на единую систему, в которой работают все отделы. Заказ проходит от заявки до отгрузки внутри одной базы, и данные больше не переносятся между сотрудниками вручную.
Сроки клиентам называются по расчёту, а не на глаз. Менеджер при оформлении видит реальную загрузку цеха и дату готовности, поэтому обещания перестали расходиться с фактическими возможностями производства.
Нехватка материалов вскрывается до запуска заказа. Потребность считается автоматически, остатки проверяются и резервируются, поэтому ситуации, когда задание встаёт из-за отсутствия сырья, ушли.
Себестоимость по каждому заказу известна сразу после закрытия. Руководитель видит маржинальность по заказам и клиентам и принимает решения по ценам, не дожидаясь итогов месяца.
Складской учёт стал прослеживаемым. По любой позиции поднимается вся история движения, инвентаризации перестали расходиться с учётными данными.
Руководитель работает с системой напрямую. Обороты, загрузка цеха, движение по складу и текущие заказы открываются в сводке за любой период, запрашивать отчёты у сотрудников больше не нужно.
Система используется как основной рабочий инструмент компании и развивается дальше по тому же ядру: подключение обмена с бухгалтерской программой, кабинет для клиентов с отслеживанием статуса заказа, штрихкодирование на складе. Структура закладывалась с расчётом на такое расширение, поэтому новые блоки добавляются без переделки существующих