Как получить скидки в add2basket через ajax, для корзины незарегистрированных пользователей?

Код не отдаёт цены со скидками у незарегистрированных пользователей.
В правилах работы корзины ограничений нет: во вкладке ограничения -> Группы пользователей, на которые распространяется правило: Выбрано всё.
Причём код отрабатывает в компоненте, если не обращаться через 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;
  • Вопрос задан
  • 424 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы