use Bitrix\Main\Application; use \Bitrix\Main\Page\Asset; use \Bitrix\Sale\Order; use Bitrix\Main\Localization\Loc; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/include.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php"); $moduleId = "sale"; Bitrix\Main\Loader::includeModule('sale'); $saleModulePermissions = $APPLICATION->GetGroupRight("sale"); if ($saleModulePermissions == "D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); IncludeModuleLangFile(__FILE__); CUtil::InitJSCore(); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/lib/helpers/admin/orderedit.php"); Asset::getInstance()->addCss('/bitrix/themes/.default/sale.css'); /** @var null|\Bitrix\Sale\Order $saleOrder */ $saleOrder = null; $shipment = null; $dataArray = array(); $dataForRecovery = array(); $errors = array(); $request = Application::getInstance()->getContext()->getRequest(); $lang = Application::getInstance()->getContext()->getLanguage(); $orderId = intval($request->get('order_id')); $shipmentId = intval($request->get('shipment_id')); $siteId = Application::getInstance()->getContext()->getSite(); $backUrl = $request->get('backurl'); $save = $_SERVER["REQUEST_METHOD"] == "POST" && (isset($_POST["apply"]) || isset($_POST["save"])); $refresh = $_SERVER["REQUEST_METHOD"] == "POST" && !$save; if($orderId <= 0 || !($saleOrder = Bitrix\Sale\Order::load($orderId))) LocalRedirect("/bitrix/admin/sale_order.php?lang=".$lang.GetFilterParams("filter_", false)); $shipmentCollection = $saleOrder->getShipmentCollection(); if ($request->get('delete') == 'Y' && check_bitrix_sessid()) { $shipment = $shipmentCollection->getItemById($shipmentId); if ($shipment) { $delResult = $shipment->delete(); if (!$delResult->isSuccess()) { $errors = $delResult->getErrorMessages(); } else { $result = $saleOrder->save(); if ($result->isSuccess()) { if ($backUrl) LocalRedirect($backUrl); else LocalRedirect('/bitrix/admin/sale_order_shipment.php?lang='.$lang.GetFilterParams('filter_', false)); } else { $errors = $result->getErrorMessages(); } } } } if ($request->isPost() && ($save || $refresh) && check_bitrix_sessid()) { $result = \Bitrix\Sale\Helpers\Admin\Blocks\OrderShipment::updateData($saleOrder, $request->get('SHIPMENT')); $data = $result->getData(); $shipment = array_shift($data['SHIPMENT']); if ($result->isSuccess() && $save) { $saveResult = $saleOrder->save(); if ($saveResult->isSuccess()) { $shipmentId = $shipment->getId(); if (strlen($request->getPost("apply")) == 0) { if ($backUrl) LocalRedirect($backUrl); else LocalRedirect("/bitrix/admin/sale_order_shipment.php?lang=".$lang.GetFilterParams("filter_", false)); } else { LocalRedirect("/bitrix/admin/sale_order_shipment_edit.php?lang=".$lang."&order_id=".$orderId."&shipment_id=".$shipmentId."&backurl=".urlencode($backUrl).GetFilterParams("filter_", false)); } } else { $result->addErrors($saveResult->getErrors()); $errors = $result->getErrorMessages(); if (empty($errors)) $errors[] = Loc::getMessage('SOPE_SHIPMENT_ERROR_MESSAGE'); $dataForRecovery = $request->get('SHIPMENT'); } } else { if (!$refresh) { $errors = $result->getErrorMessages(); if (empty($errors)) $errors[] = Loc::getMessage('SOPE_SHIPMENT_ERROR_MESSAGE'); } $dataForRecovery = $request->get('SHIPMENT'); } } else { $new = true; if ($shipmentId > 0) { $shipment = $saleOrder->getShipmentCollection()->getItemById($shipmentId); if ($shipment) $new = false; } if ($new) { $shipment = $saleOrder->getShipmentCollection()->createItem(); \Bitrix\Sale\Helpers\Admin\Blocks\OrderShipment::setShipmentByDefaultValues($shipment); } } if ($shipmentId) $title = str_replace("#ID#", $shipmentId, GetMessage("EDIT_ORDER_SHIPMENT")); else $title = GetMessage("NEW_ORDER_SHIPMENT"); $APPLICATION->SetTitle($title); if ($shipmentId > 0) { global $entity; $entity = array( 'ENTITY' => 'SHIPMENT', 'ENTITY_ID' => $shipmentId ); $_GET['ID'] = $orderId; 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"); $aMenu = array(); $aMenu[] = array( "ICON" => "btn_list", "TEXT" => Loc::getMessage("SOPE_SHIPMENT_TRANSITION"), "TITLE"=> Loc::getMessage("SOPE_SHIPMENT_TRANSITION_TITLE"), "LINK" => "/bitrix/admin/sale_order_view.php?ID=".$orderId."&lang=".$lang.GetFilterParams("filter_") ); if (!$new) { $aMenu[] = array( "TEXT" => Loc::getMessage("SOPE_SHIPMENT_DELETE"), "TITLE" => Loc::getMessage("SOPE_SHIPMENT_DELETE_TITLE"), "LINK" => 'javascript:void(0)', "ONCLICK" => "if(confirm('".Loc::getMessage('SOPE_SHIPMENT_DELETE_MESSAGE')."')) window.location.href='/bitrix/admin/sale_order_shipment_edit.php?order_id=".$orderId."&shipment_id=".$shipmentId."&delete=Y&".bitrix_sessid_get()."&lang=".$lang.GetFilterParams("filter_")."'" ); } $aMenu[] = array( "TEXT" => Loc::getMessage("SOPE_SHIPMENT_LIST"), "TITLE"=> Loc::getMessage("SOPE_SHIPMENT_LIST_TITLE"), "LINK" => "/bitrix/admin/sale_order_shipment.php?lang=".$lang.GetFilterParams("filter_") ); if (!$new) { $arSysLangs = array(); $db_lang = CLangAdmin::GetList(($b="sort"), ($o="asc"), array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) $arSysLangs[] = $arLang["LID"]; $arReports = array(); $dirs = array( $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/reports/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/reports/" ); foreach ($dirs as $dir) { if (file_exists($dir)) { if ($handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { $file_contents = ''; if ($file == "." || $file == ".." || $file == ".access.php") continue; if (is_file($dir.$file) && ToUpper(substr($file, -4)) == ".PHP") { $rep_title = $file; if ($dir == $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/reports/") { if (is_file($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/ru/reports/".$file)) $file_contents = file_get_contents($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/ru/reports/".$file); } if (empty($file_contents)) $file_contents = file_get_contents($dir.$file); $rep_langs = ""; $arMatches = array(); if (preg_match("#