[РЕШЕНО]Drupal Commerce -Как разрешить пользователю менять только статус заказа(причём только на определённые)уже у оформленного

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

Аватар пользователя andreystrelkov andreystrelkov 21 декабря 2012 в 18:14

У меня очень странная задача, у меня нет как такового понятия корзина, у меня заказы можно делать только максимум в один товар, причём при добавлении товара в корзину, происходит сразу редирект на оформлении заказа, таким образом пользователь добавив товар в корзину сразу утверждает - что он покупает этот товар!

ОДНАКО, бывает форс мажорные обстоятельства, когда по каким причинам не удастся купить этот товар (по личным. финансовым. или этот товар уже не нужен, а нужен другой),
и вот вопрос

Как бы сделать так, чтобы пользователь мог зайти в просмотр своих заказов, и мог править у своих заказазов только статус (статусы у меня свои, допустим КУПЛЮ и НЕ СМОГУ), только между этиму двумя, удалять просто заказ давать нельзя, т.к. нельзя чтобы это процедура прошла мимо продавца, он должен видеть кто отказался (по статусу), поэтому хочется разрешить только смену статуса

если смотреть по правам доступам, то там сразу по капитально - вообще всё может менять полностью

(здесь похоже уже задавался такой вопрос, но тишина (http://www.drupalcommerce.org/discussions/2952/order-permissions)

Комментарии

Аватар пользователя Nikit Nikit 22 декабря 2012 в 6:59

Можно модулем, а можно через Rules: надо создать новое поле доступное для изменения (или любой модуль со своими статусами (например, как Flag), а потом через Rules контролировать их значения и записывать их в недоступный Status...

Аватар пользователя andreystrelkov andreystrelkov 22 декабря 2012 в 10:29

я тоже думал, может вообще проще как нибудь сделать с Rules, например спокойно реагировать на действие удаления заказа, при условии что его статус равен КУПЛЮ и роль текущего пользователя не АДМИНИСТРАТОР,
в противном случае делать редирект куда нибудь на главную с надписью - ЗАПРЕЩЕНО

но в Rules нет тригера на действие ПЕРЕД УДАЛЕНИЕМ ЗАКАЗА, только ПОСЛЕ УДАЛЕНИЯ

Аватар пользователя andreystrelkov andreystrelkov 22 декабря 2012 в 23:52

Вроде бы получилось, но не полностью
итого,
поставил модуль Rules Link,
в котором создал ссылку - УДАЛИТЬ ЗАКАЗ (котором будет работать с Commerce Order)
это ссылке ведет на рулзу, в которой проверяется что статус стоит КУПЛЮ
и выполняет действие - сменить статус на (НЕ КУПЛЮ), ОДНАКО СДЕЛАЛ ВЫВОД ЧТО ЭТО ЛИШНЯЯ ИНФОРМАЦИЯ УЖЕ, ХОЧУ ЧТОБЫ ЗАКАЗ ПРОСТО УДАЛИЛСЯ - А ТАКОГО ДЕЙСТВИЯ НЕТ В РУЛЗАХ :'(((

готовую ссылку добавил в вьюху, и теперь она отображается только напротив тех заказов где статус КУПЛЮ...

ВОПРОС, КАК УДАЛИТЬ ПОЛНОСТЬЮ ЗАКАЗ???

Аватар пользователя Nikit Nikit 23 декабря 2012 в 13:58

Не совсем понял ваши правила, я так понимаю так:
1. Есть поле доступное для редактирования.
2. Добавляем Action = Commerce order updating, и контролируем по Condition значение этого поля.
3. Если поле = "Не куплю", то Action: Delete Entity - и удаляем ордер. Юзеру выдаём сообщение и переправляем куда-нибудь.

Я бы не стал так категорично удалять ордер, просто поставил состояние в статусе = Canceled.

Аватар пользователя andreystrelkov andreystrelkov 23 декабря 2012 в 15:36

У меня есть стандартное поле у Commerce - Status (в котором такие как Pending, Completed, Shopping Cart и т.д.), я его расширил своими дополнительными статусами (с помощью модуля, не помню как называется)

Потом поставил модуль Rules Link, в котором можно создавать ссылку которые будут запускать то или иное правило

Создал ссылку - УДАЛИТЬ ЗАКАЗ, в котором будет выполняться правило, при условии что статус заказа КУПЛЮ, если выполняется то меняй статус на НЕ КУПЛЮ
(удиивило, что, у меня эта ссылка выводиться как ещё одна колонка в вьюхе, получается она будет выводиться на всех заказах, без разницы какой он статус - значит надо будет ещё как то настраивать вывод ссылки вьюхой... а нет! всё оказывается уже схвачено, и само всё делается, видать эта ссылка с правилом и условием обрабатывается ещё до формирования таблицы! Smile )

Почему удалять, потому что (я делаю сайт совместных покупок, а не интернет магазин) покупатели очень любят - сначала заказать что то до так называемого СТОПА, а потом 300 раз передумать и другое заказать, поэтому не очень нужны выводящиеся и существующие заказы по статусом - НЕ КУПЛЮ,лишняя информации, поэтому её лучше грохнуть