Эта инструкция нужна только если шаблон корзины нестандартный и автоматической интеграции недостаточно. Сначала попробуйте включить автоинтеграцию в настройках модуля: корзина и оформление заказа.
$arBonus = cHelperCalc::CartBonus($arResult["ITEMS"]["AnDelCanBuy"]);
//За единицу товара
$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"];
//За все количество товара
$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"];
//За всю корзину
$arBonus["ALL_BONUS"];
В шаблоне bitrix:sale.basket.basket:
<? //В корзине bitrix:sale.basket.basket
CModule::IncludeModule('logictim.balls');
$arBonus = cHelperCalc::CartBonus($arResult["ITEMS"]["AnDelCanBuy"]);
?>
<? //За единицу товара
if($arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
<? //За все количество товара
if($arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
<? //За всю корзину
if($arBonus["ALL_BONUS"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ALL_BONUS"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
На странице оформления заказа для вывода начисления по позициям используется тот же CartBonus, но с $arResult["BASKET_ITEMS"]. См. также кастомное оформление заказа.
Смотрите также: каталог, для разработчиков.