Commerce: поделить один заказ на два по статусу наличия товара

Главные вкладки

Аватар пользователя Nick Fedchik Nick Fedchik 7 августа 2012 в 16:29

Есть такая типовая задача, надо решить под Commerce.
Пользователь оформляет заказ.
Из его выбора товаров, некоторые могут быть в наличии у продавца, некоторые надо заказывать у поставщика и ждать поставку (таких товаров в наличии нет, но на витрине это не отображается, скажем так что их статус - "Под заказ").
Надо разбивать заказ на два заказа этого же пользователя - те что "В наличии" в один заказ (быстрый), те что "Под заказ" - в другой заказ (долгий).
Автоматически.
Если в заказе товары только одного статуса - не делать разделение.

Идеи? Предложения?

Комментарии

Аватар пользователя Kvark Kvark 7 августа 2012 в 16:35

логически проверять значение количеста и все что больше 0 ложить в заказ скажем на юзера как обычно а второй генерировать на админ.юзера с линком на юзера, и как только нужные позиции появятся выставлять тому новый заказ по позициям от админ.юзера...

Аватар пользователя Nick Fedchik Nick Fedchik 7 августа 2012 в 16:43

lines в заказе больше 0 по определению (иначе корзина пустая).
Надо пробовать возможности Rules - правилами подсчитывать условие:
количество позиций статуса "Под заказ" >0
И
количество позиций статуса "В наличии" >0

ТО

сделать новый заказ с строками "Под заказ"
И
удалить из текущего заказа все строки "Под заказ"

Как то так... может кто-то уже пробовал - поделитесь.

Аватар пользователя Kvark Kvark 7 августа 2012 в 16:53

"Nick Fedchik" wrote:
lines в заказе больше 0 по определению (иначе корзина пустая).

я иммел ввиду не количество позиций а количество товара - в крайнем случае ввести маркер - товар есть в наличии или нужно заказывать - следовательно в момент заказа проверять маркер и сответсвенно генерить список заказа, пусть даже в томже заказе выводить вторым списком - "заказанно, но нет в наличии"

Аватар пользователя Nick Fedchik Nick Fedchik 7 августа 2012 в 17:29

Количество товара, по опыту, не всегда проставляют, даже если он есть в наличии.
Лучше избежать такого учета в данной операции.

Вот еще в голову идеи пришли:
1) Две корзины. Одна для статусов "В наличии", другая "Под заказ". Но предположу что это круто трудозатратно.
2) Те товары, что "Под заказ", их добавлять не в корзину, а в отдельный список, типа "Ожидаю поставку". Все равно как бы аналог корзины, поскольку надо и пользователя регистрировать, и хранить и количество ожидаемых товаров, и атрибуты.
В обеих случаях по-правильному надо уведомить пользователя е-мейлом и предложить ему оформить заказ. Устаревшие списки "Ожидаю поставку" надо удалять.

Что скажете?

Аватар пользователя Andruxa Andruxa 7 августа 2012 в 18:12

я склоняюсь к отдельному полю "наличие" у product, чтобы не страдать со складским учётом в коммерце, настроить ему 2 значения - "на складе" и "под заказ"

возможно, при загрузке остатков в коммерц апдейтить это поле
или для товаров поставщика, ведущего учет в блокноте (инфы об остатках от него не добиться никогда) - всегда ставить значение "под заказ"

далее в представлении, формирующем содержимое корзины, группировать product по этому полю
а при чекауте - хуками создавать 2 order

Аватар пользователя Nick Fedchik Nick Fedchik 7 августа 2012 в 19:25

Мне кажется что для товаров "Под заказ" надо показывать цену, но прятать кнопку "Купить", взамен добавляя другую, "Заказать" или "Стать в очередь" (на покупку).
Так сразу отметутся варианты.
Сейчас исследую для этих целей возможности модулей Nodequeue и Flag (правда под Убером, но не суть важно).

Аватар пользователя Nick Fedchik Nick Fedchik 10 августа 2012 в 14:21

Называется такая фича Delayed Shipping.
«Allow the customer to split his order: one with the products currently "in stock", and another with the other products. This option will convert the customer's cart into two orders.»
Нашел её в PrestaShop, на нем же решил делать магазин - с Drupal/Commerce сильно большие заморочки.