Нужно пересчитать заказ.
В заказе есть скидки
[CODE]$order = Sale\Order::load(221489);
$discount = $order->getDiscount();
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
$discount->setOrderRefresh(true);
$discount->setApplyResult(array());
if (!($basket = $order->getBasket()))
throw new \Bitrix\Main\ObjectNotFoundException('Entity "Basket" not found');
$res = $basket->refreshData(array('PRICE', 'COUPONS'));
$res = $discount->calculate();
$order->doFinalAction(true);
$order->save();[/CODE]
при выполнении такого кода скидки слетают, те которые еще не слетели, вместо того чтобы пересчитать
даже если убрать очистку
[CODE]
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
[/CODE]
все-равно слетают
в админке если нажать пересчет, то все встает на место, но мне нужно при получении заказа сделать пересчет
В чем может быть проблема?
В заказе есть скидки
[CODE]$order = Sale\Order::load(221489);
$discount = $order->getDiscount();
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
$discount->setOrderRefresh(true);
$discount->setApplyResult(array());
if (!($basket = $order->getBasket()))
throw new \Bitrix\Main\ObjectNotFoundException('Entity "Basket" not found');
$res = $basket->refreshData(array('PRICE', 'COUPONS'));
$res = $discount->calculate();
$order->doFinalAction(true);
$order->save();[/CODE]
при выполнении такого кода скидки слетают, те которые еще не слетели, вместо того чтобы пересчитать
даже если убрать очистку
[CODE]
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
[/CODE]
все-равно слетают
в админке если нажать пересчет, то все встает на место, но мне нужно при получении заказа сделать пересчет
В чем может быть проблема?