Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- AddEventHandler("catalog", "OnGetDiscount","OnGetDiscount");
- /**
- * Вызывается в методе CCatalogDiscount::GetDiscount перед получением всех скидок
- * @return bool true
- */
- function OnGetDiscount($intProductID, $intIBlockID, $arCatalogGroups,
- $arUserGroups, $strRenewal, $siteID, $arDiscountCoupons, $boolSKU, $boolGetIDS){
- //error_log(print_r($_REQUEST,true), 3, $_SERVER["DOCUMENT_ROOT"] . "/error_log.txt");
- if($_REQUEST['action']!='addProductToBasket') {
- error_log('no'.PHP_EOL, 3, $_SERVER["DOCUMENT_ROOT"] . "/error_log.txt");
- return false;
- }
- else {
- //error_log($_REQUEST['action'], 3, $_SERVER["DOCUMENT_ROOT"] . "/error_log.txt");
- return true;
- }
- }
- AddEventHandler("sale", "OnSaleComponentOrderResultPrepared","OnSaleComponentOrderResultPrepared");
- use Bitrix\Highloadblock as HL;
- function OnSaleComponentOrderResultPrepared($order, &$arUserResult, $request,&$arParams,&$arResult){
- error_log('5', 3, $_SERVER["DOCUMENT_ROOT"] . "/error_log.txt");
- //if($request->isAdminSection())
- //return true;
- /*Скидки через HL*/
- Bitrix\Main\Loader::includeModule('highloadblock');
- $hlBlockId = 3;
- $hlblock = HL\HighloadBlockTable::getById($hlBlockId)->fetch();
- $entity = HL\HighloadBlockTable::compileEntity($hlblock);
- $dataClass = $entity->getDataClass();
- $basket = $order->getBasket();
- foreach ($arResult['BASKET_ITEMS'] as &$item){
- $result5 = $dataClass::getList([//запрос скидки из HighloadBlock
- "select" => array('UF_PROD_ID','UF_DISC_VAL'),
- "order" => array("ID" => "DESC"),
- "filter" => array('UF_PROD_ID' => $item['PRODUCT_ID'])
- ]);
- //die($item['PRODUCT_ID']);
- if($arElement2 = $result5->fetch())
- $discval = $arElement2['UF_DISC_VAL'];
- if(!empty($discval) && $discval>0) {
- $discdiff = (floatval($item['BASE_PRICE'])*floatval($discval))/100;
- $discprice = floatval($item['BASE_PRICE'])-floatval($discdiff);
- $item["DISCOUNT_PRICE"] = $discprice;
- $item["DISCOUNT_PRICE_PERCENT"] = $discval;
- $item["DISCOUNT_PRICE_PERCENT_FORMATED"] = Bitrix\Sale\PriceMaths::roundPrecision($item["DISCOUNT_PRICE_PERCENT"])."%";
- $item["PRICE_FORMATED"] = SaleFormatCurrency($item["DISCOUNT_PRICE"], $order->getCurrency());
- //Установка цены у товара
- $basketItem = $basket->getItemByBasketCode($item['ID']);
- $basketItem->setField('CUSTOM_PRICE', 'Y');
- $basketItem->setField('PRICE', $discprice);
- $basketItem->setField('DISCOUNT_PRICE', $discprice);
- }
- }
- $order->setFieldNoDemand('PRICE_DELIVERY', 0);//исправление цены доставки
- $order->refreshData();
- $payment = $order->getPaymentCollection()[0];
- $payment->setField('SUM', $order->getPrice());//Изменение суммы к оплате
- $arResult["ORDER_PRICE"] = $basket->getPrice();
- $arResult["ORDER_PRICE_FORMATED"] = SaleFormatCurrency($basket->getPrice(), $order->getCurrency());
- $arResult["ORDER_TOTAL_PRICE"] = $order->getPrice();
- $arResult["ORDER_TOTAL_PRICE_FORMATED"] = SaleFormatCurrency($order->getPrice(), $order->getCurrency());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement