Пытаюсь реализовать нечто, похожее на это - http://dev.1c-bitrix.ru/community/webdev/user/16899/blog/1854/, но почему-то код, добавленный на OnBasketAdd повисает, а если то же самое повесить на кнопку "Купить", то всё работает на ура.
Идея в том, чтобы дарить покупателю подарок в зависимости от потраченной суммы. Есть инфоблок подарков (ID = 9), куда админ добавляет товары с нулевой ценой, у товара есть свойство "PROPERTY_PRICE" в которое заносится сумма, после которой покупателю даётся этот подарок и вот такой постой код призван это делать:
[CODE]$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",
"PRODUCT_ID",
"QUANTITY",
"PRICE")
);
while ($arItems = $dbBasketItems->Fetch())
{
$arBasketItems[] = $arItems;
}
foreach($arBasketItems as $arItem) {
$AllOrderPrice+=$arItem['QUANTITY']*$arItem['PRICE'];
}
$arSelect=Array("PROPERTY_PRICE","ID","NAME");
$arFilter=Array("IBLOCK_ID"=>9,"<=PROPERTY_PRICE"=>$AllOrderPrice,"ACTIVE"=>"Y");
$dbres=CIBlockElement::GetList(Array(),$arFilter,false,Array(),$arSelect);
while ($res=$dbres->Fetch())
{
if(!in_array($res['ID'],$arBasketItems)):
$arFieldsPres = array(
"PRODUCT_ID" => $res['ID'],
"PRODUCT_PRICE_ID" => 0,
"PRICE" => 0.00,
"CURRENCY" => "RUB",
"WEIGHT" => 0,
"QUANTITY" => 1,
"LID" => SITE_ID,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $res["NAME"]
);
CSaleBasket::Add($arFieldsPres);
endif;
}
[/CODE]
Почему это не работает в init.php?
спасибо