Перерасчет заказа на API
Одним методом не обойтись, тут надо комплексно заново применять все скидки и считать сумму. Пример есть в файле /bitrix/modules/sale/admin/order_edit.php:176
Если были добавлены скидки и нужно сделать перерасчет, можно так:
\Bitrix\Main\Loader::includeModule('sale'); $order = \Bitrix\Sale\Order::load($orderId); // или $order = \Bitrix\Sale\Order::loadByAccountNumber($orderNumber); $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'); } $basket->refreshData(array('PRICE', 'COUPONS')); $discount->calculate(); $order->save();
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.