'; } $saleModulePermissions = $APPLICATION->GetGroupRight("sale"); if ($saleModulePermissions == "D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); IncludeModuleLangFile(__FILE__); \Bitrix\Main\Loader::registerAutoLoadClasses('sale', array( '\Bitrix\Sale\Helpers\Admin\Blocks\OrderShipmentStatus' => 'lib/helpers/admin/blocks/ordershipmentstatus.php', )); $ID = (isset($_REQUEST['ID']) ? (int)$_REQUEST['ID'] : 0); $errorMessage = ""; if ($ID <= 0) { if ($crmMode) CRMModeOutput("Order is not found"); else LocalRedirect("sale_order.php?lang=".LANGUAGE_ID.GetFilterParams("filter_", false)); } $arUserGroups = $USER->GetUserGroupArray(); $intUserID = intval($USER->GetID()); // basket table columns settings form define("PROP_COUNT_LIMIT", 21); $arUserColumns = array(); $arIblockProps = array(); $columns = CUserOptions::GetOption("order_basket_table", "table_columns"); $arSelectProps = array(); if ($columns) { $arTmpColumns = explode(",", $columns["columns"]); if (CModule::IncludeModule("iblock")) { $count = 0; foreach ($arTmpColumns as $id => $columnCode) { if (strncmp($columnCode, "PROPERTY_", 9) == 0) { if ($count >= PROP_COUNT_LIMIT) continue; $propCode = substr($columnCode, 9); if ($propCode == '') continue; $arSelectProps[] = $columnCode; $dbres = CIBlockProperty::GetList(array(), array("CODE" => $propCode)); if ($arres = $dbres->GetNext()) { $arUserColumns[$columnCode] = $arres["NAME"]; $arIblockProps[$columnCode] = $arres; } $count++; } else { $arUserColumns[$columnCode] = GetMessage("SOD_".$columnCode); } } } } else { $arUserColumns = array( "COLUMN_NUMBER" => GetMessage("SOD_COLUMN_NUMBER"), "COLUMN_IMAGE" => GetMessage("SOD_COLUMN_IMAGE"), "COLUMN_NAME" => GetMessage("SOD_COLUMN_NAME"), "COLUMN_QUANTITY" => GetMessage("SOD_COLUMN_QUANTITY"), "COLUMN_REMAINING_QUANTITY" => GetMessage("SOD_COLUMN_REMAINING_QUANTITY"), "COLUMN_PROPS" => GetMessage("SOD_COLUMN_PROPS"), "COLUMN_PRICE" => GetMessage("SOD_COLUMN_PRICE"), "COLUMN_SUM" => GetMessage("SOD_COLUMN_SUM"), ); } $customTabber = new CAdminTabEngine("OnAdminSaleOrderView", array("ID" => $ID)); $arTransactTypes = array( "ORDER_PAY" => GetMessage("SOD_PAYMENT"), "CC_CHARGE_OFF" => GetMessage("SOD_FROM_CARD"), "OUT_CHARGE_OFF" => GetMessage("SOD_INPUT"), "ORDER_UNPAY" => GetMessage("SOD_CANCEL_PAYMENT"), "ORDER_CANCEL_PART" => GetMessage("SOD_CANCEL_SEMIPAYMENT"), "MANUAL" => GetMessage("SOD_HAND"), "DEL_ACCOUNT" => GetMessage("SOD_DELETE"), "AFFILIATE" => GetMessage("SOD1_AFFILIATES_PAY"), ); $bUserCanViewOrder = CSaleOrder::CanUserViewOrder($ID, $arUserGroups, $intUserID); $bUserCanEditOrder = CSaleOrder::CanUserUpdateOrder($ID, $arUserGroups); $bUserCanCancelOrder = CSaleOrder::CanUserCancelOrder($ID, $arUserGroups, $intUserID); $bUserCanDeductOrder = CSaleOrder::CanUserChangeOrderFlag($ID, "PERM_DEDUCTION", $arUserGroups); $bUserCanMarkOrder = CSaleOrder::CanUserMarkOrder($ID, $arUserGroups, $intUserID); $bUserCanPayOrder = CSaleOrder::CanUserChangeOrderFlag($ID, "PERM_PAYMENT", $arUserGroups); $bUserCanDeliverOrder = CSaleOrder::CanUserChangeOrderFlag($ID, "PERM_DELIVERY", $arUserGroups); $bUserCanDeleteOrder = CSaleOrder::CanUserDeleteOrder($ID, $arUserGroups, $intUserID); if (isset($_REQUEST["ORDER_AJAX"]) AND $_REQUEST["ORDER_AJAX"] == "Y" AND check_bitrix_sessid()) { CUtil::DecodeUriComponent($_REQUEST); $type = $_REQUEST["type"]; $order = CSaleOrder::getById($ID); $allowIds = \Bitrix\Main\Config\Option::get("sale", "p2p_status_list", ""); if(strlen($allowIds)) $allowIds = unserialize($allowIds); else $allowIds = array(); /* * get more product */ if (isset($type) && $type != "") { $arResult = array(); $arErrors = array(); $LID = (array_key_exists('LID', $_REQUEST))? ($_REQUEST['LID']) : false; $currency = (array_key_exists('currency', $_REQUEST))? ($_REQUEST['currency']) : false; $userId = (array_key_exists('userId', $_REQUEST))? IntVal($_REQUEST['userId']) : false; $fUserId = (array_key_exists('fUserId', $_REQUEST))? IntVal($_REQUEST['fUserId']) : false; $arProduct = (array_key_exists('arProduct', $_REQUEST))? $_REQUEST['arProduct'] : false; $arOrderProduct = CUtil::JsObjectToPhp($arProduct); if ($type == 'basket') { $arCartWithoutSetItems = array(); $arTmpShoppingCart = CSaleBasket::DoGetUserShoppingCart($LID, $userId, $fUserId, $arErrors, array()); if (is_array($arTmpShoppingCart)) { foreach ($arTmpShoppingCart as $arCartItem) { if (CSaleBasketHelper::isSetItem($arCartItem)) continue; $arCartWithoutSetItems[] = $arCartItem; } } if (count($arCartWithoutSetItems) > 0) $arResult["ITEMS"] = fGetFormatedProductData($userId, $LID, $arCartWithoutSetItems, 1, $currency, $type, $crmMode); else $arResult["ITEMS"] = GetMessage('SOD_SUBTAB_BASKET_NULL'); } if ($type == 'recom') { if (!is_array($arOrderProduct)) $arOrderProduct = explode(",", $arOrderProduct); $arRecommendedResult = CSaleProduct::GetRecommendetProduct($userId, $LID, $arOrderProduct, "Y"); $arResult["ITEMS"] = fGetFormatedProductData($userId, $LID, $arRecommendedResult, 1, $currency, $type, $crmMode); } if ($type == 'viewed' && CModule::includeModule("catalog")) { $viewedIterator = \Bitrix\Catalog\CatalogViewedProductTable::getList(array( 'order' => array("DATE_VISIT" => "DESC"), 'filter' => array('FUSER_ID' => $fUserId, "SITE_ID" => $LID), 'select' => array("ID", "FUSER_ID", "DATE_VISIT", "PRODUCT_ID", "LID" => "SITE_ID", "NAME" => "ELEMENT.NAME", "PREVIEW_PICTURE" => "ELEMENT.PREVIEW_PICTURE", "DETAIL_PICTURE" => "ELEMENT.DETAIL_PICTURE" ), 'limit' => 10 )); $arViewed = array(); $arViewedIds = array(); $viewedCount = 0; $mapViewed = array(); while($viewed = $viewedIterator->fetch()) { $viewed['MODULE'] = 'catalog'; $arViewed[$viewedCount] = $viewed; $arViewedIds[] = $viewed['PRODUCT_ID']; $mapViewed[$viewed['PRODUCT_ID']] = $viewedCount; $viewedCount++; } unset($viewedCount); if (!empty($arViewedIds)) { $baseGroup = CCatalogGroup::getBaseGroup(); $priceIterator = CPrice::GetList( array(), array("PRODUCT_ID" => $arViewedIds, 'CATALOG_GROUP_ID' => $baseGroup['ID']), false, false, array("PRODUCT_ID", "PRICE", "CURRENCY") ); while($productPrice = $priceIterator->fetch() ) { if (isset($mapViewed[$productPrice['PRODUCT_ID']])) { $key = $mapViewed[$productPrice['PRODUCT_ID']]; $arViewed[$key]["PRICE"] = $productPrice["PRICE"]; $arViewed[$key]["CURRENCY"] = $productPrice["CURRENCY"]; } } } $arResult["ITEMS"] = fGetFormatedProductData($userId, $LID, $arViewed, 1, $currency, $type, $crmMode); } $arResult["TYPE"] = $type; $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * save comment */ if (array_key_exists('comment', $_REQUEST) && strlen($_REQUEST['comment']) > 0) { $ID = IntVal($ID); $comment = trim($comment); $bUserCanEditOrder = CSaleOrder::CanUserUpdateOrder($ID, $arUserGroups); if (isset($change) && $change == "Y" && $bUserCanEditOrder && !CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { CUtil::DecodeUriComponent($comment); CSaleOrder::CommentsOrder($ID, $comment); } $arResult = array('message' => 'ok'); $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * save tracking number */ if (isset($_REQUEST["tracking_number"]) && strlen($_REQUEST["tracking_number"]) >= 0) { $ID = IntVal($ID); $tracking_number = trim($tracking_number); $bUserCanEditOrder = CSaleOrder::CanUserUpdateOrder($ID, $arUserGroups); if (isset($change) && $change == "Y" && $bUserCanEditOrder && !CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { CUtil::DecodeUriComponent($tracking_number); CSaleOrder::Update($ID, array("TRACKING_NUMBER" => $tracking_number)); } $arResult = array('message' => 'ok'); $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * reason cancel */ if (isset($_REQUEST["change_cancel"]) && $_REQUEST["change_cancel"] == "Y") { $errorMessageTmp = ""; $errorMessageReserve = ""; $arResult = array(); if (!$bUserCanCancelOrder) $errorMessageTmp .= GetMessage("SOD_NO_PERMS2CANCEL").". "; if (strlen($errorMessageTmp) <= 0) { $CANCELED = trim($_REQUEST["CANCELED"]); $REASON_CANCELED = trim($_REQUEST["REASON_CANCELED"]); if ($CANCELED != "Y") $CANCELED = "N"; if ($CANCELED != "Y" && $CANCELED != "N") $errorMessageTmp .= GetMessage("SOD_WRONG_CANCEL_FLAG").". "; } if (strlen($errorMessageTmp) <= 0 && !CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { if (!CSaleOrder::CancelOrder($ID, $CANCELED, $REASON_CANCELED)) { if ($ex = $APPLICATION->GetException()) { if ($ex->GetID() == "RESERVATION_ERROR") { $errorMessageReserve = $ex->GetString(); } else if ($ex->GetID() != "ALREADY_FLAG") { $errorMessageTmp .= $ex->GetString(); } } else $errorMessageTmp .= GetMessage("ERROR_CANCEL_ORDER").". "; } } $arResult["message"] = "ok"; if (strlen($errorMessageTmp) > 0) $arResult["message"] = $errorMessageTmp; elseif (!CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { $dbOrder = CSaleOrder::GetList( array("ID" => "DESC"), array("ID" => $ID), false, false, array("DATE_CANCELED", "EMP_CANCELED_ID") ); if ($arOrder = $dbOrder->Fetch()) { $arResult["DATE_CANCELED"] = $arOrder["DATE_CANCELED"]; if (!$crmMode && IntVal($arOrder["EMP_CANCELED_ID"]) > 0) $arResult["EMP_CANCELED_ID"] = GetFormatedUserName($arOrder["EMP_CANCELED_ID"]); } } if (strlen($errorMessageReserve) > 0) { $arResult["reserve_message"] = $errorMessageReserve; $arResult["reserve_date"] = $arResult["DATE_CANCELED"]; } else { $arResult["reserve_message"] = "ok"; } $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * reason undo deducted */ if (isset($_REQUEST["change_deduct"]) && $_REQUEST["change_deduct"] == "Y") { $errorMessageTmp = ""; $errorMessageReserve = ""; $arResult = array(); if (!$bUserCanDeductOrder) $errorMessageTmp .= GetMessage("SOD_NO_PERMS2UNDO_DEDUCT").". "; if (strlen($errorMessageTmp) <= 0) { $UNDO_DEDUCT = (trim($_REQUEST["UNDO_DEDUCT"]) == "Y") ? "N" : "Y"; //reversed logic here $REASON_UNDO_DEDUCTED = trim($_REQUEST["REASON_UNDO_DEDUCTED"]); if ($UNDO_DEDUCT != "Y") $UNDO_DEDUCT = "N"; if ($UNDO_DEDUCT != "Y" && $UNDO_DEDUCT != "N") $errorMessageTmp .= GetMessage("SOD_WRONG_DEDUCT_FLAG").". "; } if (strlen($errorMessageTmp) <= 0 && !CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { if (!CSaleOrder::DeductOrder($ID, $UNDO_DEDUCT, $REASON_UNDO_DEDUCTED, false)) { if ($ex = $APPLICATION->GetException()) { if ($ex->GetID() == "RESERVATION_ERROR") { $errorMessageReserve = $ex->GetString(); } else if ($ex->GetID() != "ALREADY_FLAG") { $errorMessageTmp .= $ex->GetString(); } } else $errorMessageTmp .= GetMessage("ERROR_UNDO_DEDUCT_ORDER").". "; } } $arResult["message"] = "ok"; if (strlen($errorMessageTmp) > 0) $arResult["message"] = $errorMessageTmp; elseif (!CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { $dbOrder = CSaleOrder::GetList( array("ID" => "DESC"), array("ID" => $ID), false, false, array("DATE_DEDUCTED", "EMP_DEDUCTED_ID", "REASON_UNDO_DEDUCTED") ); if ($arOrder = $dbOrder->Fetch()) { $arResult["DATE_DEDUCTED"] = CUtil::JSEscape($arOrder["DATE_DEDUCTED"]); $arResult["REASON_UNDO_DEDUCTED"] = CUtil::JSEscape($arOrder["REASON_UNDO_DEDUCTED"]); if (!$crmMode && IntVal($arOrder["EMP_DEDUCTED_ID"]) > 0) $arResult["EMP_DEDUCTED_ID"] = CUtil::JSEscape(GetFormatedUserName($arOrder["EMP_DEDUCTED_ID"])); } } if (strlen($errorMessageReserve) > 0) { $arResult["reserve_message"] = $errorMessageReserve; $arResult["reserve_date"] = $arResult["DATE_DEDUCTED"]; } else { $arResult["reserve_message"] = "ok"; } $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * reason marked */ if (isset($_REQUEST["change_marked"]) && $_REQUEST["change_marked"] == "Y") { $errorMessageTmp = ""; $arResult = array(); if (!$bUserCanMarkOrder) $errorMessageTmp .= GetMessage("SOD_NO_PERMS2MARK").". "; if (strlen($errorMessageTmp) <= 0) { $MARKED = trim($_REQUEST["MARKED"]); $REASON_MARKED = trim($_REQUEST["REASON_MARKED"]); if ($MARKED != "Y") $MARKED = "N"; if ($MARKED != "Y" && $MARKED != "N") $errorMessageTmp .= GetMessage("SOD_WRONG_MARK_FLAG").". "; } if (strlen($errorMessageTmp) <= 0 && !CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { if ($MARKED == "Y") $rs = CSaleOrder::SetMark($ID, $REASON_MARKED, (0 < $intUserID ? $intUserID : 0)); else $rs = CSaleOrder::UnsetMark($ID, (0 < $intUserID ? $intUserID : 0)); if (!$rs) { if ($ex = $APPLICATION->GetException()) { if ($ex->GetID() != "ALREADY_FLAG") $errorMessageTmp .= $ex->GetString(); } else $errorMessageTmp .= GetMessage("ERROR_MARK_ORDER").". "; } } $arResult["message"] = "ok"; if (strlen($errorMessageTmp) > 0) $arResult["message"] = $errorMessageTmp; elseif (!CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { $dbOrder = CSaleOrder::GetList( array("ID" => "DESC"), array("ID" => $ID), false, false, array("DATE_MARKED", "EMP_MARKED_ID") ); if ($arOrder = $dbOrder->Fetch()) { $arResult["DATE_MARKED"] = CUtil::JSEscape($arOrder["DATE_MARKED"]); if (!$crmMode && IntVal($arOrder["EMP_MARKED_ID"]) > 0) $arResult["EMP_MARKED_ID"] = CUtil::JSEscape(GetFormatedUserName($arOrder["EMP_CANCELED_ID"])); } } $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * delivery */ if (isset($_REQUEST["change_delivery_form"]) && $_REQUEST["change_delivery_form"] == "Y") { $errorMessageTmp = ""; $errorMessageReserve = ""; if (!$bUserCanDeliverOrder) $errorMessageTmp .= GetMessage("SOD_NO_PERMS2DELIV").". "; if (strlen($errorMessageTmp) <= 0) { $ALLOW_DELIVERY = trim($_REQUEST["ALLOW_DELIVERY"]); if ($ALLOW_DELIVERY != "Y") $ALLOW_DELIVERY = "N"; if ($ALLOW_DELIVERY != "Y" && $ALLOW_DELIVERY != "N") $errorMessageTmp .= GetMessage("SOD_WRONG_DELIV_FLAG").". "; } if (strlen($errorMessageTmp) <= 0 && !CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { $arAdditionalFields = array( "DELIVERY_DOC_NUM" => ((strlen($_REQUEST["DELIVERY_DOC_NUM"]) > 0) ? $_REQUEST["DELIVERY_DOC_NUM"] : False), "DELIVERY_DOC_DATE" => ((strlen($_REQUEST["DELIVERY_DOC_DATE"]) > 0) ? $_REQUEST["DELIVERY_DOC_DATE"] : False) ); if ($change_status_popup == "Y") $arAdditionalFields["NOT_CHANGE_STATUS"] = "Y"; if (!CSaleOrder::DeliverOrder($ID, $ALLOW_DELIVERY, 0, $arAdditionalFields)) { if ($ex = $APPLICATION->GetException()) { if ($ex->GetID() == "RESERVATION_ERROR") { $errorMessageReserve = $ex->GetString(); } else if ($ex->GetID() != "ALREADY_FLAG") { $errorMessageTmp .= $ex->GetString(); } } else $errorMessageTmp .= GetMessage("ERROR_DELIVERY_ORDER").". "; } unset($arAdditionalFields["NOT_CHANGE_STATUS"]); //update for change data $res = CSaleOrder::Update($ID, $arAdditionalFields); } $arResult["message"] = "ok"; $arResult["ALLOW_DELIVERY"] = $ALLOW_DELIVERY; if (strlen($errorMessageTmp) > 0) $arResult["message"] = $errorMessageTmp; elseif (!CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { $arResult["STATUS_ID"] = ""; $arResult["EMP_STATUS_ID"] = ""; $arResult["DATE_STATUS"] = ""; $arResult["DATE_ALLOW_DELIVERY"] = ""; $dbOrder = CSaleOrder::GetList( array("ID" => "DESC"), array("ID" => $ID), false, false, array("DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID", "STATUS_ID", "DATE_STATUS", "EMP_STATUS_ID") ); if ($arOrder = $dbOrder->Fetch()) { $arResult["DATE_ALLOW_DELIVERY"] = $arOrder["DATE_ALLOW_DELIVERY"]; if (!$crmMode && IntVal($arOrder["EMP_ALLOW_DELIVERY_ID"]) > 0) $arResult["EMP_ALLOW_DELIVERY_ID"] = GetFormatedUserName($arOrder["EMP_ALLOW_DELIVERY_ID"], false); $arResult["DATE_STATUS"] = $arOrder["DATE_STATUS"]; if (!$crmMode && IntVal($arOrder["EMP_STATUS_ID"]) > 0) $arResult["EMP_STATUS_ID"] = GetFormatedUserName($arOrder["EMP_STATUS_ID"], false); $arResult["STATUS_ID"] = $arOrder["STATUS_ID"]; } $arResult["DELIVERY_DOC_NUMBER_FORMAT"] = ""; if(strlen($_REQUEST["DELIVERY_DOC_NUM"]) > 0 || strlen($_REQUEST["DELIVERY_DOC_DATE"]) > 0) $arResult["DELIVERY_DOC_NUMBER_FORMAT"] = GetMessage("SOD_DELIV_DOC", Array("#NUM#" => htmlspecialcharsEx($_REQUEST["DELIVERY_DOC_NUM"]), "#DATE#" => htmlspecialcharsEx($_REQUEST["DELIVERY_DOC_DATE"]))); } if (isset($_REQUEST["change_status"]) && $_REQUEST["change_status"] == "Y") { $arResultTmp = fChangeOrderStatus($ID, $_REQUEST["STATUS_ID"]); $arResult = array_merge($arResult, $arResultTmp); } if (strlen($errorMessageReserve) > 0) { $arResult["reserve_message"] = $errorMessageReserve; $arResult["reserve_date"] = $arResult["DATE_ALLOW_DELIVERY"]; } else { $arResult["reserve_message"] = "ok"; } $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * Execute delivery action */ if (isset($_REQUEST["DELIVERY_ACTION"]) && strlen($_REQUEST["DELIVERY_ACTION"]) > 0) { $arResult = CSaleDeliveryHelper::execHandlerAction($ID, $_REQUEST["DELIVERY_ACTION"]); $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * paysystem */ if (isset($_REQUEST["change_pay_form"]) && $_REQUEST["change_pay_form"] == "Y") { $errorMessageTmp = ""; $errorMessageReserve = ""; if (!$bUserCanPayOrder) $errorMessageTmp .= GetMessage("SOD_NO_PERMS2PAYFLAG").". "; if (strlen($errorMessageTmp) <= 0) { $PAYED = trim($_REQUEST["PAYED"]); if ($PAYED != "Y") $PAYED = "N"; if ($PAYED != "Y" && $PAYED != "N") $errorMessageTmp .= GetMessage("SOD_WRONG_PAYFLAG").". "; } if (strlen($errorMessageTmp) <= 0 && !CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { $arAdditionalFields = array( "PAY_VOUCHER_NUM" => ((strlen($_REQUEST["PAY_VOUCHER_NUM"]) > 0) ? $_REQUEST["PAY_VOUCHER_NUM"] : False), "PAY_VOUCHER_DATE" => ((strlen($_REQUEST["PAY_VOUCHER_DATE"]) > 0) ? $_REQUEST["PAY_VOUCHER_DATE"] : False) ); $bWithdraw = true; $bPay = true; if ($_REQUEST["PAY_FROM_ACCOUNT"] == "Y") $bPay = false; if ($PAYED == "N" && $_REQUEST["PAY_FROM_ACCOUNT_BACK"] != "Y") $bWithdraw = false; if ($change_status_popup == "Y") $arAdditionalFields["NOT_CHANGE_STATUS"] = "Y"; if (!CSaleOrder::PayOrder($ID, $PAYED, $bWithdraw, $bPay, 0, $arAdditionalFields)) { if ($ex = $APPLICATION->GetException()) { if ($ex->GetID() == "RESERVATION_ERROR") { $errorMessageReserve = $ex->GetString(); } else if ($ex->GetID() != "ALREADY_FLAG") $errorMessageTmp .= $ex->GetString(); } else $errorMessageTmp .= GetMessage("ERROR_PAY_ORDER").". "; } unset($arAdditionalFields["NOT_CHANGE_STATUS"]); //update for change data $res = CSaleOrder::Update($ID, $arAdditionalFields); } $arResult["message"] = "ok"; $arResult["PAYED"] = $PAYED; $arResult["BUDGET_ENABLE"] = 'N'; if (strlen($errorMessageTmp) > 0) $arResult["message"] = $errorMessageTmp; elseif (!CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { $dbOrder = CSaleOrder::GetList( array("ID" => "DESC"), array("ID" => $ID), false, false, array("DATE_PAYED", "EMP_PAYED_ID", "STATUS_ID", "DATE_STATUS", "EMP_STATUS_ID", "PRICE", "USER_ID", "CURRENCY") ); if ($arOrder = $dbOrder->Fetch()) { $arResult["EMP_STATUS_ID"] = ""; $arResult["DATE_PAYED"] = trim($arOrder["DATE_PAYED"]); if (!$crmMode && IntVal($arOrder["EMP_PAYED_ID"]) > 0) $arResult["EMP_PAYED_ID"] = GetFormatedUserName($arOrder["EMP_PAYED_ID"], false); $arResult["DATE_STATUS"] = $arOrder["DATE_STATUS"]; if (!$crmMode && IntVal($arOrder["EMP_STATUS_ID"]) > 0) $arResult["EMP_STATUS_ID"] = GetFormatedUserName($arOrder["EMP_STATUS_ID"], false); $arResult["STATUS_ID"] = $arOrder["STATUS_ID"]; //user budget $dbUserAccount = CSaleUserAccount::GetList( array(), array( "USER_ID" => $arOrder["USER_ID"], "CURRENCY" => $arOrder["CURRENCY"], ) ); $arUserAccount = $dbUserAccount->GetNext(); if (floatval($arUserAccount["CURRENT_BUDGET"]) >= floatval($arOrder["PRICE"])) { $arResult["BUDGET_ENABLE"] = 'Y'; $arResult["BUDGET_USER"] = SaleFormatCurrency(floatval($arUserAccount["CURRENT_BUDGET"]), $arOrder["CURRENCY"]); } } if (strlen(trim($_REQUEST["PAY_VOUCHER_NUM"])) > 0) $arResult["PAY_DOC_NUMBER_FORMAT"] = str_replace("#DATE#", $_REQUEST["PAY_VOUCHER_DATE"], str_replace("#NUM#", htmlspecialcharsEx($_REQUEST["PAY_VOUCHER_NUM"]), GetMessage("SOD_PAY_DOC"))); } if (isset($_REQUEST["change_status"]) && $_REQUEST["change_status"] == "Y") { $arResultTmp = fChangeOrderStatus($ID, $_REQUEST["STATUS_ID"]); $arResult = array_merge($arResult, $arResultTmp); } if (strlen($errorMessageReserve) > 0) { $arResult["reserve_message"] = $errorMessageReserve; $arResult["reserve_date"] = $arResult["DATE_PAYED"]; } else { $arResult["reserve_message"] = "ok"; } $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } /* * change status */ if (isset($_REQUEST["change_status"]) && $_REQUEST["change_status"] == "Y") { $arResult = array(); if (!CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) $arResult = fChangeOrderStatus($ID, $_REQUEST["STATUS_ID"]); $result = CUtil::PhpToJSObject($arResult); CRMModeOutput($result); exit; } } /****************/ if ($saleModulePermissions >= "W" && array_key_exists('unlock', $_REQUEST) && 'Y' == $_REQUEST['unlock']) { CSaleOrder::UnLock($ID); if ($crmMode) CRMModeOutput($ID); LocalRedirect("sale_order_detail.php?ID=".$ID."&lang=".LANGUAGE_ID.GetFilterParams("filter_", false)); } elseif ($saleModulePermissions >= "U" && check_bitrix_sessid() && !array_key_exists('dontsave', $_REQUEST)) { if(!$customTabber->Check()) { if($ex = $APPLICATION->GetException()) $errorMessage .= $ex->GetString(); else $errorMessage .= "Error. "; } elseif ($_SERVER['REQUEST_METHOD'] == "POST" && $save_order_data == "Y") { if (CSaleOrder::IsLocked($ID, $lockedBY, $dateLock)) { $errorMessage .= str_replace(array("#DATE#", "#ID#"), array($dateLock, $lockedBY), GetMessage("SOE_ORDER_LOCKED")).". "; } else { if (strlen($errorMessage) <= 0) { if ($crmMode) CRMModeOutput($ID); LocalRedirect("sale_order_detail.php?ID=".$ID."&save_order_result=ok&lang=".LANGUAGE_ID.GetFilterParams("filter_", false)); } } } elseif (isset($_REQUEST["action"]) && $_REQUEST["action"] == "ps_update") { $errorMessageTmp = ""; $arOrder = CSaleOrder::GetByID($ID); if (!$arOrder) $errorMessageTmp .= GetMessage("ERROR_NO_ORDER")."
"; if (strlen($errorMessageTmp) <= 0) { $psResultFile = ""; $arPaySys = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"], $arOrder["PERSON_TYPE_ID"]); $psActionPath = $_SERVER["DOCUMENT_ROOT"].$arPaySys["PSA_ACTION_FILE"]; $psActionPath = str_replace("\\", "/", $psActionPath); while (substr($psActionPath, strlen($psActionPath) - 1, 1) == "/") $psActionPath = substr($psActionPath, 0, strlen($psActionPath) - 1); if (file_exists($psActionPath) && is_dir($psActionPath)) { if (file_exists($psActionPath."/result.php") && is_file($psActionPath."/result.php")) $psResultFile = $psActionPath."/result.php"; } elseif (strlen($arPaySys["PSA_RESULT_FILE"]) > 0) { if (file_exists($_SERVER["DOCUMENT_ROOT"].$arPaySys["PSA_RESULT_FILE"]) && is_file($_SERVER["DOCUMENT_ROOT"].$arPaySys["PSA_RESULT_FILE"])) $psResultFile = $_SERVER["DOCUMENT_ROOT"].$arPaySys["PSA_RESULT_FILE"]; } if (strlen($psResultFile) <= 0) $errorMessageTmp .= GetMessage("SOD_NO_PS_SCRIPT").". "; } if (strlen($errorMessageTmp) <= 0) { $ORDER_ID = $ID; CSalePaySystemAction::InitParamArrays($arOrder, $ID, $arPaySys["PSA_PARAMS"]); try { if (!include($psResultFile)) $errorMessageTmp .= GetMessage("ERROR_CONNECT_PAY_SYS").". "; } catch(\Bitrix\Main\SystemException $e) { if($e->getCode() == CSalePaySystemAction::GET_PARAM_VALUE) $errorMessageTmp .= GetMessage("SOA_ERROR_PS")." "; else $errorMessageTmp .= $e->getMessage()." "; } } if (strlen($errorMessageTmp) <= 0) { $ORDER_ID = IntVal($ORDER_ID); $arOrder = CSaleOrder::GetByID($ORDER_ID); if (!$arOrder) $errorMessageTmp .= str_replace("#ID#", $ORDER_ID, GetMessage("SOD_NO_ORDER")).". "; } if (strlen($errorMessageTmp) <= 0) { if ($arOrder["PS_STATUS"] == "Y" && $arOrder["PAYED"] == "N") { if ($arOrder["CURRENCY"] == $arOrder["PS_CURRENCY"] && doubleval($arOrder["PRICE"]) == doubleval($arOrder["PS_SUM"])) { if (!CSaleOrder::PayOrder($arOrder["ID"], "Y", True, True)) { if ($ex = $APPLICATION->GetException()) $errorMessageTmp .= $ex->GetString(); else $errorMessageTmp .= str_replace("#ID#", $ORDER_ID, GetMessage("SOD_CANT_PAY")).". "; } } } } if ($errorMessageTmp != "") $errorMessage .= $errorMessageTmp; if (strlen($errorMessage) <= 0) { if ($crmMode) CRMModeOutput($ID); if (strlen($apply) > 0 || $_REQUEST["action"] == "ps_update") LocalRedirect("sale_order_detail.php?ID=".$ID."&save_order_result=ok_ps&lang=".LANGUAGE_ID.GetFilterParams("filter_", false)); CSaleOrder::UnLock($ID); LocalRedirect("sale_order.php?lang=".LANGUAGE_ID.GetFilterParams("filter_", false)); } } elseif (isset($_REQUEST["download"]) && $_REQUEST["download"] == "Y") { if (isset($_REQUEST["file_id"]) && intval($_REQUEST["file_id"]) > 0) { $arFile = CFile::GetFileArray(intval($_REQUEST["file_id"])); set_time_limit(0); CFile::ViewByUser($arFile, array("force_download" => true)); } } } elseif (array_key_exists('dontsave', $_REQUEST) && 'Y' == $_REQUEST['dontsave']) { $intLockUserID = 0; $strLockTime = ''; if (!CSaleOrder::IsLocked($ID, $intLockUserID, $strLockTime)) CSaleOrder::UnLock($ID); if ($crmMode) CRMModeOutput($ID); LocalRedirect("sale_order.php?lang=".LANGUAGE_ID.GetFilterParams("filter_", false)); } /****************/ $boolLocked = false; $intLockUserID = 0; $strLockUser = ''; $strLockUserExt = ''; $strLockUserInfo = ''; $strLockUserInfoExt = ''; $strLockTime = ''; $strNameFormat = CSite::GetNameFormat(true); $dbOrder = CSaleOrder::GetList( array("ID" => "DESC"), array("ID" => $ID), false, false, array( "ID", "LID", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "CANCELED", "DATE_CANCELED", "EMP_CANCELED_ID", "REASON_CANCELED", "STATUS_ID", "DATE_STATUS", "EMP_STATUS_ID", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID", "DEDUCTED", "DATE_DEDUCTED", "EMP_DEDUCTED_ID", "REASON_UNDO_DEDUCTED", "MARKED", "DATE_MARKED", "EMP_MARKED_ID", "REASON_MARKED", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "SUM_PAID", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION", "ADDITIONAL_INFO", "PS_STATUS", "PS_STATUS_CODE", "PS_STATUS_DESCRIPTION", "PS_STATUS_MESSAGE", "PS_SUM", "PS_CURRENCY", "PS_RESPONSE_DATE", "COMMENTS", "TAX_VALUE", "STAT_GID", "RECURRING_ID", "AFFILIATE_ID", "LOCK_STATUS", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME", "USER_EMAIL", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE", "STORE_ID", "ACCOUNT_NUMBER", "TRACKING_NUMBER", ) ); if (!($arOrder = $dbOrder->Fetch())) LocalRedirect("sale_order.php?lang=".LANGUAGE_ID.GetFilterParams("filter_", false)); $boolLocked = CSaleOrder::IsLocked($ID, $intLockUserID, $strLockTime); if ($boolLocked) { $strLockUser = $intLockUserID; $strLockUserInfo = $intLockUserID; $rsUsers = CUser::GetList(($by2 = 'ID'),($order2 = 'ASC'), array('ID' => $intLockUserID), array('FIELDS' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME'))); if ($arOneUser = $rsUsers->Fetch()) { $strLockUser = CUser::FormatName($strNameFormat, $arOneUser); $strLockUserInfo = ''.$strLockUser.''; } $strLockUserExt = htmlspecialcharsbx(GetMessage( 'SOE_ORDER_LOCKED2', array( '#ID#' => $strLockUser, '#DATE#' => $strLockTime, ) )); $strLockUserInfoExt = GetMessage( 'SOE_ORDER_LOCKED2', array( '#ID#' => $strLockUserInfo, '#DATE#' => $strLockTime, ) ); } $WEIGHT_UNIT = htmlspecialcharsbx(COption::GetOptionString('sale', 'weight_unit', "", $arOrder["LID"])); $WEIGHT_KOEF = htmlspecialcharsbx(COption::GetOptionString('sale', 'weight_koef', 1, $arOrder["LID"])); $APPLICATION->SetTitle(GetMessage("SALE_EDIT_RECORD", array("#ID#"=>$ID))); //get history order list $arFieldsAll = array( "PERSON_TYPE_ID" => GetMessage('SOD_HIST_PERSON_TYPE_ID'), "PAYED" => GetMessage('SOD_HIST_PAYED'), "DATE_PAYED" => GetMessage('SOD_HIST_DATE_PAYED'), "EMP_PAYED_ID" => GetMessage('SOD_HIST_EMP_PAYED_ID'), "CANCELED" => GetMessage('SOD_HIST_CANCELED'), "DATE_CANCELED" => GetMessage('SOD_HIST_DATE_CANCELED'), "EMP_CANCELED_ID" => GetMessage('SOD_HIST_EMP_CANCELED_ID'), "REASON_CANCELED" => GetMessage('SOD_HIST_REASON_CANCELED'), "DEDUCTED" => GetMessage('SOD_HIST_DEDUCTED'), "DATE_DEDUCTED" => GetMessage('SOD_HIST_DATE_DEDUCTED'), "EMP_DEDUCTED_ID" => GetMessage('SOD_HIST_EMP_DEDUCTED_ID'), "REASON_UNDO_DEDUCTED" => GetMessage('SOD_HIST_REASON_UNDO_DEDUCTED'), "MARKED" => GetMessage('SOD_HIST_MARKED'), "DATE_MARKED" => GetMessage('SOD_HIST_DATE_MARKED'), "EMP_CANCELED_ID" => GetMessage('SOD_HIST_EMP_MARKED_ID'), "REASON_MARKED" => GetMessage('SOD_HIST_REASON_MARKED'), "RESERVED" => GetMessage('SOD_HIST_RESERVED'), "STATUS_ID" => GetMessage('SOD_HIST_STATUS_ID'), "DATE_STATUS" => GetMessage('SOD_HIST_DATE_STATUS'), "EMP_STATUS_ID" => GetMessage('SOD_HIST_EMP_STATUS_ID'), "PRICE_DELIVERY" => GetMessage('SOD_HIST_PRICE_DELIVERY'), "ALLOW_DELIVERY" => GetMessage('SOD_HIST_ALLOW_DELIVERY'), "DATE_ALLOW_DELIVERY" => GetMessage('SOD_HIST_DATE_ALLOW_DELIVERY'), "EMP_ALLOW_DELIVERY_ID" => GetMessage('SOD_HIST_EMP_ALLOW_DELIVERY_ID'), "PRICE" => GetMessage('SOD_HIST_PRICE'), "CURRENCY" => GetMessage('SOD_HIST_CURRENCY'), "DISCOUNT_VALUE" => GetMessage('SOD_HIST_DISCOUNT_VALUE'), "USER_ID" => GetMessage('SOD_HIST_USER_ID'), "PAY_SYSTEM_ID" => GetMessage('SOD_HIST_PAY_SYSTEM_ID'), "DELIVERY_ID" => GetMessage('SOD_HIST_DELIVERY_ID'), "PS_STATUS" => GetMessage('SOD_HIST_PS_STATUS'), "PS_STATUS_CODE" => GetMessage('SOD_HIST_PS_STATUS_CODE'), "PS_STATUS_DESCRIPTION" => GetMessage('SOD_HIST_PS_STATUS_DESCRIPTION'), "PS_STATUS_MESSAGE" => GetMessage('SOD_HIST_PS_STATUS_MESSAGE'), "PS_SUM" => GetMessage('SOD_HIST_PS_SUM'), "PS_CURRENCY" => GetMessage('SOD_HIST_PS_CURRENCY'), "PS_RESPONSE_" => GetMessage('SOD_HIST_PS_RESPONSE_'), "TAX_VALUE" => GetMessage('SOD_HIST_TAX_VALUE'), "STAT_GID" => GetMessage('SOD_HIST_STAT_GID'), "SUM_PAID" => GetMessage('SOD_HIST_SUM_PAID'), "RECURRING_ID" => GetMessage('SOD_HIST_RECURRING_ID'), "PAY_VOUCHER_NUM" => GetMessage('SOD_HIST_PAY_VOUCHER_NUM'), "PAY_VOUCHER_DATE" => GetMessage('SOD_HIST_PAY_VOUCHER_DATE'), "RECOUNT_FLAG" => GetMessage('SOD_HIST_RECOUNT_FLAG'), "AFFILIATE_ID" => GetMessage('SOD_HIST_AFFILIATE_ID'), "DELIVERY_DOC_NUM" => GetMessage('SOD_HIST_DELIVERY_DOC_NUM'), "DELIVERY_DOC_DATE" => GetMessage('SOD_HIST_DELIVERY_DOC_DATE') ); //get status order $arOrderStatus = array(); $dbStatusList = CSaleStatus::GetList( array("SORT" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "NAME") ); while ($arStatusList = $dbStatusList->Fetch()) $arOrderStatus[htmlspecialcharsbx($arStatusList["ID"])] = htmlspecialcharsbx($arStatusList["NAME"]); //get delivery $arDelivery = array(); $dbDeliveryList = CSaleDelivery::GetList( array("SORT" => "ASC"), array() ); while ($arDeliveryList = $dbDeliveryList->Fetch()) $arDelivery[$arDeliveryList["ID"]] = htmlspecialcharsbx($arDeliveryList["NAME"]); //get paysystem $arPaySystem = array(); $dbPaySystemList = CSalePaySystem::GetList( array("SORT"=>"ASC"), array() ); while ($arPaySystemList = $dbPaySystemList->Fetch()) $arPaySystem[$arPaySystemList["ID"]] = htmlspecialcharsbx($arPaySystemList["NAME"]); $sTableID_tab5 = "table_order_change"; $oSort_tab5 = new CAdminSorting($sTableID_tab5); $lAdmin_tab5 = new CAdminList($sTableID_tab5, $oSort_tab5); //FILTER ORDER CHANGE HISTORY $arFilterFields = array( "filter_user", "filter_date_history", "filter_type" ); $lAdmin_tab5->InitFilter($arFilterFields); $by = trim(array_key_exists('by', $_REQUEST) ? $_REQUEST['by'] : ''); if ('' == $by) $by = 'DATE_CREATE'; $order = trim(array_key_exists('order', $_REQUEST) ? $_REQUEST['order'] : ''); if ('' == $order) $order = 'DESC'; $arHistSort[$by] = $order; $arHistSort["ID"] = $order; $arFilterHistory = array("ORDER_ID" => $ID); if (strlen($filter_type)>0) $arFilterHistory["TYPE"] = trim($filter_type); if (IntVal($filter_user)>0) $arFilterHistory["USER_ID"] = intval($filter_user); if (strlen($filters_date_history_from)>0) { $arFilterHistory["DATE_CREATE_FROM"] = Trim($filters_date_history_from); } if (strlen($filters_date_history_to)>0) { if ($arDate = ParseDateTime($filters_date_history_to, CSite::GetDateFormat("FULL", SITE_ID))) { if (StrLen($filters_date_history_to) < 11) { $arDate["HH"] = 23; $arDate["MI"] = 59; $arDate["SS"] = 59; } $filters_date_history_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"])); $arFilterHistory["DATE_CREATE_TO"] = $filters_date_history_to; } else $filters_date_history_to = ""; } $arHistoryData = array(); $bUseOldHistory = false; // collect records from old history to show in the new order changes list $dbHistory = CSaleOrder::GetHistoryList( array("H_DATE_INSERT" => "DESC"), array("H_ORDER_ID" => $ID), false, false, array("*") ); while ($arHistory = $dbHistory->Fetch()) { $res = convertHistoryToNewFormat($arHistory); if ($res) { $arHistoryData[] = $res; $bUseOldHistory = true; } } // new order history data $dbOrderChange = CSaleOrderChange::GetList( $arHistSort, $arFilterHistory, false, false, array("*") ); while ($arChangeRecord = $dbOrderChange->Fetch()) $arHistoryData[] = $arChangeRecord; // advancing sorting is necessary if old history results are mixed with new order changes if ($bUseOldHistory) { $arData = array(); foreach ($arHistoryData as $index => $arHistoryRecord) $arData[$index] = $arHistoryRecord[$by]; $arIds = array(); foreach ($arHistoryData as $index => $arHistoryRecord) $arIds[$index] = $arHistoryRecord["ID"]; array_multisort($arData, constant("SORT_".ToUpper($order)), $arIds, constant("SORT_".ToUpper($order)), $arHistoryData); } $dbRes = new CDBResult; $dbRes->InitFromArray($arHistoryData); $dbRecords = new CAdminResult($dbRes, $sTableID_tab5); $dbRecords->NavStart(); $lAdmin_tab5->NavText($dbRecords->GetNavPrint(GetMessage('SOD_HIST_LIST'))); $histdHeader = array( array("id"=>"DATE_CREATE", "content"=>GetMessage("SOD_HIST_H_DATE"), "sort"=>"DATE_CREATE", "default"=>true), array("id"=>"USER_ID", "content"=>GetMessage("SOD_HIST_H_USER"), "sort"=>"USER_ID", "default"=>true), array("id"=>"TYPE", "content"=>GetMessage("SOD_HIST_TYPE"), "sort"=>"TYPE", "default"=>true), array("id"=>"DATA", "content"=>GetMessage("SOD_HIST_DATA"), "sort"=>"", "default"=>true), ); $lAdmin_tab5->AddHeaders($histdHeader); $arOperations = array(); while ($arChangeRecord = $dbRecords->Fetch()) { $row =& $lAdmin_tab5->AddRow($arChangeRecord["ID"], $arChangeRecord, '', ''); $stmp = MakeTimeStamp($arChangeRecord["DATE_CREATE"], "DD.MM.YYYY HH:MI:SS"); $row->AddField("DATE_CREATE", date("d.m.Y H:i", $stmp)); $row->AddField("USER_ID", GetFormatedUserName($arChangeRecord["USER_ID"], false)); $arRecord = CSaleOrderChange::GetRecordDescription($arChangeRecord["TYPE"], $arChangeRecord["DATA"]); $row->AddField("TYPE", $arRecord["NAME"]); $row->AddField("DATA", htmlspecialcharsbx($arRecord["INFO"])); $arOperations[$arChangeRecord["TYPE"]] = $arRecord["NAME"]; } if($_REQUEST["table_id"]==$sTableID_tab5) $lAdmin_tab5->CheckListMode(); //end get history order list $aTabs = array(); $aTabs[] = array("DIV" => "edit1", "TAB" => GetMessage("SODN_TAB_ORDER"), "TITLE" => GetMessage("SODN_TAB_ORDER_DESCR"), "ICON" => "sale"); $aTabs[] = array("DIV" => "edit3", "TAB" => GetMessage("SODN_TAB_TRANSACT"), "TITLE" => GetMessage("SODN_TAB_TRANSACT_DESCR"), "ICON" => "sale"); $aTabs[] = array("DIV" => "edit4", "TAB" => GetMessage("SODN_TAB_HISTORY"), "TITLE" => GetMessage("SODN_TAB_HISTORY_DESCR"), "ICON" => "sale"); $tabControl = new CAdminForm("order_view_info", $aTabs, true, true); $tabControl->SetShowSettings(false); $tabControl->AddTabs($customTabber); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aMenu = array( array( "TEXT" => GetMessage("SOD_TO_LIST"), "LINK" => "/bitrix/admin/sale_order_detail.php?ID=".$ID."&dontsave=Y&lang=".LANGUAGE_ID.GetFilterParams("filter_"), "ICON"=>"btn_list", ) ); if ($boolLocked && $saleModulePermissions >= 'W') { $aMenu[] = array( "TEXT" => GetMessage("SOD_TO_UNLOCK"), "LINK" => "/bitrix/admin/sale_order_detail.php?ID=".$ID."&unlock=Y&lang=".LANGUAGE_ID.GetFilterParams("filter_"), ); } if ($bUserCanEditOrder) { if (!$boolLocked) { $aMenu[] = array( "TEXT" => GetMessage("SOD_TO_EDIT"), "LINK" => "/bitrix/admin/sale_order_new.php?ID=".$ID."&lang=".LANGUAGE_ID.GetFilterParams("filter_"), "ICON"=>"btn_edit", ); } $aMenu[] = array( "TEXT" => GetMessage("SOD_TO_NEW_ORDER"), "LINK" => "/bitrix/admin/sale_order_new.php?lang=".LANGUAGE_ID."&LID=".$arOrder["LID"], "ICON"=>"btn_edit", ); } $aMenu[] = array( "TEXT" => GetMessage("SOD_TO_PRINT"), "LINK" => "/bitrix/admin/sale_order_print.php?ID=".$ID."&lang=".LANGUAGE_ID.GetFilterParams("filter_"), ); if (!$boolLocked && ($saleModulePermissions == "W" || $arOrder["PAYED"] != "Y" && $bUserCanDeleteOrder)) { $aMenu[] = array( "TEXT" => GetMessage("SODN_CONFIRM_DEL"), "LINK" => "javascript:if(confirm('".GetMessageJS("SODN_CONFIRM_DEL_MESSAGE")."')) window.location='sale_order.php?ID=".$ID."&action=delete&lang=".LANGUAGE_ID."&".bitrix_sessid_get().urlencode(GetFilterParams("filter_"))."'", "WARNING" => "Y", "ICON"=>"btn_delete", ); } $link = DeleteParam(array("mode")); $link = $APPLICATION->GetCurPage()."?mode=settings".($link <> ""? "&".$link:""); $context = new CAdminContextMenu($aMenu); $context->Show(); if ($boolLocked) { CAdminMessage::ShowMessage(array( 'MESSAGE' => $strLockUserInfoExt, 'TYPE' => 'ERROR', 'HTML' => true )); } CAdminMessage::ShowMessage($errorMessage); if (strlen($save_order_result) > 0) { $okMessage = ""; if ($save_order_result == "ok_status") $okMessage = GetMessage("SOD_OK_STATUS"); elseif ($save_order_result == "ok_cancel") $okMessage = GetMessage("SOD_OK_CANCEL"); elseif ($save_order_result == "ok_pay") $okMessage = GetMessage("SOD_OK_PAY"); elseif ($save_order_result == "ok_delivery") $okMessage = GetMessage("SOD_OK_DELIVERY"); elseif ($save_order_result == "ok_comment") $okMessage = GetMessage("SOD_OK_COMMENT"); elseif ($save_order_result == "ok_ps") $okMessage = GetMessage("SOD_OK_PS"); else $okMessage = GetMessage("SOD_OK_OK"); CAdminMessage::ShowNote($okMessage); } $res = \Bitrix\Sale\Internals\PaymentTable::getList(array( 'select' => array('CNT'), 'filter' => array( 'ORDER_ID' => $ID ), 'runtime' => array( 'CNT' => array( 'data_type' => 'integer', 'expression' => array('COUNT(ID)') ) ) )); $payment = $res->fetch(); $res = \Bitrix\Sale\Internals\ShipmentTable::getList(array( 'select' => array('CNT'), 'filter' => array( 'ORDER_ID' => $ID ), 'runtime' => array( 'CNT' => array( 'data_type' => 'integer', 'expression' => array('COUNT(ID)') ) ) )); $shipment = $res->fetch(); if ($payment['CNT'] > 1 || ($shipment['CNT'] - 1) > 1) { $note = BeginNote(); $note .= GetMessage('SOD_ERROR_SEVERAL_P_D'); $note .= EndNote(); echo $note; } if (!$bUserCanViewOrder) { CAdminMessage::ShowMessage(str_replace("#ID#", $ID, GetMessage("SOD_NO_PERMS2VIEW")).". "); } else { if (!$boolLocked) CSaleOrder::Lock($ID); $customOrderView = COption::GetOptionString("sale", "path2custom_view_order", ""); if (strlen($customOrderView) > 0 && file_exists($_SERVER["DOCUMENT_ROOT"].$customOrderView) && is_file($_SERVER["DOCUMENT_ROOT"].$customOrderView)) { include($_SERVER["DOCUMENT_ROOT"].$customOrderView); } else { $arBasketId = array(); $arBasketItems = array(); $arBasketPropsValues = array(); $arElementId = array(); $arSku2Parent = array(); $orderTotalPrice = 0; $orderTotalWeight = 0; $parentItemFound = false; $dbBasketTmp = CSaleBasket::GetList( array("ID" => "ASC"), array("ORDER_ID" => $ID), false, false, array( "ID", "PRODUCT_ID", "PRODUCT_PRICE_ID", "PRICE", "CURRENCY", "WEIGHT", "QUANTITY", "NAME", "MODULE", "CALLBACK_FUNC", "NOTES", "DETAIL_PAGE_URL", "DISCOUNT_PRICE", "DISCOUNT_VALUE", "ORDER_CALLBACK_FUNC", "CANCEL_CALLBACK_FUNC", "PAY_CALLBACK_FUNC", "CATALOG_XML_ID", "PRODUCT_XML_ID", "VAT_RATE", "DISCOUNT_NAME", "DISCOUNT_COUPON", "PRODUCT_PROVIDER_CLASS", "CUSTOM_PRICE", "TYPE", "SET_PARENT_ID", "DIMENSIONS", "RECOMMENDATION" ) ); while ($arBasketTmp = $dbBasketTmp->GetNext()) { $arBasketId[] = $arBasketTmp["ID"]; $arBasketTmp["DIMENSIONS"] = unserialize($arBasketTmp["~DIMENSIONS"]); $arBasketItems[] = $arBasketTmp; if (CModule::IncludeModule("catalog")) { $arParent = CCatalogSku::GetProductInfo($arBasketTmp["PRODUCT_ID"]); if ($arParent) { $arElementId[] = $arParent["ID"]; $arSku2Parent[$arBasketTmp["PRODUCT_ID"]] = $arParent["ID"]; } } $arElementId[] = $arBasketTmp["PRODUCT_ID"]; $arBasketPropsValues[$arBasketTmp["PRODUCT_ID"]] = array(); if (!CSaleBasketHelper::isSetItem($arBasketTmp)) $orderTotalPrice += ($arBasketTmp["PRICE"] + $arBasketTmp["DISCOUNT_PRICE"]) * $arBasketTmp["QUANTITY"]; if (!CSaleBasketHelper::isSetParent($arBasketTmp)) { $orderTotalWeight += floatval($arBasketTmp["WEIGHT"] * $arBasketTmp["QUANTITY"]); } if (CSaleBasketHelper::isSetParent($arBasketTmp) || CSaleBasketHelper::isSetItem($arBasketTmp)) { $parentItemFound = true; } } if ($parentItemFound === true && !empty($arBasketItems) && is_array($arBasketItems)) { $arBasketItems = CSaleBasketHelper::reSortItems($arBasketItems); } ?> BeginEpilogContent(); ?>
Fatal error: Uncaught Error: Call to undefined function GetFilterHiddens() in D:\ktt\ttepla.com\public_html\bitrix\modules\sale\distr\admin\order_detail.php:1446 Stack trace: #0 {main} thrown in D:\ktt\ttepla.com\public_html\bitrix\modules\sale\distr\admin\order_detail.php on line 1446