Здравствуйте ! Имеется страшная проблема с самописной корзиной.
При добавлении и при изменении количества товара в корзине, не применяются правила корзины по сумме товаров в корзине.
При этом группы пользователей, на которые распространяется правило установлено значение: Все пользователи (в том числе неавторизованные)
Странно то, что после AJAX запроса, в странице корзины, скидки применяются только после двух обновлений страницы.
Грешил на сессию, но я передаю параметр BX.bitrix_sessid в POST переменой sessid.
Обернул add2cart.php в компонент - не помогло.
Залогиненные пользователи видят скидку в корзине без проблем через AJAX запрос.
При добавлении и при изменении количества товара в корзине, не применяются правила корзины по сумме товаров в корзине.
При этом группы пользователей, на которые распространяется правило установлено значение: Все пользователи (в том числе неавторизованные)
Странно то, что после AJAX запроса, в странице корзины, скидки применяются только после двух обновлений страницы.
Грешил на сессию, но я передаю параметр BX.bitrix_sessid в POST переменой sessid.
Обернул add2cart.php в компонент - не помогло.
Залогиненные пользователи видят скидку в корзине без проблем через AJAX запрос.
Код |
---|
// Часть кода /local/ajax/add2cart.php $site_id = \Bitrix\Main\Context::getCurrent()->getSite(); // .... $basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), $site_id); 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->calculate(); $discounts = $discount->getShowPrices(); } |