Нет заказа, пока первый не заплатит
-
16-10-2019 - |
Вопрос
Мне нужно создать модуль, в котором он проверяет, есть ли у клиента заказ, и если он проверяет, выплачивается ли он (он же в полном состоянии), если да, позвольте ему снова заказывать, если не позвольте ему заказывать.
Я подумал об использовании observer с этим событием: sales_convert_quote_to_order
И проверьте там, и если ему не разрешено, его возвращают обратно на страницу, где он может заплатить за нее.
Это событие хорошо для того, что я пытаюсь сделать? Или я должен сделать это по -другому? Как?
Решение
Это событие инициируется либо из бэкэнд, проведенного платежным продлением, поэтому я не думаю, что фактический клиент будет там, когда его запускается. Возможно, вы захотите отобразить уведомление на фронте в корзине для того, чтобы пользователь сказал ему, что ему нужно заплатить первый счет и скрыть кнопку «Оформление», пока все счета не будут выплачены. Это, вероятно, будет зависеть от того, как клиент должен заплатить свой счет, звучит так, как будто вы используете банковский перевод в качестве способа оплаты?
Другие советы
sales_convert_quote_to_order
является Запускается в конце кассе (Сандер мог ошибаться за «Преобразование порядка в счет -фактуру»), но я бы не использовал его.
Не из -за технических причин, а для пользовательского опыта. Я бы не позволил клиенту пройти всю кассе и сказать ему в конце: «О, извините, вам не разрешено заказывать». Так что используйте первое событие в кассе, где вы знаете, кто такой клиент.
Это controller_action_predispatch_checkout_onepage_index
, что запускается, когда вы переходите на кассу в качестве клиента или после выбора «входа» или «зарегистрироваться» в качестве гостя. Это обычный запрос, не являющийся AJAX, вы можете перенаправить на корзину с сообщением об ошибке, если оформление заказа не допускается.