День добрый.
мне нужно получить цены из корзины на товары со скидками.
решил воспользоваться событием OnSaleBasketSaved
в $result вижу что есть скидка
но нет суммы $result["PRICES"]['BASKET'] для товара
При этом если сделать расчет на отдельной странице, а не на событии все в наличии
мне нужно получить цены из корзины на товары со скидками.
решил воспользоваться событием OnSaleBasketSaved
Код |
---|
public function OnSaleBasketBeforeSaved_v_32(\Bitrix\Main\Event $event) { global $USER; if(!is_object($USER)){ $USER = new CUser(); } $userId=$USER->GetID(); if ($userId=="81035" ){//Пока выводим только для меня $basket = $event->getParameter("ENTITY"); $discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId(true))); $discounts->calculate(); $result = $discounts->getApplyResult(true); $basketItems = $basket->getBasketItems(); $resultitem=[]; foreach ($basketItems as $basketItem ) { $basketCode = $basketItem->getBasketCode(); if (isset($result["PRICES"]['BASKET'][$basketCode])) { $sum = $result["PRICES"]['BASKET'][$basketCode]["PRICE"]*$basketItem->getQuantity(); } else { $sum = $basketItem->getFinalPrice(); } $resultitem[$basketItem->getId()]=$sum; } file_put_contents($_SERVER["DOCUMENT_ROOT"]."/event_32.txt", "\n** ".date("d.m.Y H:i:s")." ****". __FILE__ ." ". __LINE__ ."*****result*****\n".print_r($resultitem, true), FILE_APPEND | LOCK_EX); } } |
в $result вижу что есть скидка
Код |
---|
Array ( [BASKET_ROUND] => Array ( [2074986] => Array ( [APPLY] => Y [ROUND_RULE] => Array ( [PRICE] => 0.0000 [ROUND_TYPE] => 1 [ROUND_PRECISION] => 1.0000 [CATALOG_GROUP_ID] => 1 ) ) ) [DISCOUNT_LIST] => Array ( [392] => Array ( [ID] => 392 [NAME] => Сделай заказ на 3000 рублей и получи скидку 500 рублей. [MODULE_ID] => sale [DISCOUNT_ID] => 392 [USE_COUPONS] => N [ACTIONS_DESCR] => Array ( [BASKET] => скидка 500 на общую сумму группы товаров ) [ACTIONS_DESCR_DATA] => Array ( [BASKET] => Array ( [0] => Array ( [TYPE] => 2 [VALUE] => 500 [VALUE_TYPE] => S [VALUE_ACTION] => D [VALUE_UNIT] => RUB ) ) ) [APPLY] => Y [EDIT_PAGE_URL] => /bitrix/admin/sale_discount_edit.php?lang=ru&ID=254 ) ) [COUPON_LIST] => Array ( ) [RESULT] => Array ( [BASKET] => Array ( [2074986] => Array ( [0] => Array ( [DISCOUNT_ID] => 392 [COUPON_ID] => [APPLY] => Y [DESCR] => Array ( [0] => скидка 500 на общую сумму группы товаров ) ) ) ) [DELIVERY] => Array ( ) ) ) |
но нет суммы $result["PRICES"]['BASKET'] для товара
При этом если сделать расчет на отдельной странице, а не на событии все в наличии
Код |
---|
[PRICES] => Array ( [BASKET] => Array ( [2074986] => Array ( [BASE_PRICE] => 1799.0000 [PRICE] => 1579.4 [DISCOUNT] => 219.6 ) [2074988] => Array ( [BASE_PRICE] => 249.0000 [PRICE] => 218.6 [DISCOUNT] => 30.4 ) ) [DELIVERY] => Array ( [BASE_PRICE] => [PRICE] => 0 [DISCOUNT] => 0 ) ) |