Здравствуйте ! Имеется страшная проблема с самописной корзиной.
При добавлении и при изменении количества товара в корзине, не применяются правила корзины по сумме товаров в корзине.
При этом группы пользователей, на которые распространяется правило установлено значение: Все пользователи (в том числе неавторизованные)
Странно то, что после 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();
}
|