/** * @param $formData * @return Sale\Order * @throws ArgumentNullException * @throws UserMessageException */ protected function getOrder(array $formData, Result &$result = null) { if (!isset($formData["ID"])) { $formData["ID"] = 0; } else { $formData["ID"] = intval($formData["ID"]); } if ($this->order !== null && !$this->formDataChanged && $this->order->getId() == $formData["ID"]) { return $this->order; } if (!$result) { $result = new Result(); } Admin\OrderEdit::initCouponsData(intval($formData["USER_ID"]) > 0 ? intval($formData["USER_ID"]) : 0, intval($formData["ID"]) > 0 ? intval($formData["ID"]) : 0, intval($formData["OLD_USER_ID"]) > 0 ? intval($formData["OLD_USER_ID"]) : null); if ($formData["ID"] > 0) { $this->order = Sale\Order::load($formData["ID"]); if (!$this->order) { throw new UserMessageException("Can't load order with id:\"" . $formData["ID"] . "\"!"); } } else { $this->order = Admin\OrderEdit::createOrderFromForm($formData, $this->userId, false, array(), $result); if (!$this->order) { throw new UserMessageException("Can't create order!"); } } $this->formDataChanged = false; return $this->order; }
} require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/lib/helpers/admin/orderedit.php"; $allowedStatusesView = array(); //load order if (!empty($_REQUEST["ID"]) && intval($_REQUEST["ID"]) > 0) { $saleOrder = Bitrix\Sale\Order::load($_REQUEST["ID"]); } if ($saleOrder) { $allowedStatusesView = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($USER->GetID(), array('view')); } if (!$saleOrder || !in_array($saleOrder->getField("STATUS_ID"), $allowedStatusesView)) { LocalRedirect("/bitrix/admin/sale_order.php?lang=" . LANGUAGE_ID . GetFilterParams("filter_", false)); } $ID = intval($_REQUEST["ID"]); /** @var Bitrix\Sale\Order $saleOrder */ Admin\OrderEdit::initCouponsData($saleOrder->getUserId(), $ID); CUtil::InitJSCore(); $APPLICATION->SetTitle(Loc::getMessage("SALE_OVIEW_TITLE", array("#ID#" => $saleOrder->getId(), "#NUM#" => strlen($saleOrder->getField('ACCOUNT_NUMBER')) > 0 ? $saleOrder->getField('ACCOUNT_NUMBER') : $saleOrder->getId(), "#DATE#" => $saleOrder->getDateInsert()->toString()))); \Bitrix\Main\Page\Asset::getInstance()->addJs("/bitrix/js/sale/admin/order_edit.js"); ob_start(); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/admin/order_history.php"; $historyContent = ob_get_contents(); ob_end_clean(); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; /* context menu */ $aMenu = array(); $aMenu[] = array("ICON" => "btn_list", "TEXT" => Loc::getMessage("SALE_OVIEW_TO_LIST"), "TITLE" => Loc::getMessage("SALE_OVIEW_TO_LIST_TITLE"), "LINK" => "/bitrix/admin/sale_order.php?lang=" . LANGUAGE_ID . GetFilterParams("filter_")); $aMenu[] = array("TEXT" => Loc::getMessage("SALE_OVIEW_TO_EDIT"), "TITLE" => Loc::getMessage("SALE_OVIEW_TO_EDIT_TITLE"), "LINK" => "/bitrix/admin/sale_order_edit.php?ID=" . $ID . "&lang=" . LANGUAGE_ID . GetFilterParams("filter_")); $arSysLangs = array(); $db_lang = CLangAdmin::GetList($b = "sort", $o = "asc", array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) {
$result->addError(new \Bitrix\Main\Entity\EntityError(GetMessage('SOE_ORDER_LOCKED2', array('#ID#' => $strLockUserInfo, '#DATE#' => $strLockTime)))); } $allowedStatusesView = array(); $order = Bitrix\Sale\Order::load($_REQUEST["ID"]); if ($order) { $allowedStatusesView = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($USER->GetID(), array('view')); } if (!$order || !in_array($order->getField("STATUS_ID"), $allowedStatusesView)) { LocalRedirect("/bitrix/admin/sale_order.php?lang=" . LANGUAGE_ID . GetFilterParams("filter_", false)); } $allowedStatusesEdit = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($USER->GetID(), array('edit')); if (!in_array($order->getField("STATUS_ID"), $allowedStatusesEdit)) { LocalRedirect("/bitrix/admin/sale_order_view.php?ID=" . $ID . "&lang=" . LANGUAGE_ID . GetFilterParams("filter_")); } $userId = isset($_POST["USER_ID"]) ? intval($_POST["USER_ID"]) : $order->getUserId(); OrderEdit::initCouponsData($userId, $ID, isset($_POST["OLD_USER_ID"]) ? intval($_POST["USER_ID"]) : $userId); if (!$boolLocked) { \Bitrix\Sale\Order::lock($ID); } $isSavingOperation = $_SERVER["REQUEST_METHOD"] == "POST" && (isset($_POST["apply"]) || isset($_POST["save"])); $isRefreshDataAndSaveOperation = $_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["refresh_data_and_save"]) && $_POST["refresh_data_and_save"] == "Y"; $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 ($isRefreshDataAndSaveOperation) { /** @var \Bitrix\Sale\Basket $basket */ if (!($basket = $order->getBasket())) { throw new \Bitrix\Main\ObjectNotFoundException('Entity "Basket" not found');