+7 (843) 207-01-46 - Казань
+7 (843) 207-01-46 - Казань

Интеграция в кастомный шаблон оформления заказа битрикс

Новый вариант шаблона битрикс

Если Вы используете не стандартный компонент, или шаблон компонента оформления заказа, то Вам необходимо просто добавить участки кода, отвечающие за модуль бонусной системы.

Примеры кода Вы также, можете посмотреть в шаблоне new_logictim_bonus

Участки кода, которые необходимо добавить:

  1. файл /bitrix/components/bitrix/sale.order.ajax/templates/new_logictim_bonus/order_ajax.js

    Скрываем свойства заказа с бонусами:
    в метод
    getPropertyRowNode: function(property, propsItemsContainer, disabled)
    перед
    propsItemsContainer.appendChild(propsItemNode);
    вставляем код (чтобы указанная выше строка попадала под условие)
    if(property.getSettings().CODE != 'LOGICTIM_ADD_BONUS' && property.getSettings().CODE != 'LOGICTIM_PAYMENT_BONUS')


    Выводим информацию, сколькими бонусами оплачивают заказ:
    в метод
    editTotalBlock: function()
    перед
    if (this.options.showPayedFromInnerBudget)
    вставляем
    <!--LOGICTIM_BONUS-->
    //console.log(this.result.LOGICTIM_BONUS);
    if(this.result.LOGICTIM_BONUS != null && this.result.LOGICTIM_BONUS.LOGICTIM_BONUS_USER_DOSTUP == 'Y')
    {
        if(this.BXFormPosting == true)
        {
            var logictimPayBonus = this.result.LOGICTIM_BONUS.PAY_BONUS;
            var logictimPayBonusFormated = this.result.LOGICTIM_BONUS.PAY_BONUS_FORMATED;
            if(this.result.LOGICTIM_BONUS.INPUT_BONUS == '-')
            {
                logictimPayBonus = 0;
                this.result.TOTAL.ORDER_TOTAL_PRICE_FORMATED = this.result.LOGICTIM_BONUS.ORDER_SUM_FORMATED;
            }
        }
        else
        {
            var logictimPayBonus = this.result.LOGICTIM_BONUS.PAY_BONUS_NO_POST;
            var logictimPayBonusFormated = this.result.LOGICTIM_BONUS.PAY_BONUS_NO_POST_FORMATED;
        }
        
        if(logictimPayBonus >= 0)
        {
            var logictimPayBonusText = this.result.LOGICTIM_BONUS.TEXT_BONUS_PAY;
            
            if(logictimPayBonus > 0)
            this.totalInfoBlockNode.appendChild(this.createTotalUnit(logictimPayBonusText, '<span>'+logictimPayBonusFormated+'</span>'));
            
            var orderPropPaymentBonusId = this.result.LOGICTIM_BONUS.ORDER_PROP_PAYMENT_BONUS_ID;
            
            if(BX('LOGICTIM_PAYMENT_BONUS'))
            {
                if(BX('LOGICTIM_PAYMENT_BONUS').name != 'ORDER_PROP_'+orderPropPaymentBonusId)
                {
                    BX.adjust(BX('LOGICTIM_PAYMENT_BONUS'), {attrs: {name: 'ORDER_PROP_'+orderPropPaymentBonusId}});
                }
                
                var logictimPayInput = BX('LOGICTIM_PAYMENT_BONUS').value;
                BX('LOGICTIM_PAYMENT_BONUS').value = logictimPayBonus;
            }
        }
    }
    <!--LOGICTIM_BONUS-->

    Выводим информацию, сколько бонусов будет начислено за заказ:
    в метод
    editTotalBlock: function()
    после
    if (parseFloat(total.PAY_SYSTEM_PRICE) >= 0 && this.result.DELIVERY.length)
    {
    	this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_PAYSYSTEM_PRICE'), '~' + total.PAY_SYSTEM_PRICE_FORMATTED));
    }
    вставляем
    <!--LOGICTIM_BONUS-->
    if(this.result.LOGICTIM_BONUS && this.result.LOGICTIM_BONUS.LOGICTIM_BONUS_USER_DOSTUP == 'Y') {
    var logictimAddBonusText = this.result.LOGICTIM_BONUS.TEXT_BONUS_BALLS; if(this.result.LOGICTIM_BONUS.ADD_BONUS > 0)
    this.totalInfoBlockNode.appendChild(this.createTotalUnit(logictimAddBonusText, '<span>'+this.result.LOGICTIM_BONUS.ADD_BONUS+'</span>'));

    var lb_pay_block = BX('logictim_payfield_bonus');
    if(this.result.LOGICTIM_BONUS.MAX_BONUS <= 0 && BX('logictim_payfield_bonus'))
    BX.hide(lb_pay_block);
    if(this.result.LOGICTIM_BONUS.MAX_BONUS > 0 && BX('logictim_payfield_bonus'))
    {
    BX.show(lb_pay_block);
    BX('ORDER_PROP_'+this.result.LOGICTIM_BONUS.ORDER_PROP_PAYMENT_BONUS_ID).value = logictimPayBonus;
    }
    }
    <!--LOGICTIM_BONUS-->

    Выводим информацию, сколько бонусов будет начислено за каждую позицию заказа:
    в метод 
    createBasketItemColumn: function(column, allData, active)
    после
    else if (column.id == 'SUM')
    			{
    				textNode.appendChild(BX.create('STRONG', {props: {className: 'bx-price all'}, html: data.SUM}));
    				if (parseFloat(data.DISCOUNT_PRICE) > 0)
    				{
    					textNode.appendChild(BX.create('BR'));
    					textNode.appendChild(BX.create('STRONG', {
    						props: {className: 'bx-price-old'},
    						html: data.SUM_BASE_FORMATED
    					}));
    				}
    вставляем
    <!--LOGICTIM_BONUS-->
    if(this.result.LOGICTIM_BONUS && this.result.LOGICTIM_BONUS.LOGICTIM_BONUS_USER_DOSTUP == 'Y') {
        if(this.result.LOGICTIM_BONUS.ARR_BONUS)
           var add_bonus_item = this.result.LOGICTIM_BONUS.ARR_BONUS.ITEMS[data.PRODUCT_ID].ADD_BONUS;
        if(add_bonus_item > 0)
        {
            textNode.appendChild(BX.create('div', {props: {className: 'bonus'}, html: '+'+add_bonus_item+' '+this.result.LOGICTIM_BONUS.TEXT_BONUS_FOR_ITEM}));
        }
    }
    <!--LOGICTIM_BONUS-->


  2. файл /bitrix/components/bitrix/sale.order.ajax/templates/new_logictim_bonus/template.php
    Выводим поле для оплаты бонусами:
    перед
    <!--	ORDER SAVE BLOCK	-->
    Вставляем
    <? //-------LOGICTIM BONUS FEILD-------//?>
    
    <? if(isset($arResult["PAY_BONUS"]) && $arResult["PAY_BONUS"] >= 0 && $arResult["USER_BONUS"] > 0) :?>
    <div id="bonus_payment_block" class="bx-soa-section">
    	<div class="bx-soa-section-title-container">
    		<h2 class="bx-soa-section-title col-sm-9">
    			<span class="bx-soa-section-title-count"></span>Оплата бонусами
    		</h2>
    	</div>
    	<div class="bx-soa-section-content">
    		<div class="bonus_comment">
    			<strong><?=COption::GetOptionString("logictim.balls", "HAVE_BONUS_TEXT", 'Have bonus')?>  <?=$arResult["USER_BONUS"]?></strong>
    			<? if($arResult["MIN_BONUS"] > 0) {?>
    				<span><br><?=COption::GetOptionString("logictim.balls", "MIN_BONUS_TEXT", 'Min use bonus').$arResult["MIN_BONUS"];?></span>
    			<? }?>
    			<? if($arResult["MAX_BONUS"] > 0) {?>
    			<span><br><?=COption::GetOptionString("logictim.balls", "MAX_BONUS_TEXT", 'Max use bonus').$arResult["MAX_BONUS"];?></span>
    			<? }?>
    			<div><br></div></div>
    			<div id="bonus_payfield_block">
    				<strong><?=COption::GetOptionString("logictim.balls", "PAY_BONUS_TEXT", 'Pay from bonus')?></strong>
    				<div class="bx-soa-coupon-input">
    					<input type="text" id="LOGICTIM_PAYMENT_BONUS" class="form-control bx-ios-fix" onchange="RS.Sale.OrderAjaxComponent.sendRequest();" value="<?=$arResult["PAY_BONUS"]?>" name="ORDER_PROP_<?=$arResult["ORDER_PROP_PAYMENT_BONUS_ID"]?>">
    				</div>
    			</div>
    		</div>
       </div>
    <? endif;?>
    
    <? //-------LOGICTIM BONUS FEILD-------//?>   
  3. В файлы style.css, и style.min.css
    Добавить стили:
    .logictim_bonus_input_block .lg_description span{font-size:12px;color:#a3a3a3;}






Возврат к списку