+7 (843) 212-62-17 - Казань
+7 (843) 212-62-17 - Казань

API модуля бонусной системы

Информация для разработчиков, и интеграторов

Для вывода бонусов в любом месте, необходимо:
  1. Подключить модуль бонусов.
  2. Получить информацию о бонусах, подключив метод модуля.
    Для списка товаров это нужно делать вне цикла, чтобы не нагружать систему.
    В класс подается массив с товарами, на выходе получаете массив с данными о бонусах для товаров.
  3. Вывести информацию в шаблоне.
Подключение модуля:
Старый вариант:
CModule::IncludeModule('logictim.balls');
Вариант для D7:
use Bitrix\Main\Loader;
Loader::includeModule("logictim.balls"); 

Вывод бонусов в списке товаров:
$arBonus = cHelperCalc::CatalogBonus($arResult); //Подключать вне цикла, чтобы не грузить сервер
$arBonus[$arItem["ID"]]["VIEW_BONUS"];
*$arItem["ID"] - ID товара

Код для быстрой вставки:
<? //Каталог товаров (catalog.section)
CModule::IncludeModule('logictim.balls');
$arBonus = cHelperCalc::CatalogBonus($arResult);
?>
<? if($arBonus[$arItem["ID"]]["VIEW_BONUS"] > 0) {?>
	<div class="bonus">+ <?=$arBonus[$arItem["ID"]]["VIEW_BONUS"]?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?></div>
<? }?>

Вывод бонусов в карточке товара:
$arBonus = cHelperCalc::CatalogBonus($arResult);
$arBonus[$arResult["ID"]]["VIEW_BONUS"];

Код для быстрой вставки:
<? //Карточка товара (catalog.element)
CModule::IncludeModule('logictim.balls');
$arBonus = cHelperCalc::CatalogBonus($arResult);
?>
<? if($arBonus[$arResult["ID"]]["VIEW_BONUS"] > 0) {?>
	<div class="bonus">+ <?=$arBonus[$arResult["ID"]]["VIEW_BONUS"]?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?></div>
<? }?>

Вывод бонусов в корзине:
$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
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>
<? }?>

Вывод бонусов на странице оформления заказа:
$arBonus = cHelperCalc::CartBonus($arResult["BASKET_ITEMS"]);
	//За единицу товара
	$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"];
	//За все количество товара
	$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"];
	//За всю корзину
	$arBonus["ALL_BONUS"];
Код для быстрой вставки:
<? //На страницу оформления заказа (sale.order.ajax / шаблон / summary.php)
CModule::IncludeModule('logictim.balls');
$arBonus = cHelperCalc::CartBonus($arResult["BASKET_ITEMS"]);
?>
<? 
//За единицу товара
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>
<? }?>

Вывод бонусов в любом компоненте с товарами:
Осуществляется аналогично списку товаров.


Получить количество бонусов пользователя
$userBonus = cHelper::UserBallance($user_id);
$user_id - id пользователя. Может быть пустым, тогда вернет бонусы текущего пользователя.
В php 7.1 и выше обязательно передавать хотябы пустое значение, например так:
$userBonus = cHelper::UserBallance('');
Перед использованием класса не забывайте подключать модуль.


Определение доступности бонусной системы для пользователя, учитывая настройки
$userDostup = cHelper::UserBonusSystemDostup($user_id);
$user_id - id пользователя. Может быть пустым, тогда вернет информацию по текущему пользователю.
Возвращаемые значения: Y или N
В php 7.1 и выше обязательно передавать хотябы пустое значение, например так:
$userDostup = cHelper::UserBonusSystemDostup('');
Перед использованием класса не забывайте подключать модуль.


Добавление бонусов пользователю
Метод начисляет бонусы пользователи, и создает операцию начисления в истории
//Пример начисления 10-ти бонусов
$arFields = array(
                  "ADD_BONUS" => 10,
                  "USER_ID" => 1,
                  "OPERATION_TYPE" => 'USER_BALLANCE_CHANGE',
                  "OPERATION_NAME" => 'Начисление для теста',
                  "ORDER_ID" => '2',
                  "DETAIL_TEXT" => 'Описание',
                  "MAIL_EVENT" => array(
                                      "EVENT_NAME" => "LOGICTIM_BONUS_FROM_REPOST",
                                      "CUSTOM_FIELDS" => array(
                                                              "TEST_1" => 'Тестовое поле 1',
                                                              "TEST_2" => 'Тестовое поле 2',
                                                              )
                                        )
				);

logictimBonusApi::AddBonus($arFields);
Описание параметров:
"ADD_BONUS" - Сколько бонусов начислить
"USER_ID" - ID пользователя, которому начислить бонусы
"OPERATION_NAME" - Название для сохранения операции.
"OPERATION_TYPE" - Тип операции (код значения свойства "Тип операции"  из инфоблока "История операций бонусной системы"). Можно добавлять свои значения, при обновлении модуля изменения не затрутся.
"ORDER_ID" - ID заказа, за который начисляются бонусы. Не обязательный параметр. Указывается в случае начисления по конкретному заказу.
"DETAIL_TEXT" - Детальное описание операции начисления
"MAIL_EVENT" - Массив для создания почтового события после начисления бонусов (если есть параметр, то производится отправка сообщения о начислении)
"EVENT_NAME" - Код почтового события
"CUSTOM_FIELDS" - массив для передачи любых переменных в почтовый шаблон


Если у вас используется не стандартный компонент, или шаблон оформления заказа: