объект корзины ($basket = Basket::loadItemsForFUser(...))
Выполняю метод $basket->refreshData(...)
Скидки по правилам работы корзины на этом этапе не учитываются у товаров
Для расчета использую $discounts = \Bitrix\Sale\Discount::loadByBasket(...)
Непосредственно рассчитываю: $discounts->calculate()
И могу получить цены на товары с учетом правил работы корзины: $discountsArray = $discounts->getApplyResult(...)
Получается для того, чтобы применить цены к товарам нужно пройти циклом через элементы объекта Basket и записать цену из массива $discountsArray. Только так возможно сделать? Нельзя ли как-то применить скидки к объекту Basket?
\Bitrix\Sale\BasketBase::applyDiscount
Не совсем понял, что туда нужно передать, метод недокументированный.. Аргумент array $basketRows - что должен принимать?
попробуй создать заказ и ему сделать doFinalActions
Кажется понял что нужно сделать
$r = $discounts->calculate(); if ($r->isSuccess() && ($discountData = $r->getData())) { $z = $basket->applyDiscount($discountData['BASKET_ITEMS']); }
Обсуждают сегодня