День добрый.
мне нужно получить цены из корзины на товары со скидками.
решил воспользоваться событием 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 ) ) |