Я думаю, вы можете сделать это с помощью комбинации Drupal Commerce и Rules и, возможно, некоторой настройки.
Насколько я понимаю, ваш сценарий выглядит так:
- Места пользователейзаказ, но не оплачивается.
- Администратор просматривает заказ и утверждает его для оплаты.
- Пользователю отправляется электронное письмо с предложением оплатить.
- Оплаченный заказ отмеченкак завершено.
Коммерция уже администратор редактировать статус заказа.Затем вы можете поймать это событие в правиле, которое отправляет платежное электронное письмо.Самой большой проблемой будет вмешательство в процесс оформления заказа, чтобы пользователь не платил сразу после размещения заказа.
Для этого вам нужно будет создать два новых статуса заказа.См. http://www.drupalcommerce.org/faq/order-states для получения информации о том, как это сделать.Давайте назовем эти статусы «Ожидание одобрения» и «Утверждено».
Остальное должно быть проще, без кодирования:
Создайте страницу, информирующую пользователя о том, что егозаказ будет рассмотрен и утвержден в ближайшее время.
Создать правило для добавления нашего нового статуса:
- Событие: перед сохранением заказа
- Условие: сравнить данные, без изменений статус заказа: Корзина
- Условие: Сравнить данные, обновлен статус заказа Оформить заказ
- Действие: Установить статус заказа на Ожидание утверждения
Создать правило, чтобы пользователь не мог перейти к оформлению заказа:
- Событие: инициализация Drupal
- Условие: сравнить данные,путь к странице содержит «оформить заказ»
- Условие: сравнить данные, текущий статус заказа в ожидании утверждения
- Действие: перенаправить пользователя на информационную страницу, созданную на шаге 1
Теперь, когдапользователь пытается проверить, заказ получаетпомечен как ожидающий утверждения, и пользователь перенаправляется на информационную страницу.Администратор теперь может редактировать заказ и изменять его статус на Утверждено.Я бы порекомендовал:
Создать представление всех заказов в статусе «Ожидание утверждения», включая ссылки «Изменить».
Затем,чтобы завершить процесс:
Создать правило, информирующее пользователя, что его заказ был утвержден к оплате:
- Событие: заказ был обновлен
- Условие: статус заказа подтвержден
- Действие: пользователь электронной почты
Создать правило, позволяющее пользователю платить:
- Событие: инициализация Drupal
- Условие: сравнить данные, путь к странице содержит «извлечение»
- Условие: сравнить данные, текущий статус заказа утвержден
- Действие: Измените статус заказа на Checkout
Отсюда процесс оформления заказа будет продолжаться как обычно, пока не будет завершен.
Обратите внимание, что если в любой момент, пользовательнажимает «Отмена» в процессе оформления заказа, заказ возвращается в статус «Корзина» и должен быть снова утвержденон админ.Если вы не хотите, чтобы это происходило, вы можете создать ссылку «отменить», чтобы элегантно «исчезнуть».