Есть вопросы, которые вы не смогли решить по нашим публикациям самостоятельно? Ждем ваше обращение в нашей службе техподдержки!

ИНТЕГРАЦИЯ В ОФОРМЛЕНИЕ ЗАКАЗА

Оформление заказа (оплата бонусами)

Внедрение модуля в компонент оформления заказа является самым долгим и трудозатратным. 

Хочу заметить на версию модуля 4.2.7 интеграция в НОВЫЙ шаблон оформления заказа отсутствует - работа ведется по детальной интеграции.

в комплекте с модулем идет кастомизированный старый шаблон bonus4X. В данном шаблоне полностью произведена интеграция.

Для интеграции нам необходимо 
1. копировать шаблон компонента sale.order.ajax
2. В параметрах компонента убрать опцию Разрешить оплату с внутреннего счета
3. Включить события в настройках модуля
События модуля

4. после обновления 4.2.12 необходимо в параметры компонента добавить параметр

 "SHOW_BONUS_SYSTEM" => "Y"



  Переходим к интеграции

1. файл result_modifier.php (если отсутствует - создать)


	 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
if ($_POST["PAY_BONUS_ACCOUNT"] == "Y") {
    $arResult['USER_VALS']["PAY_BONUS_ACCOUNT"] = "Y";
}
if ($_POST["PAY_BONUSORDERPAY"] == "Y") {
    $arResult['USER_VALS']["PAY_BONUSORDERPAY"] = "Y";
}

2. файл paysystem.php


	 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
 \Bitrix\Main\Loader::includeModule("vbcherepanov.bonus");
CVbchbbEvents::RefreshPayedFromAccount($arResult);
?>

В js код в функцию changePaySystem добавляем условия


	 //this is bigbonus module add--------------------------------------------------------
if(param == 'bonus'){
   BX("PAY_BONUS_ACCOUNT").checked = !BX("PAY_BONUS_ACCOUNT").checked;
   BX.addClass(BX("PAY_BONUS_ACCOUNT_LABEL"), 'selected');
}
if(param == 'bonusorderpay'){
   BX("PAY_BONUSORDERPAY").checked = !BX("PAY_BONUSORDERPAY").checked;
   BX.addClass(BX("PAY_BONUSORDERPAY_LABEL"), 'selected');
}
//-------------------------------------------------------------------------------
Все классы и идентификаторы только для шаблона типового решения 1С-Битрикс

Далее вместо вывода элементов для оплаты с пользовательского счета вставляем следующий код

элементы для оплаты начисляемыми бонусами

	 <?if($arResult['SYSTEMPAY']['BONUSORDERPAY'] || $arResult['BONUSPAY']['BONUSORDERPAY']){?>
 <div class="bx_block w100 vertical">
  <div class="bx_element">
   <input type="hidden" name="PAY_BONUSORDERPAY" value="N">
   <label for="PAY_BONUSORDERPAY" id="PAY_BONUSORDERPAY_LABEL" onclick="changePaySystem('bonusorderpay');" class="    <?if($arResult["USER_VALS"]["PAY_BONUSORDERPAY"]=="Y") echo "selected"?>" style="width:100%">
    <input type="checkbox" name="PAY_BONUSORDERPAY" id="PAY_BONUSORDERPAY" value="Y"<?if($arResult["USER_VALS"]            ["PAY_BONUSORDERPAY"]=="Y") echo " checked=\"checked\"";?>>
     <div class="bx_logotype">
       <span style="background-image:url(<?=$templateFolder?>/images/bonus-to-pay.gif);"></span>
     </div>
<div class="bx_description">
<strong><?=GetMessage('VBCHBB_SALE_ORDER_AJAX_P7')?></strong>
<p>
<div><?=GetMessage('VBCHBB_SALE_ORDER_AJAX_P8')?>&nbsp;<b><?=$arResult['BONUSORDERPAY']["BONUSORDERPAY_FORMATED"]?></b></div>
</p>
</div>
</label>
<div class="clear"></div>
</div>
</div>
<?}

if(!is_array($arResult['TYPEPAY']))  $arResult['TYPEPAY']=array();

