Exemplo n.º 1
0
$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());
            }