Ситуация следующая: При оформлении заказа вводится купон, в корзине все считается нормально, скидки применяются и так далее. Но после оформления заказа в админке указывается цена без скидки, причем купон отображается, но в неактивном виде:
[URL=http://prntscr.com/mte6c9]http://prntscr.com/mte6c9[/URL]
Самое интересное, что если нажать "редактировать заказ", а потом кнопку "Пересчитать заказ" в админке, то купон применяется и все отображается корректно.
В чем проблема?
З.Ы. Думал на обработчик навесить функцию, которая будет автоматом пересчитывать заказ и применять купоны, но вот эта конструкция не работает (кроме того, применяется еще и подтягивается неверный тип цены (Подтягивается базовая цена, а для зарегистрированных пользователей должна подтягиваться цена для ИМ)
[CODE]use Bitrix\Main\Loader;
use Bitrix\Sale;
Loader::includeModule("sale");
$order = Sale\Order::load(27076);
Sale\DiscountCouponsManager::init(
Sale\DiscountCouponsManager::MODE_ORDER, [
"userId" => $order->getUserId(),
"orderId" => $order->getId()
]
);
$coupons = \Bitrix\Sale\DiscountCouponsManager::get(false, array());
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
foreach($coupons as $coup){
\Bitrix\Sale\DiscountCouponsManager::add($coup);
}
$discount = $order->getDiscount();
$discount->setOrderRefresh(true);
$discount->setApplyResult(array());
if (!($basket = $order->getBasket())) {
throw new \Bitrix\Main\ObjectNotFoundException('Корзины не найдено');
}
$basket->refreshData(array('PRICE', 'COUPONS'));
$discount->calculate();
$order->save();
\Bitrix\Sale\Provider::resetTrustData($order->getSiteId());
[/CODE]