Т.е. в корзину мы товары кинуть можем, а нажать оформить заказ не можем, т.к. товары на разных складах?
А зачем тогда мультисклад?
Соответственно если заказ позволено оформить, значит заказчик в состоянии сделать перемещение и отгрузить.
Как по мне, так если ты работаешь с мультискладом, то ты обязан сделать перемещение и отгрузить. Другой вопрос, что корректные сроки с учётом перемещений должны отдаваться в фиды данных (YML, XML) и в корзину.
Т.е. тут нужно, скорее, принимать за основу, что есть основной склад, с которого осуществляется доставка и самовывоз по всем точкам.
На странице товара выводим информацию по наличии конкретно на данной точке, справочно. Т.е. для тех, кто покупает в розницу, либо штучный товар. (опционально)
А в корзину уже отдаём информацию по доставке и самовывозу с максимальной датой (задержкой) доставки, учитывая задержки в рабочих днях для каждого склада, режим работы складов и магазина, времени суток, приоритет склада.
Если упрощённо, то
Основной = 0 дней самовывоз, доставка = 1 день. Приоритет 1000
Склад павелецкая = задержка самовывоза + 1 день, задержка доставки +1 день. Приоритет 800
Склад таганская = задержка самовывоза +2 дня, задержка доставки + 2 дня Приоритет 900 (допустим, таганка ближе к основному складу и мы экономим на логистике, поэтому, не смотря на сроки (другие факторы), у него приоритет выше)
Таким образом, если все товары есть на основном, доставка на следующий рабочий день
Если хотя бы одного товара нет на основном, но есть на таганской, то доставка 1+2 рабочих дня
Если хотя бы одного товара нет на основном, и с таганской не собирается полный состав, но есть на павелецкой, то 1+1 день на доставку.
В фид же уходит информация также, согласно:
время суток
Режим работы основного склада, который отгружает
Режим работы каждого отдельного склада.
Далее заказ идёт мойсклад. (1С)
В моём складе заказ привязыватся только к одному складу, что вполне логично, ведь отгружаем мы заказ с одного, а перемещения делаем с остальных.
Заказ выгрузился на основной склад, мы понимаем, что на основном складе нам не хватает количества, делаются заказы поставщикам по их складам, либо оформляется внутреннее перемещение.
Т.к. заказ встаёт в резерв, при очередном обновлении, остатки на сайте изменятся.
Прошу примерно так сформировать необходимые задачи и алгоритмы их решения.