Я делал складской контур на Laravel: номенклатура, резерв под заказ, отгрузка, возврат, сверка с продажами. Менеджер не должен продать то, что уже зарезервировано.
Я написал движения остатка как проводки, не «поле qty--». Резерв, списание, возврат идут через один доменный сервис и блокировку строки. Ночной Job сверяет сумму проводок с витриной и пишет расхождения.
Я собрал импорт прайса (CSV/Excel) в очередь, валидацию SKU, отчёт ошибок по строкам. Роли: кладовщик видит отгрузки, закупки — приходы, продажи — только резерв своего заказа.
Стек: Laravel, PostgreSQL, Horizon, Excel-импорт, Docker. NDA: юрлицо не публикуется.