нашла ошибку, из-за чего выходила ошибка
Теперь ошибки нет, но начисление средств пользователю не происходит
такой код:
[CODE]<?
function MyUpdateAccount ($order_id, $status_id) {
$arBasketItems = array();
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
//"ORDER_ID" => "NULL"
"ORDER_ID" => $order_id
),
false,
false,
array("ID", "PRODUCT_ID", "QUANTITY", "PRICE")
);
while ($arItems = $dbBasketItems->Fetch()) {
if (strlen($arItems["CALLBACK_FUNC"]) > 0)
{
CSaleBasket::UpdatePrice($arItems["PRICE"],
$arItems["PRODUCT_ID"],
$arItems["QUANTITY"]);
$arItems = CSaleBasket::GetByID($arItems["ID"]);
}
$arBasketItems[] = $arItems;
}
$i = 0;
$sum = 0;
while($i < count($arBasketItems)){
$db_props = CIBlockElement::GetProperty('2', $arBasketItems[$i]['PRODUCT_ID'], "sort", "asc", array());
$PROPS = array();
while($ar_props = $db_props->Fetch()){
$PROPS[$ar_props['CODE']] = $ar_props['VALUE'];
}
$allBall = $PROPS['BONUS'] * $arBasketItems[$i]['QUANTITY'];
$sum += $allBall;
$i++;
}
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'], $sum, $order['CURRENCY'], "Бонус за покупку", $order_id);
}
}
}
}
AddEventHandler("sale", "OnSaleStatusOrder", "MyUpdateAccount");
?>
[/CODE]получается в переменной $sum ничего нет
если $sum привоить значение так:
$sum = 100;
то код работает
И, вообще, я правильно корзину отбираю? а то я засомневалась в этом