add in total price block bonus count
This commit is contained in:
parent
2aadf9da3b
commit
94eed501e3
4 changed files with 185 additions and 151 deletions
|
@ -7892,140 +7892,6 @@ BX.namespace('BX.Sale.OrderAjaxComponent');
|
|||
propsNode.appendChild(propsCommentContainer);
|
||||
},
|
||||
|
||||
editTotalBlock: function()
|
||||
{
|
||||
if (!this.totalInfoBlockNode || !this.result.TOTAL)
|
||||
return;
|
||||
|
||||
var total = this.result.TOTAL,
|
||||
priceHtml, params = {},
|
||||
discText, valFormatted, i,
|
||||
curDelivery, deliveryError, deliveryValue,
|
||||
showOrderButton = this.params.SHOW_TOTAL_ORDER_BUTTON === 'Y';
|
||||
|
||||
BX.cleanNode(this.totalInfoBlockNode);
|
||||
|
||||
if (parseFloat(total.ORDER_PRICE) === 0)
|
||||
{
|
||||
priceHtml = this.params.MESS_PRICE_FREE;
|
||||
params.free = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
priceHtml = total.ORDER_PRICE_FORMATED;
|
||||
}
|
||||
|
||||
if (this.options.showPriceWithoutDiscount)
|
||||
{
|
||||
priceHtml += '<br><span class="bx-price-old">' + total.PRICE_WITHOUT_DISCOUNT + '</span>';
|
||||
}
|
||||
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_SUMMARY'), priceHtml, params));
|
||||
|
||||
if (this.options.showOrderWeight)
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_WEIGHT_SUM'), total.ORDER_WEIGHT_FORMATED));
|
||||
}
|
||||
|
||||
if (this.options.showTaxList)
|
||||
{
|
||||
for (i = 0; i < total.TAX_LIST.length; i++)
|
||||
{
|
||||
valFormatted = total.TAX_LIST[i].VALUE_MONEY_FORMATED || '';
|
||||
this.totalInfoBlockNode.appendChild(
|
||||
this.createTotalUnit(
|
||||
total.TAX_LIST[i].NAME + (!!total.TAX_LIST[i].VALUE_FORMATED ? ' ' + total.TAX_LIST[i].VALUE_FORMATED : '') + ':',
|
||||
valFormatted
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
params = {};
|
||||
curDelivery = this.getSelectedDelivery();
|
||||
deliveryError = curDelivery && curDelivery.CALCULATE_ERRORS && curDelivery.CALCULATE_ERRORS.length;
|
||||
|
||||
if (deliveryError)
|
||||
{
|
||||
deliveryValue = BX.message('SOA_NOT_CALCULATED');
|
||||
params.error = deliveryError;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (parseFloat(total.DELIVERY_PRICE) === 0)
|
||||
{
|
||||
deliveryValue = this.params.MESS_PRICE_FREE;
|
||||
params.free = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
deliveryValue = total.DELIVERY_PRICE_FORMATED;
|
||||
}
|
||||
|
||||
if (
|
||||
curDelivery && typeof curDelivery.DELIVERY_DISCOUNT_PRICE !== 'undefined'
|
||||
&& parseFloat(curDelivery.PRICE) > parseFloat(curDelivery.DELIVERY_DISCOUNT_PRICE)
|
||||
)
|
||||
{
|
||||
deliveryValue += '<br><span class="bx-price-old">' + curDelivery.PRICE_FORMATED + '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
if (this.result.DELIVERY.length)
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_DELIVERY'), deliveryValue, params));
|
||||
}
|
||||
|
||||
if (this.options.showDiscountPrice)
|
||||
{
|
||||
discText = this.params.MESS_ECONOMY;
|
||||
if (total.DISCOUNT_PERCENT_FORMATED && parseFloat(total.DISCOUNT_PERCENT_FORMATED) > 0)
|
||||
discText += total.DISCOUNT_PERCENT_FORMATED;
|
||||
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(discText + ':', total.DISCOUNT_PRICE_FORMATED, {highlighted: true}));
|
||||
}
|
||||
|
||||
if (this.options.showPayedFromInnerBudget)
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_IT'), total.ORDER_TOTAL_PRICE_FORMATED));
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_PAYED'), total.PAYED_FROM_ACCOUNT_FORMATED));
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_LEFT_TO_PAY'), total.ORDER_TOTAL_LEFT_TO_PAY_FORMATED, {total: true}));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_IT'), total.ORDER_TOTAL_PRICE_FORMATED, {total: true}));
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
if (!this.result.SHOW_AUTH)
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(
|
||||
BX.create('DIV', {
|
||||
props: {className: 'bx-soa-cart-total-button-container' + (!showOrderButton ? ' visible-xs' : '')},
|
||||
children: [
|
||||
BX.create('A', {
|
||||
props: {
|
||||
href: 'javascript:void(0)',
|
||||
className: 'btn btn-default btn-lg btn-order-save'
|
||||
},
|
||||
html: this.params.MESS_ORDER,
|
||||
events: {
|
||||
click: BX.proxy(this.clickOrderSaveAction, this)
|
||||
}
|
||||
})
|
||||
|
||||
]
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
this.editMobileTotalBlock();
|
||||
},
|
||||
|
||||
editMobileTotalBlock: function()
|
||||
{
|
||||
if (this.result.SHOW_AUTH)
|
||||
|
@ -8343,4 +8209,144 @@ BX.namespace('BX.Sale.OrderAjaxComponent');
|
|||
|
||||
paySystemNode.appendChild(paySystemItemsContainer);
|
||||
};
|
||||
|
||||
BX.Sale.OrderAjaxComponent.editTotalBlock = function()
|
||||
{
|
||||
if (!this.totalInfoBlockNode || !this.result.TOTAL)
|
||||
return;
|
||||
|
||||
var total = this.result.TOTAL,
|
||||
priceHtml, params = {},
|
||||
discText, valFormatted, i,
|
||||
curDelivery, deliveryError, deliveryValue,
|
||||
showOrderButton = this.params.SHOW_TOTAL_ORDER_BUTTON === 'Y';
|
||||
|
||||
BX.cleanNode(this.totalInfoBlockNode);
|
||||
|
||||
if (parseFloat(total.ORDER_PRICE) === 0)
|
||||
{
|
||||
priceHtml = this.params.MESS_PRICE_FREE;
|
||||
params.free = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
priceHtml = total.ORDER_PRICE_FORMATED;
|
||||
}
|
||||
|
||||
if (this.options.showPriceWithoutDiscount)
|
||||
{
|
||||
priceHtml += '<br><span class="bx-price-old">' + total.PRICE_WITHOUT_DISCOUNT + '</span>';
|
||||
}
|
||||
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_SUMMARY'), priceHtml, params));
|
||||
|
||||
if (this.options.showOrderWeight)
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_WEIGHT_SUM'), total.ORDER_WEIGHT_FORMATED));
|
||||
}
|
||||
|
||||
if (this.options.showTaxList)
|
||||
{
|
||||
for (i = 0; i < total.TAX_LIST.length; i++)
|
||||
{
|
||||
valFormatted = total.TAX_LIST[i].VALUE_MONEY_FORMATED || '';
|
||||
this.totalInfoBlockNode.appendChild(
|
||||
this.createTotalUnit(
|
||||
total.TAX_LIST[i].NAME + (!!total.TAX_LIST[i].VALUE_FORMATED ? ' ' + total.TAX_LIST[i].VALUE_FORMATED : '') + ':',
|
||||
valFormatted
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
params = {};
|
||||
curDelivery = this.getSelectedDelivery();
|
||||
deliveryError = curDelivery && curDelivery.CALCULATE_ERRORS && curDelivery.CALCULATE_ERRORS.length;
|
||||
|
||||
if (deliveryError)
|
||||
{
|
||||
deliveryValue = BX.message('SOA_NOT_CALCULATED');
|
||||
params.error = deliveryError;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (parseFloat(total.DELIVERY_PRICE) === 0)
|
||||
{
|
||||
deliveryValue = this.params.MESS_PRICE_FREE;
|
||||
params.free = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
deliveryValue = total.DELIVERY_PRICE_FORMATED;
|
||||
}
|
||||
|
||||
if (
|
||||
curDelivery && typeof curDelivery.DELIVERY_DISCOUNT_PRICE !== 'undefined'
|
||||
&& parseFloat(curDelivery.PRICE) > parseFloat(curDelivery.DELIVERY_DISCOUNT_PRICE)
|
||||
)
|
||||
{
|
||||
deliveryValue += '<br><span class="bx-price-old">' + curDelivery.PRICE_FORMATED + '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
if (this.result.DELIVERY.length)
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_DELIVERY'), deliveryValue, params));
|
||||
}
|
||||
|
||||
if (this.options.showDiscountPrice)
|
||||
{
|
||||
discText = this.params.MESS_ECONOMY;
|
||||
if (total.DISCOUNT_PERCENT_FORMATED && parseFloat(total.DISCOUNT_PERCENT_FORMATED) > 0)
|
||||
discText += total.DISCOUNT_PERCENT_FORMATED;
|
||||
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(discText + ':', total.DISCOUNT_PRICE_FORMATED, {highlighted: true}));
|
||||
}
|
||||
|
||||
//добавление строки с бонусами
|
||||
if (this.result.TOTAL.BONUS_PAYMENT !== undefined && this.result.TOTAL.BONUS_PAYMENT > 0) {
|
||||
const bonusPayment = this.result.TOTAL.BONUS_PAYMENT.toString();
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit('Бонусы:', bonusPayment, {highlighted: true}));
|
||||
}
|
||||
|
||||
if (this.options.showPayedFromInnerBudget)
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_IT'), total.ORDER_TOTAL_PRICE_FORMATED));
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_PAYED'), total.PAYED_FROM_ACCOUNT_FORMATED));
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_LEFT_TO_PAY'), total.ORDER_TOTAL_LEFT_TO_PAY_FORMATED, {total: true}));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(this.createTotalUnit(BX.message('SOA_SUM_IT'), total.ORDER_TOTAL_PRICE_FORMATED, {total: true}));
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
if (!this.result.SHOW_AUTH)
|
||||
{
|
||||
this.totalInfoBlockNode.appendChild(
|
||||
BX.create('DIV', {
|
||||
props: {className: 'bx-soa-cart-total-button-container' + (!showOrderButton ? ' visible-xs' : '')},
|
||||
children: [
|
||||
BX.create('A', {
|
||||
props: {
|
||||
href: 'javascript:void(0)',
|
||||
className: 'btn btn-default btn-lg btn-order-save'
|
||||
},
|
||||
html: this.params.MESS_ORDER,
|
||||
events: {
|
||||
click: BX.proxy(this.clickOrderSaveAction, this)
|
||||
}
|
||||
})
|
||||
|
||||
]
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
this.editMobileTotalBlock();
|
||||
};
|
||||
})();
|
|
@ -494,7 +494,8 @@ if (strlen($request->get('ORDER_ID')) > 0) {
|
|||
<!-- SIDEBAR BLOCK -->
|
||||
<div id="bx-soa-total" class="col-sm-3 bx-soa-sidebar">
|
||||
<div class="bx-soa-cart-total-ghost"></div>
|
||||
<div class="bx-soa-cart-total"></div>
|
||||
<div class="bx-soa-cart-total">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -56,6 +56,7 @@ class intaro_retailcrm extends CModule
|
|||
['EVENT_NAME' => 'OnSaleOrderCanceled', 'FROM_MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleOrderDeleted', 'FROM_MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleComponentOrderOneStepProcess', 'FROM_MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleComponentOrderResultPrepared', 'FROM_MODULE' => 'sale'],
|
||||
];
|
||||
|
||||
public const V5 = 'v5';
|
||||
|
|
|
@ -13,13 +13,18 @@
|
|||
namespace Intaro\RetailCrm\Component\Loyalty;
|
||||
|
||||
use Bitrix\Main\Event;
|
||||
use Bitrix\Main\HttpRequest;
|
||||
use Intaro\RetailCrm\Component\ConfigProvider;
|
||||
|
||||
/**
|
||||
* Class EventsHandlers
|
||||
*
|
||||
* @package Intaro\RetailCrm\Component\Loyalty
|
||||
*/
|
||||
class EventsHandlers
|
||||
{
|
||||
const BONUS_ERROR_MSG = 'Нельзя потратить такое количество бонусов';
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
|
@ -27,7 +32,7 @@ class EventsHandlers
|
|||
{
|
||||
AddMessage2Log('OnBeforeSalePaymentSetFieldHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
|
@ -35,7 +40,7 @@ class EventsHandlers
|
|||
{
|
||||
AddMessage2Log('OnBeforeEndBufferContentHandler work! ');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
|
@ -43,61 +48,82 @@ class EventsHandlers
|
|||
{
|
||||
AddMessage2Log('OnSaleOrderBeforeSavedHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderPaidHandler(Event $event): void
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderPaidHandler work! '. $event->getDebugInfo());
|
||||
AddMessage2Log('OnSaleOrderPaidHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleStatusOrderChangeHandler(Event $event): void
|
||||
{
|
||||
AddMessage2Log('OnSaleStatusOrderChangeHandler work! '. $event->getDebugInfo());
|
||||
AddMessage2Log('OnSaleStatusOrderChangeHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderSavedHandler(Event $event): void
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderSavedHandler work! '. $event->getDebugInfo());
|
||||
AddMessage2Log('OnSaleOrderSavedHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderCanceledHandler(Event $event): void
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderCanceledHandler work! '. $event->getDebugInfo());
|
||||
AddMessage2Log('OnSaleOrderCanceledHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderDeletedHandler(Event $event): void
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderDeletedHandler work! '. $event->getDebugInfo());
|
||||
AddMessage2Log('OnSaleOrderDeletedHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $arResult
|
||||
* @param $arUserResult
|
||||
* @param $arParams
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function OnSaleComponentOrderOneStepProcessHandler($arResult, $arUserResult, $arParams)
|
||||
{
|
||||
AddMessage2Log('OnSaleComponentOrderOneStepProcessHandler work! '. $arUserResult. $arParams);
|
||||
AddMessage2Log('OnSaleComponentOrderOneStepProcessHandler work! ' . $arUserResult . $arParams);
|
||||
return $arResult;
|
||||
}
|
||||
|
||||
public function OnSaleComponentOrderResultPrepared($order, $arUserResult, $request, $arParams, $arResult)
|
||||
public function OnSaleComponentOrderResultPreparedHandler($order, $arUserResult, HttpRequest $request, $arParams, &$arResult)
|
||||
{
|
||||
|
||||
if (ConfigProvider::getLoyaltyProgramStatus() === 'Y') {
|
||||
$isBonusError = false;
|
||||
$bonusInput = (int)$request->get('bonus-input');
|
||||
$availableBonuses = (int)$request->get('available-bonuses');
|
||||
|
||||
if ($bonusInput > $availableBonuses) {
|
||||
$arResult['LOYALTY']['ERROR'] = self::BONUS_ERROR_MSG;
|
||||
$isBonusError = true;
|
||||
}
|
||||
|
||||
if (
|
||||
$bonusInput > 0
|
||||
&& $availableBonuses > 0
|
||||
&& $isBonusError === false
|
||||
&& $arResult['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE'] > $bonusInput
|
||||
) {
|
||||
$arResult['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE'] = $arResult['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE'] - $bonusInput;
|
||||
$arResult['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE_FORMATED'] = number_format($arResult['JS_DATA']['TOTAL']['ORDER_TOTAL_PRICE'], 0, ',', ' ' );
|
||||
$arResult['JS_DATA']['TOTAL']['BONUS_PAYMENT'] = $bonusInput;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue