Программный пересчет заказа в 1С-Битрикс

shape
shape
shape
shape
shape
shape
shape
shape


Если были добавлены скидки и нужно сделать перерасчет, можно так:
\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();

Нужно улучшить сайт

shape
shape
shape
shape
shape
shape
shape