Код не отдаёт цены со скидками у незарегистрированных пользователей.
В правилах работы корзины ограничений нет: во вкладке ограничения -> Группы пользователей, на которые распространяется правило: Выбрано всё.
Причём код отрабатывает в компоненте, если не обращаться через AJAX. Мне кажется, что что-то с сессией.
$uid = \Bitrix\Sale\Fuser::getId(true);
$fullBasket = Sale\Basket::loadItemsForFUser($uid, SITE_ID);
$discount = Bitrix\Sale\Discount::loadByBasket($fullBasket);
$discountResult = $discount->calculate();
if ($discountResult->isSuccess()) {
$BB = $discount->getShowPrices();
} else {
$BB = false;
}
Выявил что скидка не приходит после обновления или создания товара.
А после удаления $item->delete(); - скидка остаётся.
if($type == 'update') {
$basketItems = $basket->getBasketItems();
foreach($basketItems as $item){
if($item->getProductId() == $productId) {
$fields = [
'QUANTITY' => (int) $quantity
];
$item->setFields($fields);
}
}
$basket->save();
}
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), $site_id);
$discount = Bitrix\Sale\Discount::loadByBasket($basket);
if($discount): //discount пуст (
$discount->calculate();
$discounts = $discount->getShowPrices();
endif;