При использовании метода CSaleDiscount::DoProcessOrder для получение цен с учетом "правил работы с корзиной" получил неожиданный результат при котором правильная цена отдавалась не всегда.
По совету техподдержки решил проблему таким кодом:
По совету техподдержки решил проблему таким кодом:
Код |
---|
$basket = \Bitrix\Sale\Basket::loadItemsForFUser( \Bitrix\Sale\Fuser::getId(), \Bitrix\Main\Context::getCurrent()->getSite() ); // текущая корзина $fuser = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId(true)); $discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $fuser); $discounts->calculate(); $result = $discounts->getApplyResult(true); $prices = $result['PRICES']['BASKET']; // цены товаров с учетом скидки print_r($prices); |