Задача - сделать зачисление на счет пользователя процента от суммы заказа как бонуса. Решение:
Размещаем этот код в /bitrix/php_interface/init.php или где-то там еще, в своих модулях можно. Меняем $koef на свое значение, сейчас 0.05 - это 5% от суммы заказа будет зачисляться на счет пользователя. В данном коде считается, что заказ выполнен, если его код F, меняем на свой нужный. Мысль можно развивать и сделать прогрессивное начисление в зависимости от суммы заказа. Допустим, до 100 т.р. начисление будет 3%, от 100 до 500 т.р. начисление 5% и более 500 т.р. - 7%. Еще можно сделать уведомление пользователю - так мол и так, спасибо дорогой, вот тебе бонус на счет, можешь купить еще че-нить. Также происходит проверка начислений за текущий заказ, чтобы не было двойного начисления, если статус заказа менялся туда-сюда, хотя лучше сделать списание суммы со счета в случае отмены заказа, но это уже другое событие.
function MyUpdateAccount ($order_id, $status_id) { $koef = 0.05; // Сколько процентов зачислять на счет if ($order_id>0 AND $status_id=="F") { // Заказ считается выполненным $order = CSaleOrder::GetByID($order_id); if ($order['CANCELED']=="N" AND $order['STATUS_ID']=="F" AND $order['USER_ID']>0) { $rs = CSaleUserTransact::GetList(array(), array('USER_ID'=>$order['USER_ID'], 'DEBIT'=>"Y", 'ORDER_ID'=>$order_id)); // Проверяем начисления пользователю по этому заказу $exist = $rs->GetNext(); if (!isset($exist['ID'])) { CSaleUserAccount::UpdateAccount($order['USER_ID'], $order['PRICE']*$koef, $order['CURRENCY'], "Бонус за покупку ".($koef*100)."%", $order_id); } } } } AddEventHandler("sale", "OnSaleStatusOrder", "MyUpdateAccount"); |
Размещаем этот код в /bitrix/php_interface/init.php или где-то там еще, в своих модулях можно. Меняем $koef на свое значение, сейчас 0.05 - это 5% от суммы заказа будет зачисляться на счет пользователя. В данном коде считается, что заказ выполнен, если его код F, меняем на свой нужный. Мысль можно развивать и сделать прогрессивное начисление в зависимости от суммы заказа. Допустим, до 100 т.р. начисление будет 3%, от 100 до 500 т.р. начисление 5% и более 500 т.р. - 7%. Еще можно сделать уведомление пользователю - так мол и так, спасибо дорогой, вот тебе бонус на счет, можешь купить еще че-нить. Также происходит проверка начислений за текущий заказ, чтобы не было двойного начисления, если статус заказа менялся туда-сюда, хотя лучше сделать списание суммы со счета в случае отмены заказа, но это уже другое событие.