1
0
Fork 0
mirror of synced 2025-04-20 01:21:01 +00:00

add in total price block bonus count

This commit is contained in:
Sergey Chazov 2020-10-01 13:33:01 +03:00
parent 82f4f33718
commit 7bccb0f959
4 changed files with 185 additions and 151 deletions

View file

@ -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();
};
})();

View file

@ -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>

View file

@ -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';

View file

@ -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;
}
}
}
}