Здравствуйте, задача поставлена "При переводе заказа в статус "Завершен", если сумма заказа более 5000 рублей добавлять на бонусный счет пользователя 5% от стоимости товаров, не включая стоимость доставки." Написал подобное, подскажите пожалуйста, что не правильно, а то не работает и счет не пополняется на %.
[CODE]function MyDeliveryOrderCallback($productID, $userID, $bPaid, $orderID)
{
global $DB;
// Обработаем входные параметры
$productID = IntVal($productID); // Код заказанного товара
$userID = IntVal($userID); // Код пользователя-покупателя
$bPaid = IntVal($bPaid); // Устанавливается или снимается флаг доставки
$orderID = IntVal($orderID); // Код заказа
if ($userID <= 0)
return False;
if ($orderID <= 0)
return False;
// Внесем деньги на счет
if (!CSaleUserAccount::UpdateAccount(
$userID,
$bPaid,
"RUB",
"MANUAL",
$orderID
)
)
return False;
return True;
}
AddEventHandler("sale", "OnBeforeOrderAdd", "OnBeforeOrderAddHandler");
function OnBeforeOrderAddHandler(&$arFields)
{
global $USER;
$cart_num = 0;
$cart_sum = 0;
$rsUser = CUser::GetByID($USER->GetID());
$arUser = $rsUser->Fetch();
if (CModule::IncludeModule("sale")) {
$arBasketItems = array();
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC", "ID" => "ASC"),
array("FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL"),
false,
false,
array("ID", "MODULE", "PRODUCT_ID", "QUANTITY", "CAN_BUY", "PRICE"));
while ($arItems = $dbBasketItems->Fetch()) {
$arItems = CSaleBasket::GetByID($arItems["ID"]);
$arBasketItems[] = $arItems;
$cart_num += $arItems['QUANTITY'];
$cart_sum += $arItems['PRICE'] * $arItems['QUANTITY'];
}
if (empty($cart_num))
$cart_num = "0";
if (empty($cart_sum))
$cart_sum = "0";
}
$arBasketItems = array();
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"ORDER_ID" => "NULL"
),
false,
false,
array("ID",
"CALLBACK_FUNC",
"MODULE",
"PRODUCT_ID",
"QUANTITY",
"DELAY",
"CAN_BUY",
"PRICE",
"WEIGHT",
"ORDER_ID")
);
while ($arItems = $dbBasketItems->Fetch()) {
if (strlen($arItems["CALLBACK_FUNC"]) > 0) {
CSaleBasket::UpdatePrice($arItems["ID"],
$arItems["CALLBACK_FUNC"],
$arItems["MODULE"],
$arItems["PRODUCT_ID"],
$arItems["QUANTITY"]);
$arItems = CSaleBasket::GetByID($arItems["ID"]);
}
$arBasketItems[] = $arItems;
}
if ($cart_sum >= 5000) {
$BonusPrice = $cart_sum * 5 / 100;
MyDeliveryOrderCallback(11, $arUser['ID'], $BonusPrice, 20);
}
}[/CODE]