элементы оплаты с пользовательского счета


	 if (in_array("SYSTEMPAY",$arResult['TYPEPAY']) && $arResult['PAY_FROM_ACCOUNT1']=='Y')
{
$accountOnly = ($arParams["ONLY_FULL_PAY_FROM_ACCOUNT"] == "Y") ? "Y" : "N";
?>
<input type="hidden" id="account_only" value="<?=$accountOnly?>" />
<div class="bx_block w100 vertical">
<div class="bx_element">
<input type="hidden" name="PAY_CURRENT_ACCOUNT" value="N">
<label for="PAY_CURRENT_ACCOUNT" id="PAY_CURRENT_ACCOUNT_LABEL" onclick="changePaySystem('account');" class="<?if($arResult["USER_VALS"]["PAY_CURRENT_ACCOUNT"]=="Y") echo "selected"?>">
<input type="checkbox" name="PAY_CURRENT_ACCOUNT" id="PAY_CURRENT_ACCOUNT" value="Y"<?if($arResult["USER_VALS"]["PAY_CURRENT_ACCOUNT"]=="Y") echo " checked=\"checked\"";?>>
<div class="bx_logotype">
<span style="background-image:url(<?=$templateFolder?>/images/inner-ps.gif);"></span>
</div>
<div class="bx_description">
<strong><?=GetMessage('VBCHBB_SALE_ORDER_AJAX_P6')?>&nbsp; <?=$arResult['SYSTEMPAY']['ORDER_PAY_PERCENT']?>)</strong>
<p>
<div><?=GetMessage("SOA_TEMPL_PAY_ACCOUNT1")." <b>".$arResult['SYSTEMPAY']["CURRENT_BUDGET_FORMATED"]?></b></div>
<? if ($arParams["ONLY_FULL_PAY_FROM_ACCOUNT"] == "Y"):?>
<div><?=GetMessage("SOA_TEMPL_PAY_ACCOUNT3")?></div>
<? else:?>
<div><?=GetMessage("SOA_TEMPL_PAY_ACCOUNT2")?></div>
<? endif;?>
<?if(!$arResult['SYSTEMPAY']['USER_INPUT']){?>
<input type="hidden" name="ACCOUNT_CNT" value="<?=$arResult['SYSTEMPAY']['MAXPAY']?>"/>
<?}?>
</p>
</div>
</label>
<?if($arResult['SYSTEMPAY']['USER_INPUT']){?>
<div>
<?if($arResult["USER_VALS"]["PAY_CURRENT_ACCOUNT"]=="Y"){?>
<input type="text" id="account_pay" name="ACCOUNT_CNT" placeholder="<?=$arResult['SYSTEMPAY']["MAXPAY"]?>" disabled="disabled"
  style="width:180px;" value="<?=$arResult['SYSTEMPAY']['MAXPAY']?>"/>
<input type="hidden" id="account_pay" name="ACCOUNT_CNT"  value="<?=$arResult['SYSTEMPAY']['MAXPAY']?>"/>
<?}else{?>
<input type="text" id="account_pay" name="ACCOUNT_CNT" placeholder="<?=$arResult['SYSTEMPAY']["MAXPAY"]?>"
  style="width:180px;" value="<?=$arResult['SYSTEMPAY']['MAXPAY']?>"/>
<?}?>
</div>
<?}?>

<div class="clear"></div>
</div>
</div>
<?
}
элементы оплаты с бонусного счета


	 if(in_array("BONUSPAY",$arResult['TYPEPAY']) && $arResult['PAY_FROM_BONUS']=="Y"){
?>
<div class="bx_block w100 vertical">
<div class="bx_element">
<input type="hidden" name="PAY_BONUS_ACCOUNT" value="N">
<label for="PAY_BONUS_ACCOUNT" id="PAY_BONUS_ACCOUNT_LABEL" onclick="changePaySystem('bonus');" class="<?if($arResult["USER_VALS"]["PAY_BONUS_ACCOUNT"]=="Y") echo "selected"?>" style="width:100%">
<input type="checkbox" name="PAY_BONUS_ACCOUNT" id="PAY_BONUS_ACCOUNT" value="Y"<?if($arResult["USER_VALS"]["PAY_BONUS_ACCOUNT"]=="Y") echo " checked=\"checked\"";?>>
<div class="bx_logotype">
<span style="background-image:url(<?=$templateFolder?>/images/bonus-ps.gif);"></span>
</div>
<div class="bx_description">
<strong><?=GetMessage('VBCHBB_SALE_ORDER_AJAX_P0')?>&nbsp;<?=$arResult['BONUSPAY']['ORDER_PAY_PERCENT']?>)</strong>
<p>
<div><?=GetMessage('VBCHBB_SALE_ORDER_AJAX_P1')?>&nbsp;<b><?=$arResult['BONUSPAY']["CURRENT_BONUS_BUDGET_FORMATED"]?></b></div>
<?if(!$arResult['BONUSPAY']['USER_INPUT']){?>
<div><?=GetMessage('VBCHBB_SALE_ORDER_AJAX_P2')?>&nbsp;<?=$arResult['BONUSPAY']['MAXPAY']?></div>
<input type="hidden" name="BONUS_CNT" value="<?=$arResult['BONUSPAY']['MAXPAY']?>"/>
<?}?>
</p>
</div>
</label>
<?if($arResult['BONUSPAY']['USER_INPUT']){?>
<div>
<? if($arResult["USER_VALS"]["PAY_BONUS_ACCOUNT"]=="Y"){?>
<input type="text" id="bonus_pay" name="BONUS_CNT" placeholder="<?=$arResult['BONUSPAY']["MAXPAY"]?>" disabled="disabled"
  style="width:180px;" value="<?=$arResult['BONUSPAY']['MAXPAY']?>"/>
<input type="hidden" id="bonus_pay" name="BONUS_CNT" value="<?=$arResult['BONUSPAY']['MAXPAY']?>"/>
<?}else{?>
<input type="text" id="bonus_pay" name="BONUS_CNT" placeholder="<?=$arResult['BONUSPAY']["MAXPAY"]?>"
  style="width:180px;" value="<?=$arResult['BONUSPAY']['MAXPAY']?>"/>
<?}?>
</div>
<?}?>
<div class="clear"></div>
</div>
</div>
<?
}


