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");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/general/admin_tool.php");
use Bitrix\Sale\Location;
$crmMode = (defined("BX_PUBLIC_MODE") && BX_PUBLIC_MODE && isset($_REQUEST["CRM_MANAGER_USER_ID"]));
if ($crmMode)
{
CUtil::DecodeUriComponent($_REQUEST);
CUtil::DecodeUriComponent($_POST);
echo '';
}
$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);
}
?>
$tabControl->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