Поставлена задача: вести управление складскими запасами магазина на собственной платформе.
Сейчас склад выглядит как таблица, каждый столбец которой вычитает значение для списания товара и прибавляет значение артикула для пополнения.
Мрак полнейший, никуда не годится.
Минимзирую работу до атомарных единиц:
Для начала создал БД.
Вначале таблица склада (коллекция в моём случае) с основными полями:
[ {артикул товара, число товара на складе} ].
Далее таблица с заказами, содержащими товар к списанию:
[ {артикул товара, число товара к списанию} ].
Ещё есть поставки и возвраты – это действия обратные для заказа, но суть та же:
[ {артикул товара, число товара к пополнению} ].
Всё остальное в данных условиях не играет роли.Знатоки, внимание, вопрос:
Укажите, пожалуйста, как правильно организовать подсчёт текущего количества товарных позиций на складе, если:
- нельзя вычитать и прибавлять напрямую значения при создании нового заказа или поставки, т.к. нельзя выполнять необратимые операции. (Или без вариантов надо делать транзакции?)
- при каждом обращении рассчитывать предыдущее состояние склада, вычитать из него 3-4 тысячи заказов и прибавлять 3-4 сотни поставок – не решение
- необходимо будет добавить подгруппы числа товара на складе «в резерве» «брак» и прочие
- при поступлении нового заказа должна происходить проверка на наличие позиций склада, а так же резервирование продукции из наличия на этот заказ.
На данный момент мне уже известно, что данный класс задач относится к подсистемам WMS (Warehouse Management System), но я нигде не могу найти информации о том, как устроены эти системы, поэтому буду рад даже не столько готовым ответам, сколько информации об источниках по методологии, проектированию и внедрению, касающихся моей проблемы.
Язык, СУБД, и прочие технические аспекты не имеют решительно никакого значения, так как вопрос в данной плоскости сугубо теоретический.