Модификация файла summary.php

в нужном по дизайну месту вставляем компонент, который выводит количество бонусов за заказ


	 <?$APPLICATION->IncludeComponent("vbcherepanov:vbcherepanov.bonusfororder",".default",
   Array(
    "TYPE" => "ORDER",
    "RESULT" => $arResult,
    "CACHE_TYPE" => "A",
    "CACHE_TIME" => "3600"
  ),
false
);?>
Вместо строки ИТОГО:

вставляем код:


	 <?if($arResult['MINUS']){?>

<tr>
<td class="custom_t1" colspan="<?=$colspan?>" class="itog"><?=GetMessage("SOA_TEMPL_SUM_IT")?></td>
<td class="custom_t2" class="price"><?=$arResult["ORDER_TOTAL_PRICE_FORMATED"]?></td>
</tr>


<?if (strlen($arResult["PAYED_FROM_ACCOUNT_FORMATED"]) > 0)
{
?>
<tr>
<td class="custom_t1" colspan="<?=$colspan?>" class="itog"><?=GetMessage("VBCHBB_SALE_ORDER_AJAX_P9")?></td>
<td class="custom_t2" class="price"><?=$arResult["PAYED_FROM_ACCOUNT_FORMATED"]?></td>
</tr>
<?
}
if (strlen($arResult["PAYED_FROM_BONUS_FORMATED"]) > 0)
{
?>
<tr>
<td class="custom_t1" colspan="<?=$colspan?>" class="itog"><?=GetMessage("VBCHBB_SALE_ORDER_AJAX_P3")?></td>
<td class="custom_t2" class="price"><?=$arResult["PAYED_FROM_BONUS_FORMATED"]?></td>
</tr>
<?}?>
<tr>
<td class="custom_t1 fwb" colspan="<?=$colspan?>" class="itog"><?=GetMessage("SOA_TEMPL_SUM_LEFT_TO_PAY")?></td>
<td class="custom_t2 fwb" class="price"><?=$arResult["ORDER_TOTAL_LEFT_TO_PAY_FORMATED"]?></td>
</tr>

<?}
else
{
?>
<tr>
<td class="custom_t1 fwb" colspan="<?=$colspan?>" class="itog"><?=GetMessage("SOA_TEMPL_SUM_IT")?></td>
<td class="custom_t2 fwb" class="price"><?=$arResult["ORDER_TOTAL_PRICE_FORMATED"]?></td>
</tr>
<?
}

далее нам необходимо добавить языковые переменные

заходим в файл /lang/ru/template.php и в конце добавляем



	 $MESS['VBCHBB_SALE_ORDER_AJAX_P2']='Вы можете оплатить';
$MESS['VBCHBB_SALE_ORDER_AJAX_P1']='На Вашем бонусном счете есть';
$MESS['VBCHBB_SALE_ORDER_AJAX_P0']='Оплата со счета бонусов (не более ';
$MESS['VBCHBB_SALE_ORDER_AJAX_P3']='Оплачено с бонусного счета:';
$MESS['VBCHBB_SALE_ORDER_AJAX_P6']='Оплата с пользовательского счета (не более ';
$MESS['VBCHBB_SALE_ORDER_AJAX_P7']='Использовать БОНУСЫ ЗА ЗАКАЗ в качестве оплаты заказа';
$MESS['VBCHBB_SALE_ORDER_AJAX_P8']='Бонусов за заказ:';
$MESS['VBCHBB_SALE_ORDER_AJAX_P9']='Оплачено с внутреннего счета:';

на этом интеграция в компонент оформления заказ закончена!


ДЛЯ ВЫВОДА НОВОГО ШАБЛОНА ОФОРМЛЕНИЯ ЗАКАЗА (обновление 4.2.12)

1.необходимо выбрать шаблон компонента bonusD7
2. в параметрах компонента установить опцию Включить бонусную систему (см. скрин )

Включение бонусов в компоненте




Назад в раздел



Часто задаваемые вопросы по модулям экспорта.