У нас была судя по всему схожая задача.
Мы долго не могли подступиться к этой проблеме, пока продолжали ее формулировать тем же способом.
К решению приблизились переформулировав задачу как
Дано:
Торговая компания, товар продается со склада и под заказ, импорта нет. Поставки тоже не особо ритмичные и достаточно длительные (недели).
Логистическая схема упрощенно:
Код:
Московский склад -> Склад транзита -> Центральный склад -> Филиал1
-> Филиал2
-> Филиал3
Товар продается и со складов филиалов и с центрального склада. Компания старается гарантировать поставку клиенту.
В первоначальных постановках задачи у нас тоже присутствовали резервы по всей цепочке, все сложные механизмы управления этими резервами, и обработки всех возможных "отклонений".
Но в сущности это все не бизнес требования а уже детали реализации (одной из возможных), и в постановке задачи им делать нечего (ИМХО).
Конкретные требования от бизнеса у нас звучали иначе:
- Хочу знать достанется ли товар, который находится сейчас в транзите мне, или Васе.
- Хочу проинформировать клиента о предположительном сроке готовности заказа, и чтобы этот срок был реальным.
- Почему я, находясь в филиале, уже четвертый раз заказываю этот товар, а как только он поступает в Тюмень, какой нибудь ушлый менеджер продает его с центрального склада?
- А откуда я (ушлый менеджер) должен был знать, что этот лишенец в Сургуте два месяца эту железяку ждет?
- Доколе?
Этого рода проблемы мы в общем и целом решили, но под ваше определение задачи наше решение получается не подходит
Реализация в этой ветке офф-топ - но для демонстрации пойнта:
Мы реализовали некий механизм регистрации потребности по заказу в общей (в рамках компании) очереди.
Далее, при поступлении товара на какой либо из торгующих складов (в моей схеме Центральный склад и филиалы), информация из этого реестра используется для формирования в правильном порядке физических резервов в Заказах, для создания межскладских перемещений с центрального склада в филиал и резервирования товара в этих перемещениях и т.д.
Стандартный функционал резервирования в заказанных при этом отключен.
Как-то так.