Добрый день.
В общем на сайте существует бонусная система (она же внутренний счёт пользователя), на которую падает определённый процент от суммы оплаченного заказа. Всё хорошо зачисляется списывается, но вот одно но, если пользователь оплачивает с внутреннего счёта, то бонусы не должны зачисляться пользователю.
Буду рад любым идеям. В документации не нашёл как проверить, что оплата заказа произошла с внутреннего счёта пользователя.[CODE]// добавление/Удаление бонусов на счёт пользователя
AddEventHandler('sale', 'OnSaleOrderPaid', 'OnSaleOrderPaidHandler');
function OnSaleOrderPaidHandler($order) {
//TODO: Проверка оплачено с внутреннего счёта(бонусы) или нет
$bPaid = ($order->isPaid() ? True : False);
$basket = $order->getBasket();
$points = 0;
$bonusRatio = COption::getOptionString('grain.customsettings', 'bonus');
foreach ($basket->getBasketItems() as $basketItem){
if ((float) $basketItem->getDiscountPrice() !== 0) $points += $basketItem->getFinalPrice() * 5 / 100;
}
if ($ar = CSaleUserAccount::GetByUserID($arFields['ID'], $order->getField('CURRENCY'))){
$accountID = CSaleUserAccount::Add(Array("USER_ID" => $arFields['ID'], "CURRENCY" => $order->getField('CURRENCY'), "CURRENT_BUDGET" => 0.00));
}
CSaleUserAccount::UpdateAccount(
$order->getUserId(),
($bPaid ? $points : -$points),
$order->getField('CURRENCY'),
($bPaid ? "Зачисление бонуса: ".$points : "Списание бонуса: ".$points)
);
}[/CODE]
В общем на сайте существует бонусная система (она же внутренний счёт пользователя), на которую падает определённый процент от суммы оплаченного заказа. Всё хорошо зачисляется списывается, но вот одно но, если пользователь оплачивает с внутреннего счёта, то бонусы не должны зачисляться пользователю.
Буду рад любым идеям. В документации не нашёл как проверить, что оплата заказа произошла с внутреннего счёта пользователя.[CODE]// добавление/Удаление бонусов на счёт пользователя
AddEventHandler('sale', 'OnSaleOrderPaid', 'OnSaleOrderPaidHandler');
function OnSaleOrderPaidHandler($order) {
//TODO: Проверка оплачено с внутреннего счёта(бонусы) или нет
$bPaid = ($order->isPaid() ? True : False);
$basket = $order->getBasket();
$points = 0;
$bonusRatio = COption::getOptionString('grain.customsettings', 'bonus');
foreach ($basket->getBasketItems() as $basketItem){
if ((float) $basketItem->getDiscountPrice() !== 0) $points += $basketItem->getFinalPrice() * 5 / 100;
}
if ($ar = CSaleUserAccount::GetByUserID($arFields['ID'], $order->getField('CURRENCY'))){
$accountID = CSaleUserAccount::Add(Array("USER_ID" => $arFields['ID'], "CURRENCY" => $order->getField('CURRENCY'), "CURRENT_BUDGET" => 0.00));
}
CSaleUserAccount::UpdateAccount(
$order->getUserId(),
($bPaid ? $points : -$points),
$order->getField('CURRENCY'),
($bPaid ? "Зачисление бонуса: ".$points : "Списание бонуса: ".$points)
);
}[/CODE]