Добрый день, добавил правило что купон не принимал если сумма заказа меньше 2000 тыс р.
и вопрос, а как сделать чтобы при попытке ввода купона выдавалось сообщение что минимальна сумма заказа должна быть больше 2000 тыс.р.
а данный момент он просто обновляет страницу и все...ничего не происходит.
спасибо...
Комментарии
Писать кастомный модуль.
Делается через hook_form_alter() и hook_checkout_form_validate()
~40 строк кода
понял, писать модули это я еще не умею ((
спасибо
Там писать тои нечего.
В хуке форм ловим 3 нужные для нас (на которых завязана корзина и оформление)
<?php
/**
* Implements hook_form_alter().
*/
function hook_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'views_form_commerce_cart_form_default') {
$form['actions']['checkout']['#validate'][] = 'hook_checkout_form_validate';
} elseif ($form_id == 'commerce_checkout_form_checkout') {
$form['buttons']['continue']['#validate'][] = 'hook_checkout_form_validate';
} elseif ($form_id == 'commerce_checkout_form_review') {
$form['buttons']['continue']['#validate'][] = 'hook_checkout_form_validate';
}
}
?>
А затем пишем hook_checkout_form_validate в котором банальными if условиями сравниваем цену заказа, мин цену заказа, а также проверяем на наличие купона. В случае если оно не прокатит вешать form_set_error() и писать юзеру в нем что он должен еще накинуть или не юзать купон
СПАСИБО!!!!
https://github.com/Niklan/Commerce-CRE
Создал небольшой модуль, который добавляет новое событие в Rules. Называется 'On checkout page'
Срабатывает когда юзер находится на странице корзины, оформления заказа, или его подтверждении.
Пример использования для задания минимальной суммы покупки для определенной роли.
Второе условие [checkout-form-id]
в чем его суть? я его не понял((
и я сделал вот так
Кароче событие 'On checkout page' сработает когда юзер будет на одной из страниц оформления.
В моём случае я поставил отрицание на страницу корзины, что в ней не срабатывало. Ибо я сделал редирект на корзину и вывод ошибки в случае перехода на страницу оформления\проверки и не соблюдения условий.
Если бы я не добавил это отрицание, у меня бы при несоблюдения условиня страница cart циклически грузилась.
'views_form_commerce_cart_form_default' - страница корзины
'commerce_checkout_form_checkout' - страница оформления (телефоны и т.д.)
'commerce_checkout_form_review' - страница проверки заполненных данных
Я в отрицание поставил первую.
Для сравнения цен используйте Price comparsion, он учитывает валюту.
А то сейчас ограничение для всех валют 100000 будет. а 100000 руб != 100000$
понял, спасибо
Есть же готовый официальный модуль - Commerce Minimum & Maximum Order Amount - https://www.drupal.org/project/commerce_moa
Спасибо за модуль!!!
Поставил его, так как он лучше настраивается.
Хотелось просто включить и быстро настроить, но Commerce Minimum & Maximum Order Amount - оказался очень не гибким. Сразу же подбесил вывод копеек, они у меня отключены, не лезть же в чужой официальный модуль и править, делать хук для хука модуля - это уж извращение, проще свой модуль по подобию написать.
Niklan - ваш сайтик к себе в закладки поставим
И расширил форм id
$form_id_list = array(
'views_form_commerce_cart_form_default',
'commerce_checkout_form_checkout',
'commerce_checkout_form_shipping',
'commerce_checkout_form_review',
);