Добрый день!
Давно заметили, что около половины покупателей, применяющих купон, вводят его в поле комментария на странице оформления заказа (а не в корзине в поле ввода купона). И у этого есть пара негативных моментов:
- Во первых, такие купоны менеджерам приходится потом применять вручную, а это лишняя работа (иногда, кстати, они забывают это сделать).
- Во вторых, покупатель получает автоматическое письмо с информацией о заказе без учета применения купона, что может покупателя огорчить.
Поэтому было решено анализировать поле комментария в форме оформления заказа и, в случае присутствия купона в этом поле, применять купон в процессе отправки формы. Получается, с виду, весьма изящное решение:
Код |
---|
AddEventHandler("sale", "OnBeforeOrderAdd", function(&arFields){
$coupon = 'SL-TICCF-707RF';
$CouponIsSet = strpos($arFields['USER_DESCRIPTION'], $coupon);
if ($CouponIsSet === false) {
$result = 0;
} else {
CCatalogDiscountCoupon::SetCoupon($coupon);
};
}
|
И вроде бы,
OnBeforeOrderAdd - Вызывается перед добавлением заказа, может быть использовано для отмены или модификации данных.
Но! Не работает так, как надо. Заказ отправляется без купона, а купон при этом применяется к новой пустой корзине покупателя.
Кроме того, рядом с добавлением купона, пробую подкладывать в заказ подарочный товар. Так:
Код |
---|
...
} else {
CCatalogDiscountCoupon::SetCoupon($coupon);
AddAdd2BasketByProductID($gift_ID, 1, array(),array());
...
|
и он подкладывается! Только не в этот заказ, а в опять же, в следующую корзину покупателя =/
Вопрос: Какое можно использовать событие, какой метод, чтобы желаемые изменения применялись именно к создаваемому заказу, а не к последующей корзине?
Но только так, чтобы можно было анализировать при этом поле ввода комментария.
Перепробовал уже много чего, загуглился до умопомрачения.
Форумчане! Вся моя надежда только на вас )))