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