$isNeedFieldsRestore = $_SERVER["REQUEST_METHOD"] == "POST" && !$isSavingOperation && !$isRefreshDataAndSaveOperation; //save order params if (($isSavingOperation || $isNeedFieldsRestore || $isRefreshDataAndSaveOperation) && $saleModulePermissions >= "U" && check_bitrix_sessid() && $result->isSuccess()) { if ($isSavingOperation || $isRefreshDataAndSaveOperation) { $order = OrderEdit::editOrderByFormData($_POST, $order, $USER->GetID(), true, $_FILES, $result); } if (($isSavingOperation || $isRefreshDataAndSaveOperation) && $result->isSuccess()) { if ($order) { $res = OrderEdit::saveCoupons($order->getUserId(), $_POST); if (!$res) { $result->addError(new \Bitrix\Main\Entity\EntityError("Can't save coupons!")); } $discount = $order->getDiscount(); if ($isRefreshDataAndSaveOperation) { \Bitrix\Sale\DiscountCouponsManager::clearApply(true); \Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true); $discount->setOrderRefresh(true); $discount->setApplyResult(array()); /** @var \Bitrix\Sale\Basket $basket */ if (!($basket = $order->getBasket())) { throw new \Bitrix\Main\ObjectNotFoundException('Entity "Basket" not found'); } $res = $basket->refreshData(array('PRICE', 'QUANTITY', 'COUPONS')); if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); } } $res = $discount->calculate(); if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); }