%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sale/admin/ |
Current File : /home/bitrix/www/bitrix/modules/sale/admin/order_detail.php |
<? 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 '<link rel="stylesheet" type="text/css" href="/bitrix/themes/.default/sale.css" />'; } $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")."<br>"; 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 = '<a href="/bitrix/admin/user_edit.php?lang='.LANGUAGE_ID.'&ID='.$intLockUserID.'">'.$strLockUser.'</a>'; } $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_edit.php?ID=".$ID."&lang=".LANGUAGE_ID.GetFilterParams("filter_"), "ICON"=>"btn_edit", ); } $aMenu[] = array( "TEXT" => GetMessage("SOD_TO_NEW_ORDER"), "LINK" => "/bitrix/admin/sale_order_edit.php?lang=".LANGUAGE_ID."&SITE_ID=".$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(); $orderBasketPrice = 0; $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"]; $orderBasketPrice += $arBasketTmp["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); } ?> <style type="text/css"> .bx-adm-bigdata-icon-medium-inner{ position: relative; top: -5px; display: block; width:24px; height: 24px; background: url('/bitrix/panel/main/images/icons-sprite-7.png') no-repeat center -2176px; float: left; margin-right: 10px; } </style> <? $tabControl->BeginEpilogContent(); ?> <?= GetFilterHiddens("filter_"); ?> <?= bitrix_sessid_post(); ?> <input type="hidden" name="lang" value="<? echo LANGUAGE_ID; ?>"> <input type="hidden" name="ID" value="<? echo $ID; ?>"> <input type="hidden" name="save_order_data" value="Y"> <? $tabControl->EndEpilogContent(); $tabControl->Begin(); $tabControl->BeginNextFormTab(); $tabControl->AddSection("order_id", GetMessage("P_ORDER_ID")); $tabControl->BeginCustomField("ORDER_ACCOUNT_NUMBER", GetMessage("SOD_ORDER_ACCOUNT_NUMBER")); ?> <tr> <td width="40%"><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td width="60%"><?echo $arOrder["ACCOUNT_NUMBER"]?></td> </tr> <? $tabControl->EndCustomField("ORDER_ACCOUNT_NUMBER", ''); $tabControl->BeginCustomField("ORDER_DATE_CREATE", GetMessage("SOD_ORDER_DATE_CREATE")); ?> <tr> <td width="40%"><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td width="60%"><?echo $arOrder["DATE_INSERT"]?></td> </tr> <? $tabControl->EndCustomField("ORDER_DATE_CREATE", ''); $tabControl->BeginCustomField("DATE_UPDATE", GetMessage("SOD_DATE_UPDATE")); ?> <tr> <td width="40%"><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td width="60%"><?echo $arOrder["DATE_UPDATE"]?></td> </tr> <? $tabControl->EndCustomField("DATE_UPDATE", ''); $arSitesShop = array(); $rsSites = CSite::GetList($by="id", $order="asc", Array("ACTIVE" => "Y")); while ($arSite = $rsSites->Fetch()) { $site = COption::GetOptionString("sale", "SHOP_SITE_".$arSite["ID"], ""); if ($arSite["ID"] == $site) { $arSitesShop[$arSite["ID"]] = array("ID" => $arSite["ID"], "NAME" => $arSite["NAME"]); } } if (count($arSitesShop) > 1) { $tabControl->BeginCustomField("ORDER_SITE", GetMessage("ORDER_SITE"), true); ?> <tr> <td width="40%"> <?= GetMessage("ORDER_SITE") ?>: </td> <td width="60%"><?=htmlspecialcharsbx($arSitesShop[$arOrder["LID"]]["NAME"])." (".$arOrder["LID"].")"?> </td> </tr> <? $tabControl->EndCustomField("ORDER_SITE"); } $tabControl->BeginCustomField("ORDER_STATUS", GetMessage("SOD_CUR_STATUS")); ?> <tr> <td width="40%"><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td width="60%"> <? $arStatusList = False; $arFilter = array("LID" => LANG); $arGroupByTmp = false; if ($saleModulePermissions < "W") { $arFilter["GROUP_ID"] = $arUserGroups; $arFilter["PERM_STATUS_FROM"] = "Y"; $arFilter["ID"] = $arOrder["STATUS_ID"]; $arGroupByTmp = array("ID", "NAME", "MAX" => "PERM_STATUS_FROM"); } $dbStatusList = CSaleStatus::GetList( array(), $arFilter, $arGroupByTmp, false, array("ID", "NAME", "PERM_STATUS_FROM") ); $arStatusList = $dbStatusList->GetNext(); $statusOrder = ""; ?> <div id="editStatusDIV"> <select name="STATUS_ID" id="STATUS_ID" <? echo (!$boolLocked ? 'onchange="BX(\'change_status\').value=\'Y\';"': ''); ?>> <? if ($arStatusList) { $arFilter = array("LID" => LANG); $arGroupByTmp = false; if ($saleModulePermissions < "W") { $arFilter["GROUP_ID"] = $arUserGroups; $arFilter["PERM_STATUS"] = "Y"; } $dbStatusListTmp = CSaleStatus::GetList( array("SORT" => "ASC"), $arFilter, $arGroupByTmp, false, array("ID", "NAME", "SORT") ); while($arStatusListTmp = $dbStatusListTmp->GetNext()) { $select = ""; if ($arStatusListTmp["ID"]==$arOrder["STATUS_ID"]) $select = " selected"; $statusOrder .= '<option value="'.$arStatusListTmp["ID"].'" '.$select.'>'.$arStatusListTmp["NAME"].'</option>'; } } echo $statusOrder; ?> </select> <input type="hidden" name="change_status" id="change_status" value="N"> <input type="hidden" name="change_status_popup" id="change_status_popup" value="N"><? if (!$boolLocked) { ?><a href="javascript:void(0);" onclick="fChangeStatus();return false;" class="adm-btn"><?=GetMessage('SALE_SAVE');?></a><? } else { ?><a href="javascript:void(0);" onclick="return false;" class="adm-btn-disabled" title="<? echo $strLockUserExt; ?>"><?=GetMessage('SALE_SAVE');?></a><? } ?> <span id="change_status_err" style="display: none;"></span> <script type="text/javascript"> function fChangeStatus() { var obStatusErr = BX('change_status_err'); if (!!obStatusErr) { obStatusErr.innerHTML = ''; obStatusErr.style.display = 'none'; } BX.showWait(); BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&save_order_data=Y&change_status=Y&STATUS_ID='+BX('STATUS_ID').value+'&ID=<?=$ID?>', fChangeStatusResult); return false; } function fChangeStatusResult(res) { var rs = eval( '('+res+')' ); BX.closeWait(); if (!!rs.STATUS_ERR && true == rs.STATUS_ERR) { var obStatusErr = BX('change_status_err'); if (!!obStatusErr) { obStatusErr.innerHTML = rs.STATUS_ERR_MESS; obStatusErr.style.display = 'inline-block'; } } else { if (BX('date_status_change') && rs['DATE_STATUS'] && rs['DATE_STATUS'].length > 0) BX('date_status_change').innerHTML = rs['DATE_STATUS'] + ' ' + rs['EMP_STATUS_ID']; } BX('change_status').value = 'N'; } </script> </div> </td> </tr> <?if(strlen($arOrder["DATE_STATUS"]) > 0):?> <tr> <td><?=GetMessage('SOD_DATE_STATUS');?>:</td> <td id="date_status_change"><?=$arOrder["DATE_STATUS"]?> <?if (!$crmMode && IntVal($arOrder["EMP_STATUS_ID"]) > 0) echo GetFormatedUserName($arOrder["EMP_STATUS_ID"], false); ?> </td> </tr> <?endif;?> <? $tabControl->EndCustomField("ORDER_STATUS", ''); $tabControl->BeginCustomField("ORDER_CANCELED", GetMessage("SOD_CANCEL_Y")); ?> <tr id="btn_show_cancel" style="display:<?=($arOrder["CANCELED"] == "N" && $bUserCanCancelOrder) ? 'table-row' : 'none'?>"> <td width="40%"> </td> <td valign="middle"><? if (!$boolLocked) { ?><a title="<?=GetMessage('SOD_CANCEL_Y')?>" onclick="fShowCancelOrder(this, '');" class="adm-btn-wrap" href="javascript:void(0);"><span class="adm-btn"><?=GetMessage('SOD_CANCEL_Y')?></span></a><? } else { ?><a title="<? echo $strLockUserExt; ?>" class="adm-btn-wrap" href="javascript:void(0);"><span class="adm-btn-disabled"><?=GetMessage('SOD_CANCEL_Y')?></span></a><? } ?></td> </tr> <tr id="user_can_cancel" style="display:<?=($arOrder["CANCELED"] == "N" && !$bUserCanCancelOrder) ? 'table-row' : 'none'?>"> <td width="40%"> <?=GetMessage("SOD_CANCELED")?> </td> <td valign="middle"> <?=GetMessage("SALE_NO")?> </td> </tr> <tr id="btn_cancel_cancel" style="display:<?=($arOrder["CANCELED"] != "N") ? 'table-row' : 'none'?>"> <td> <span class="order_cancel_left"><?=GetMessage("SOD_CANCELED")?>:</span> </td> <td valign="top"> <span class="order_cancel_right"><?=GetMessage("SALE_YES")?></span><? if($bUserCanCancelOrder) { ?> <? if (!$boolLocked) { ?><a href="javascript:void(0);" onclick="fCancelCancelOrder();" class="adm-btn-wrap"><span class="adm-btn"><?=GetMessage('SOD_CANCEL_N');?></span></a><? } else { ?><a href="javascript:void(0);" class="adm-btn-wrap"><span class="adm-btn-disabled" title="<? echo $strLockUserExt; ?>"><?=GetMessage('SOD_CANCEL_N');?></span></a><? } } ?> </td> </tr> <tr id="date_change_cancel" style="display:<?=(strlen($arOrder["DATE_CANCELED"]) > 0) ? 'table-row' : 'none'?>"> <td> <?=GetMessage('SOD_DATE_CANCELED');?>: </td> <td id="date_change_cancel_user"> <?=$arOrder["DATE_CANCELED"]?> <?if (!$crmMode && IntVal($arOrder["EMP_CANCELED_ID"]) > 0) echo GetFormatedUserName($arOrder["EMP_CANCELED_ID"], false); ?> </td> </tr> <tr id="reason_cancel" style="display:<?=(strlen($arOrder["REASON_CANCELED"]) > 0) ? 'table-row' : 'none'?>"> <td> <?=GetMessage('SOD_CANCEL_REASON_TITLE')?>: </td> <td id="reason_cancel_text"> <?=htmlspecialcharsbx($arOrder["REASON_CANCELED"])?> </td> </tr> <tr> <td valign="top"> <div id="popup_cancel_order_form" class="sale_popup_form" style="display:none; font-size:13px;"> <table> <tr> <td colspan="2"><?=GetMessage('SOD_CANCEL_REASON_TITLE')?><br /> <?if(CSaleYMHandler::isOrderFromYandex($ID)): $reasonDisp = 'style="display: none;" '; ?> <?=CSaleYMHandler::getCancelReasonsAsRadio("FORM_REASON_CANCELED", "FORM_REASON_CANCELED", false)?> <?else: $reasonDisp = ""; ?> <?endif;?> <textarea <?=$reasonDisp?>name="FORM_REASON_CANCELED" id="FORM_REASON_CANCELED" rows="3" cols="30"><?= htmlspecialcharsEx($arOrder["REASON_CANCELED"]) ?></textarea> <br /><small><?=GetMessage('SOD_CANCEL_REASON_ADIT')?></small> </td> </tr> </table> </div> <script type="text/javascript"> function fCancelCancelOrder() { BX.showWait(); BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&save_order_data=Y&'+'&change_cancel=Y&CANCELED=N&ID=<?=$ID?>', fCancelCancelOrderResult); } function fCancelCancelOrderResult(res) { var rs = eval( '('+res+')' ); BX.closeWait(); if (rs["message"] == "ok") { BX('btn_cancel_cancel').style.display = "none"; BX('btn_show_cancel').style.display = "table-row"; BX('reason_cancel').style.display = "none"; if (rs["DATE_CANCELED"].length > 0) BX('date_change_cancel_user').innerHTML = rs["DATE_CANCELED"] + ' ' + rs["EMP_CANCELED_ID"]; BX('date_change_cancel').style.display = "table-row"; } } function fChangeCancelResult(res) { var rs = eval( '('+res+')' ); BX.closeWait(); if (rs["message"] == "ok") { var emp_cancel_user = ''; BX('btn_show_cancel').style.display = "none"; BX('btn_cancel_cancel').style.display = "table-row"; if (rs["DATE_CANCELED"] && rs["DATE_CANCELED"].length > 0) emp_cancel_user = rs["DATE_CANCELED"]; if (rs["EMP_CANCELED_ID"] && rs["EMP_CANCELED_ID"].length > 0) emp_cancel_user += ' ' + rs["EMP_CANCELED_ID"]; if (BX('date_change_cancel_user') && emp_cancel_user.length > 0) BX('date_change_cancel_user').innerHTML = emp_cancel_user; BX('date_change_cancel').style.display = "table-row"; BX('reason_cancel_text').innerHTML = BX('FORM_REASON_CANCELED').value; BX('reason_cancel').style.display = "table-row"; } fCheckReservationResult(rs); } function fShowCancelOrder(el, type) { formCancelOrder = BX.PopupWindowManager.create("sale-popup-cancel", el, { offsetTop : -100, offsetLeft : -150, autoHide : true, closeByEsc : true, closeIcon : true, titleBar : true, draggable: {restrict:true}, titleBar: {content: BX.create("span", {html: '<? echo GetMessageJS("SOD_CANCEL_ORDER"); ?>', 'props': {'className': 'sale-popup-title-bar'}})}, content : BX("popup_cancel_order_form") }); formCancelOrder.setButtons([ new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_SAVE')?>", className : "", events : { click : function() { BX.showWait(); BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&save_order_data=Y&'+'&change_cancel=Y&CANCELED=Y&REASON_CANCELED='+BX('FORM_REASON_CANCELED').value+'&ID=<?=$ID?>', fChangeCancelResult); formCancelOrder.close(); } } }), new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_CANCEL')?>", className : "", events : { click : function() { BX('FORM_REASON_CANCELED').value = ''; formCancelOrder.close(); } } }) ]); formCancelOrder.show(); BX('FORM_REASON_CANCELED').focus(); } </script> </td> </tr> <? $tabControl->EndCustomField("ORDER_CANCELED", ''); $tabControl->BeginCustomField("ORDER_AFFILIATE", GetMessage("P_ORDER_AFFILIATE")); if (IntVal($arOrder["AFFILIATE_ID"]) > 0): ?> <tr> <td width="40%"><?echo GetMessage("P_ORDER_AFFILIATE")?>:</td> <td width="60%"> <? $dbAffiliate = CSaleAffiliate::GetList( array(), array("ID" => $arOrder["AFFILIATE_ID"]), false, false, array("ID", "SITE_ID", "USER_ID", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME") ); if ($arAffiliate = $dbAffiliate->Fetch()) echo '<a href="sale_affiliate_edit.php?ID='.intval($arOrder["AFFILIATE_ID"]).'&lang='.LANGUAGE_ID.'">'.$arAffiliate["USER_NAME"].' '.$arAffiliate["USER_LAST_NAME"].' ('.$arAffiliate["USER_LOGIN"].')</a>'; ?> </td> </tr> <? endif; $tabControl->EndCustomField("ORDER_AFFILIATE", ''); $tabControl->AddSection("order_user", GetMessage("P_ORDER_USER_ACC")); $tabControl->BeginCustomField("ORDER_PROPS", GetMessage("SOD_ORDER_PROPS")); $dbUser = CUser::GetByID($arOrder["USER_ID"]); $arUser = $dbUser->Fetch(); ?> <tr> <td valign="top" width="40%"><?=GetMessage('SOD_BUYER_LOGIN')?>:</td> <td valign="middle"><? $strBuyerProfileUrl = ''; if (CBXFeatures::IsFeatureEnabled('SaleAccounts')) { $strBuyerProfileUrl = '/bitrix/admin/sale_buyers_profile.php?USER_ID='.$arOrder["USER_ID"].'&lang='.LANGUAGE_ID; } else { $strBuyerProfileUrl = '/bitrix/admin/user_edit.php?ID='.$arOrder["USER_ID"].'&lang='.LANGUAGE_ID; } ?><a href="<? echo $strBuyerProfileUrl; ?>"><? echo htmlspecialcharsEx($arUser["LOGIN"]); ?></a></td> </tr> <tr> <td valign="top"><?echo GetMessage("P_ORDER_PERS_TYPE")?>:</td> <td valign="middle"><? $arPersonType = CSalePersonType::GetByID($arOrder["PERSON_TYPE_ID"]); echo htmlspecialcharsEx($arPersonType["NAME"]); ?> </td> </tr> <? //disabled town $arTownOrderProps = array(); $dbProperties = CSaleOrderProps::GetList( array(), array( "ORDER_ID" => $ID, "PERSON_TYPE_ID" => $arPersonType["ID"], "ACTIVE" => "Y", ">INPUT_FIELD_LOCATION" => 0 ), false, false, array("INPUT_FIELD_LOCATION") ); while ($arProperties = $dbProperties->Fetch()) $arTownOrderProps[$arProperties["INPUT_FIELD_LOCATION"]] = $arProperties["INPUT_FIELD_LOCATION"]; $arEnableTownProps = array(); $arOrderPropsValue = array(); $dbOrderProps = CSaleOrderPropsValue::GetOrderProps($ID); while ($arOrderProps = $dbOrderProps->Fetch()) { $arOrderPropsValue[] = $arOrderProps; if ($arOrderProps["TYPE"] == "LOCATION" && $arOrderProps["ACTIVE"] == "Y" && $arOrderProps["IS_LOCATION"] == "Y" && in_array($arOrderProps["INPUT_FIELD_LOCATION"], $arTownOrderProps)) { if(CSaleLocation::isLocationProMigrated()) { $arEnableTownProps[$arOrderProps["INPUT_FIELD_LOCATION"]] = true; //CSaleLocation::checkLocationIsAboveCity($arOrderProps["VALUE"]); } else { $arLocation = CSaleLocation::GetByID($arOrderProps["VALUE"]); if (IntVal($arLocation["CITY_ID"]) <= 0) $arEnableTownProps[$arOrderProps["INPUT_FIELD_LOCATION"]] = true; else $arEnableTownProps[$arOrderProps["INPUT_FIELD_LOCATION"]] = false; } } } $iGroup = -1; $locationData = 0; $locationZip = 0; foreach ($arOrderPropsValue as $arOrderProps) { if ($iGroup != IntVal($arOrderProps["PROPS_GROUP_ID"])) { ?> <tr> <td colspan="2" style="text-align:center;font-weight:bold;font-size:14px;color:rgb(75, 98, 103);"><?=htmlspecialcharsEx($arOrderProps["GROUP_NAME"]);?></td> </tr> <? $iGroup = IntVal($arOrderProps["PROPS_GROUP_ID"]); } if (!in_array($arOrderProps["ORDER_PROPS_ID"], $arTownOrderProps) || (in_array($arOrderProps["ORDER_PROPS_ID"], $arTownOrderProps) && isset($arEnableTownProps[$arOrderProps["ORDER_PROPS_ID"]]) && $arEnableTownProps[$arOrderProps["ORDER_PROPS_ID"]])) { ?> <tr> <td valign="top"><?echo htmlspecialcharsEx($arOrderProps["NAME"])?>:</td> <td valign="middle"> <? if ($arOrderProps["TYPE"] == "CHECKBOX") { if ($arOrderProps["VALUE"] == "Y") echo GetMessage("SALE_YES"); else echo GetMessage("SALE_NO"); } elseif ($arOrderProps["TYPE"] == "TEXT" || $arOrderProps["TYPE"] == "TEXTAREA") { if ($arOrderProps["CODE"] == 'phone' && $arOrderProps["IS_EMAIL"] == "N" && $arOrderProps["IS_PAYER"] == "N" && $arOrderProps["IS_PROFILE_NAME"] == "N") { echo '<a href="callto:'.htmlspecialcharsbx($arOrderProps["VALUE"]).'">'.htmlspecialcharsEx($arOrderProps["VALUE"]).'</a>'; } elseif ($arOrderProps["IS_EMAIL"] == "Y") echo '<a href="mailto:'.htmlspecialcharsbx($arOrderProps["VALUE"]).'">'.htmlspecialcharsEx($arOrderProps["VALUE"]).'</a>'; else echo nl2br(htmlspecialcharsbx(trim($arOrderProps["VALUE"]))); } elseif ($arOrderProps["TYPE"] == "SELECT" || $arOrderProps["TYPE"] == "RADIO") { $arVal = CSaleOrderPropsVariant::GetByValue($arOrderProps["ORDER_PROPS_ID"], $arOrderProps["VALUE"]); echo htmlspecialcharsEx($arVal["NAME"]); } elseif ($arOrderProps["TYPE"] == "MULTISELECT") { $curVal = explode(",", $arOrderProps["VALUE"]); $countCurVal = count($curVal); for ($i = 0; $i < $countCurVal; $i++) { $arVal = CSaleOrderPropsVariant::GetByValue($arOrderProps["ORDER_PROPS_ID"], $curVal[$i]); if ($i > 0) echo ", "; echo htmlspecialcharsEx($arVal["NAME"]); } } elseif ($arOrderProps["TYPE"] == "LOCATION") { $arOrder["LOCATION_TO"] = $arOrderProps["VALUE"]; if(CSaleLocation::isLocationProEnabled()) { $locationString = \Bitrix\Sale\Location\Admin\LocationHelper::getLocationStringById($arOrderProps['VALUE']); if(!strlen($locationString)) $locationString = $arOrderProps['VALUE']; print(htmlspecialcharsEx($locationString)); } else { $arVal = CSaleLocation::GetByID($arOrderProps["VALUE"], LANG); $locationString = $arVal["COUNTRY_NAME"]; if (strlen($arVal["REGION_NAME"]) > 0 && strlen($locationString) > 0) $locationString .= " - ".$arVal["REGION_NAME"]; elseif (strlen($locationString) <= 0 && strlen($arVal["REGION_NAME"]) > 0) $locationString = $arVal["REGION_NAME"]; if (strlen($locationString) > 0 && strlen($arVal["CITY_NAME"]) > 0) $locationString .= " - ".$arVal["CITY_NAME"]; elseif (strlen($locationString) <= 0 && strlen($arVal["CITY_NAME"]) > 0) $locationString = $arVal["CITY_NAME"]; echo htmlspecialcharsEx($locationString); } $locationData = $arOrderProps["VALUE"]; $rsZipList = CSaleLocation::GetLocationZIP($locationData); if ($arZip = $rsZipList->Fetch()) { if (strlen($arZip["ZIP"]) > 0) $locationZip = $arZip["ZIP"]; } } elseif ($arOrderProps["TYPE"] == "FILE") { if (strpos($arOrderProps["VALUE"], ",") !== false) { $arValues = explode(",", $arOrderProps["VALUE"]); foreach ($arValues as $fileId) { echo showImageOrDownloadLink(trim($fileId), $ID); echo "<br/>"; } } else { echo showImageOrDownloadLink($arOrderProps["VALUE"], $ID); } } else { echo htmlspecialcharsEx($arOrderProps["VALUE"]); } ?> </td> </tr> <? } } $tabControl->EndCustomField("ORDER_PROPS", ''); $tabControl->AddSection("order_delivery", GetMessage("P_ORDER_DELIVERY_TITLE")); $tabControl->BeginCustomField("ORDER_DELIVERY", GetMessage("P_ORDER_DELIVERY")); ?> <tr> <td width="40%"><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <span id="allow_delivery_name"> <? $arDeliveryName = array(); $arDeliveryData = array(); if (strpos($arOrder["DELIVERY_ID"], ":") !== false) { $arDeliveryName = explode(":", $arOrder["DELIVERY_ID"]); $dbDelivery = CSaleDeliveryHandler::GetBySID($arDeliveryName[0]); $arDeliveryData = $dbDelivery->Fetch(); echo "[".$arDeliveryData["SID"]."] ".htmlspecialcharsEx($arDeliveryData["NAME"])." (".$arOrder["LID"].")"; } elseif (intval($arOrder["DELIVERY_ID"]) > 0) { $arDeliveryData = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"]); echo htmlspecialcharsbx($arDeliveryData["NAME"]); } else echo GetMessage("SOD_NONE"); ?> </span> </td> </tr> <? if (!empty($arDeliveryName)): ?> <tr> <td><?=GetMessage("SOD_DELIVERY_SERVICE_NAME")?>:</td> <td><? echo "[".htmlspecialcharsEx($arDeliveryName[1])."] ".htmlspecialcharsEx($arDeliveryData["PROFILES"][$arDeliveryName[1]]["TITLE"]); ?></td> </tr> <? $arDeliveryExtraParams = CSaleDeliveryHandler::GetHandlerExtraParams($arDeliveryData["SID"], $arDeliveryName[1], $arOrder); $depList = \Bitrix\Sale\Internals\OrderDeliveryReqTable::getList(array( 'filter'=>array('=ORDER_ID'=>$ID), )); if($dep = $depList->fetch()) { $depParams = unserialize($dep["PARAMS"]); foreach($arDeliveryExtraParams as $paramId => $paramOptions) { if(isset($depParams[$paramId])) { if(isset($paramOptions["VALUES"]) && isset($paramOptions["VALUES"][$depParams[$paramId]])) { $value = $paramOptions["VALUES"][$depParams[$paramId]]; } else { $value = $depParams[$paramId]; } } else { $value = ""; } ?> <tr> <td><?=$arDeliveryExtraParams[$paramId]["TITLE"].":"?></td> <td><?=htmlspecialcharsbx($value)?></td> </tr> <? } } endif; $tabControl->EndCustomField("ORDER_DELIVERY", ''); $tabControl->BeginCustomField("STORE_DELIVERY", GetMessage("SOD_STORE_SEND")); if (intval($arOrder["STORE_ID"]) > 0): ?> <tr> <td width="40%"><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <? $dbList = CCatalogStore::GetList( array("SORT" => "DESC", "ID" => "DESC"), array("ACTIVE" => "Y", "ID" => $arOrder["STORE_ID"]), false, false, array("ID", "TITLE", "ADDRESS", "DESCRIPTION", "IMAGE_ID", "PHONE", "SCHEDULE", "LOCATION_ID", "GPS_N", "GPS_S") ); if ($arList = $dbList->Fetch()): ?> <div><?=htmlspecialcharsbx($arList["TITLE"])?></div> <?else:?> <div<?=GetMessage('SOD_STORE_SEND_NULL');?>></div> <?endif;?> </td> </tr> <? endif; $tabControl->EndCustomField("STORE_DELIVERY", ''); $tabControl->BeginCustomField("ORDER_ALLOW_DELIVERY", GetMessage("P_ORDER_ALLOW_DELIVERY")); ?> <tr id="btn_allow_delivery" style="display:<?=($arOrder["ALLOW_DELIVERY"] == "N" && $bUserCanDeliverOrder) ? 'table-row' : 'none'?>"> <td width="40%"> </td> <td valign="middle" class="btn_order"><? if (!$boolLocked) { ?><a title="<?=GetMessage('SOD_ALLOW_DELIVERY_DO_Y')?>" onclick="fShowAllowDelivery(this, '');" class="adm-btn adm-btn-green" href="javascript:void(0);"><?=GetMessage('SOD_ALLOW_DELIVERY_DO_Y')?></a><? } else { ?><a title="<? echo $strLockUserExt; ?>" class="adm-btn-disabled" href="javascript:void(0);"><?=GetMessage('SOD_ALLOW_DELIVERY_DO_Y')?></a><? } ?></td> </tr> <tr id="allow_delivery_no_user" style="display:<?=($arOrder["ALLOW_DELIVERY"] == "N" && !$bUserCanDeliverOrder) ? 'table-row' : 'none'?>"> <td><?=GetMessage("SOD_DELIVERY_IS_ALLOW")?>:</td> <td><?=GetMessage("SALE_NO")?></td> </tr> <tr id="allow_delivery_number" style="display:<?=((strlen($arOrder["DELIVERY_DOC_NUM"]) > 0 || strlen($arOrder["DELIVERY_DOC_DATE"]))) ? 'table-row' : 'none'?>"> <td valign="top"><?=GetMessage('SOD_NUMBER_ALLOW_DELIVERY');?>:</td> <td valign="middle" id="allow_delivery_doc_number_format"><?=GetMessage("SOD_DELIV_DOC", Array("#NUM#" => htmlspecialcharsEx($arOrder["DELIVERY_DOC_NUM"]), "#DATE#" => htmlspecialcharsEx($arOrder["DELIVERY_DOC_DATE"]))) ?></td> </tr> <tr id="allow_delivery_date" style="display:<?=(strlen($arOrder["DATE_ALLOW_DELIVERY"]) > 0) ? 'table-row' : 'none'?>"> <td><?=GetMessage('SOD_DATE_ALLOW_DELIVERY');?>:</td> <td id="allow_delivery_date_user"><?=$arOrder["DATE_ALLOW_DELIVERY"]?> <?if (!$crmMode && IntVal($arOrder["EMP_ALLOW_DELIVERY_ID"]) > 0) echo GetFormatedUserName($arOrder["EMP_ALLOW_DELIVERY_ID"], false); ?> </td> </tr> <tr id="allow_delivery_is_allow" style="display:<?=($arOrder["ALLOW_DELIVERY"] != "N") ? 'table-row' : 'none'?>"> <td><span class="alloy_payed_left"><?=GetMessage("SOD_DELIVERY_IS_ALLOW")?>:</span></td> <td><span class="alloy_payed_right"><?=GetMessage("SOD_DELIVERY_YES")?></span><?if($bUserCanDeliverOrder) { ?> <? if (!$boolLocked) { ?><a href="javascript:void(0);" onclick="fShowAllowDelivery(this, 'cancel');"><?=GetMessage('SOD_DELIVERY_EDIT');?></a><? } else { ?><span style="text-decoration: line-through;" title="<? echo $strLockUserExt; ?>"><?=GetMessage('SOD_DELIVERY_EDIT');?></span><? } } ?></td> </tr> <tr> <td colspan="2"> <div id="popup_form" class="sale_popup_form adm-workarea" style="display:none; font-size:13px;"> <table> <tr> <td class="head"><?=GetMessage('SOD_POPUP_ORDER_STATUS')?>:</td> <td><select name="FORM_STATUS_ID" id="FORM_STATUS_ID" onChange="fChangeOrderStatus();"><?=$statusOrder?></select></td> </tr> <? $arActions = array(); $actions = CSaleDeliveryHandler::getActionsList($arOrder["DELIVERY_ID"]); if(array_key_exists("REQUEST_SELF", $actions)) $arActions["REQUEST_SELF"] = $actions["REQUEST_SELF"]; if(array_key_exists("REQUEST_TAKE", $actions)) $arActions["REQUEST_TAKE"] = $actions["REQUEST_TAKE"]; ?> <?if(!empty($arActions)):?> <? $depList = \Bitrix\Sale\Internals\OrderDeliveryReqTable::getList(array( 'filter'=>array('=ORDER_ID' => $ID), )); if($dep = $depList->fetch()) { $requestDisable = ""; // develop strlen($dep["DATE_REQUEST"]) > 0 ? " disabled" : "" ; } else { $requestDisable = ""; } ?> <tr> <td class="head"><?=GetMessage('SOD_POPUP_ORDER_ACTION')?>:</td> <td> <select name="FORM_ACTION_ID" id="FORM_ACTION_ID" onChange="fChangeDeliveryAction(this);" <?=$requestDisable?>> <option value=""><?=GetMessage("SALE_NO")?></option> <?foreach($arActions as $actionId => $actionName):?> <option value="<?=$actionId?>"><?=$actionName?></option> <?endforeach;?> </select> </td> </tr> <?endif;?> <tr> <td class="head"><?=GetMessage('SOD_POPUP_NUMBER_DOC')?>:</td> <td> <input type="text" class="popup_input" id="FORM_DELIVERY_DOC_NUM" name="FORM_DELIVERY_DOC_NUM" value="<?= htmlspecialcharsbx($arOrder["DELIVERY_DOC_NUM"]) ?>" size="30" maxlength="20" class="typeinput"> </td> </tr> <tr> <td class="head"><?=GetMessage('SOD_POPUP_DATE_DOC')?>:</td> <td> <?= CalendarDate("FROM_DELIVERY_DOC_DATE", $arOrder["DELIVERY_DOC_DATE"], "change_delivery_form", "10", 'class="typeinput"'); ?> </td> </tr> <tr id="cancel_allow_delivery" style="display:none;"> <td class="head"><label for="FORM_ALLOW_DELIVERY_CANCEL"><?=GetMessage('SOD_POPUP_DELIVERY_CANCEL')?>:</label></td> <td> <input type="checkbox" name="ALLOW_DELIVERY_CANCEL" id="FORM_ALLOW_DELIVERY_CANCEL" value="N" /> </td> </tr> </table> </div> <script type="text/javascript"> function fChangeOrderStatus() { BX('change_status').value='Y'; BX('change_status_popup').value='Y'; var obStatusErr = BX('change_status_err'); if (!!obStatusErr) { obStatusErr.innerHTML = ''; obStatusErr.style.display = 'none'; } BX('STATUS_ID').value = BX.findChild(BX('sale-popup-delivery'), {'attr': {id: 'FORM_STATUS_ID'}}, true, false).value; } function fChangeDeliveryAction(domNodeAId) { var disable; if(domNodeAId.value != "") disable = true; else disable = false; BX("FORM_DELIVERY_DOC_NUM").disabled = disable; delivery_date = BX.findChild(BX('sale-popup-delivery'), {'attr': {name: 'FROM_DELIVERY_DOC_DATE'}}, true, false); delivery_date.disabled = disable; delivery_date.nextElementSibling.style.display = disable ? "none" : ""; var saveButton = BX.findChild(BX("deliverySaveButton"), {'class': 'popup-window-button-text'}, true, false); saveButton.innerHTML = disable ? "<?=GetMessage('SOD_POPUP_SEEND_AND_SAVE')?>" : "<?=GetMessage('SOD_POPUP_SAVE')?>"; } function fChangeDeliveryActionIdResult(res) { if(res.RESULT == "ERROR") { alert("<?=GetMessage('SOD_POPUP_REQUEST_ERROR')?>"); } else { if(res.TRACKING_NUMBER) { BX('tracking-number-text').value = res.TRACKING_NUMBER; BX('tracking-number-title').innerHTML = res.TRACKING_NUMBER; } alert("<?=GetMessage('SOD_POPUP_REQUEST_SUCCESS')?>"); } } function fChangeDeliveryResult(res) { var rs = eval( '('+res+')' ); BX.closeWait(); if (rs["message"] == "ok") { if (rs["ALLOW_DELIVERY"] == "Y") { var emp_allow = ''; BX('btn_allow_delivery').style.display = "none"; // BX('allow_delivery_date').style.display = "none"; BX('allow_delivery_number').style.display = "none"; BX('allow_delivery_date').style.display = "table-row"; BX('allow_delivery_is_allow').style.display = "table-row"; if (rs["DATE_ALLOW_DELIVERY"].length > 0) emp_allow = rs["DATE_ALLOW_DELIVERY"]; if (rs["EMP_ALLOW_DELIVERY_ID"] && rs["EMP_ALLOW_DELIVERY_ID"].length > 0) emp_allow += ' ' + rs["EMP_ALLOW_DELIVERY_ID"]; if (BX('allow_delivery_date_user') && emp_allow.length > 0) BX('allow_delivery_date_user').innerHTML = emp_allow; if (rs["DELIVERY_DOC_NUMBER_FORMAT"].length > 0) { BX('allow_delivery_doc_number_format').innerHTML = rs["DELIVERY_DOC_NUMBER_FORMAT"]; BX('allow_delivery_number').style.display = "table-row"; } } else { // BX('allow_delivery_date').style.display = "table-row"; BX('btn_allow_delivery').style.display = "table-row"; // BX('allow_delivery_date2').style.display = "none"; BX('allow_delivery_is_allow').style.display = "none"; BX('allow_delivery_number').style.display = "none"; } if (!!rs.STATUS_ERR && true == rs.STATUS_ERR) { var obStatusErr = BX('change_status_err'); if (!!obStatusErr) { obStatusErr.innerHTML = rs.STATUS_ERR_MESS; obStatusErr.style.display = 'inline-block'; } } else { if (BX('date_status_change') && rs['DATE_STATUS'].length > 0) BX('date_status_change').innerHTML = rs['DATE_STATUS'] + ' ' + rs['EMP_STATUS_ID']; if (rs['STATUS_ID'].length > 0) BX('STATUS_ID').value = rs['STATUS_ID']; } } fCheckReservationResult(rs); BX('change_status').value='N'; BX('change_status_popup').value='N'; } function fShowAllowDelivery(el, type) { if (type == 'cancel') BX("cancel_allow_delivery").style.display = 'table-row'; BX('FORM_STATUS_ID').value = BX('STATUS_ID').value; if (BX('allow_delivery_is_allow').style.display == "none") { BX('FORM_ALLOW_DELIVERY_CANCEL').checked = false; BX('cancel_allow_delivery').style.display = "none"; } formAllowDelivery = BX.PopupWindowManager.create("sale-popup-delivery", BX('allow_delivery_name'), { offsetTop : -100, offsetLeft : -150, autoHide : true, closeByEsc : true, closeIcon : true, titleBar : true, draggable: {restrict:true}, titleBar: {content: BX.create("span", {html: '<? echo GetMessageJS('SOD_POPUP_DELIVE_TITLE'); ?>', 'props': {'className': 'sale-popup-title-bar'}})}, content : BX("popup_form") }); formAllowDelivery.setButtons([ new BX.PopupWindowButton({ text : "<?=GetMessageJS('SOD_POPUP_SAVE')?>", id: "deliverySaveButton", className : "", events : { click : function() { BX.showWait(); if (BX.findChild(BX('sale-popup-delivery'), {'attr': {id: 'FORM_ALLOW_DELIVERY_CANCEL'}}, true, false).checked) allow_delivery = 'N'; else allow_delivery = "Y"; delivery_date = BX.findChild(BX('sale-popup-delivery'), {'attr': {name: 'FROM_DELIVERY_DOC_DATE'}}, true, false).value; var change_status = 'N'; var status_id = ''; if (BX('change_status') && BX('change_status').value == 'Y') { change_status = BX('change_status').value; status_id = BX('STATUS_ID').value; } var change_status_popup = 'N'; if (BX('change_status_popup') && BX('change_status_popup').value == 'Y') change_status_popup = BX('change_status_popup').value; BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&save_order_data=Y&STATUS_ID='+status_id+'&change_status='+change_status+'&change_status_popup='+change_status_popup+'&change_delivery_form=Y&ALLOW_DELIVERY='+allow_delivery+'&DELIVERY_DOC_NUM='+BX('FORM_DELIVERY_DOC_NUM').value+'&DELIVERY_DOC_DATE='+delivery_date+'&ID=<?=$ID?>', fChangeDeliveryResult); var actionId = BX("FORM_ACTION_ID"); if(actionId && actionId.value !== "") { BX.ajax({ 'method': 'POST', 'dataType': 'json', 'url': '/bitrix/admin/sale_order_detail.php', 'data': '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&DELIVERY_ACTION='+actionId.value+'&ID=<?=$ID?>', 'onsuccess': fChangeDeliveryActionIdResult }); } formAllowDelivery.close(); } } }), new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_CANCEL')?>", className : "", events : { click : function() { formAllowDelivery.close(); } } }) ]); formAllowDelivery.show(); BX('FORM_DELIVERY_DOC_NUM').focus(); } /** * This function checks if reservation has been performed successfully * during 1) payment 2) delivery flag change or 3) cancellation (undoing reservation). * If there were any errors during that operation: * - it immediately updates order mark status in the interface * - and shows alert to the admin panel user */ function fCheckReservationResult(res) { if (res["reserve_message"] != "ok") { BX('user_can_mark').style.display = "none"; BX('btn_mark_cancel').style.display = "table-row"; BX('btn_mark_cancel_button').style.display = "table-row"; BX('date_change_mark').style.display = "table-row"; BX('date_change_mark_user').innerHTML = res["reserve_date"]; BX('reason_mark').style.display = "table-row"; BX('reason_mark_text').innerHTML = res["reserve_message"]; alert(res["reserve_message"]); } } </script> </td> </tr> <? $tabControl->EndCustomField("ORDER_ALLOW_DELIVERY", ''); $tabControl->BeginCustomField("ORDER_TRACKING_NUMBER", GetMessage("SOD_ORDER_TRACKING_NUMBER")); ?> <tr> <td width="40%"><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td width="60%"> <div id="hover_comment"><? if (!$boolLocked) { ?> <span id="tracking-number-title" onclick="fChangeTrackingNumber(this);"> <? if ('' != $arOrder["TRACKING_NUMBER"]) echo htmlspecialcharsbx($arOrder["TRACKING_NUMBER"]); else echo GetMessage('SOD_ORDER_TRACKING_NUMBER_ADD'); ?> </span> <span class="pencil"></span> <? } else { ?><span id="tracking-number-title"> <? if ('' != $arOrder["TRACKING_NUMBER"]) { echo htmlspecialcharsbx($arOrder["TRACKING_NUMBER"]); } else { echo '<span style="text-decoration: line-through;" title="'.$strLockUserExt.'">'.GetMessage('SOD_ORDER_TRACKING_NUMBER_ADD').'</span>'; } ?> </span> <? } ?> </div> <? if (!$boolLocked) { ?> <input type="text" id="tracking-number-text" name="TRACKING_NUMBER" onChange="fEditTrackingNumber(this, 'change');" onBlur="fEditTrackingNumber(this, 'exit');" value="<?=htmlspecialcharsbx($arOrder["TRACKING_NUMBER"])?>" size="30"> <? } else { ?><input type="hidden" value="<?=htmlspecialcharsbx($arOrder["TRACKING_NUMBER"])?>" name="TRACKING_NUMBER" id="tracking-number-text"><? } ?> <input type="hidden" name="change_tracking_number" id="id_change_tracking_number_hidden" value="N"> <script type="text/javascript"> function fChangeTrackingNumber(el) { BX(el).style.display = 'none'; BX('tracking-number-text').style.display = 'block'; BX('tracking-number-text').focus(); } function fEditTrackingNumber(el, type) { if (type == 'change') { BX.showWait(); BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&change=Y&tracking_number='+BX.util.urlencode(el.value)+'&ID=<?=$ID?>', fEditTrackingNumberResult); if (BX('tracking-number-text').value.length > 0) BX('tracking-number-title').innerHTML = BX('tracking-number-text').value; else BX('tracking-number-title').innerHTML = '<?=GetMessage('SOD_ORDER_TRACKING_NUMBER_ADD')?>'; } BX('tracking-number-title').style.display = 'inline-block'; BX('tracking-number-text').style.display = 'none'; } function fEditTrackingNumberResult(res) { BX.closeWait(); } </script> </td> </tr> </tr> <? $tabControl->EndCustomField("ORDER_TRACKING_NUMBER", ""); // additional delivery info (only for automated delivery systems and if delivery price was calculated) if (is_array($arDeliveryData) && !empty($arDeliveryData) && strpos($arOrder["DELIVERY_ID"], ":") !== false && $arOrder["PRICE_DELIVERY"] != 0) { $arDeliveryId = explode(":", $arOrder["DELIVERY_ID"]); $profileId = $arDeliveryId[1]; $arDeliveryOrder = array( "PRICE" => $orderTotalPrice, "WEIGHT" => $orderTotalWeight, "LOCATION_FROM" => COption::GetOptionString('sale', 'location', '', $LID), "LOCATION_TO" => $locationData, "LOCATION_ZIP" => $locationZip, "ITEMS" => $arBasketItems ); $depList = \Bitrix\Sale\Internals\OrderDeliveryReqTable::getList(array( 'filter'=>array('=ORDER_ID' => $ID), )); if($dep = $depList->fetch()) { $arDeliveryOrder["EXTRA_PARAMS"] = unserialize($dep["PARAMS"]); } $arPacks = CSaleDeliveryHelper::getBoxesFromConfig($profileId, $arDeliveryData["CONFIG"]["CONFIG"]); $arDeliveryResult = CSaleDeliveryHandler::CalculateFull($arDeliveryData["SID"], $profileId, $arDeliveryOrder, $arOrder["CURRENCY"], $LID); $delDiscountDiff = roundEx($arDeliveryResult["VALUE"] - $arOrder["PRICE_DELIVERY"], SALE_VALUE_PRECISION); $tabControl->BeginCustomField("ORDER_DELIVERY_ADDITIONAL_INFO", ""); if (!empty($arPacks)): $arBox = array_shift(array_values($arPacks)); ?> <tr> <td width="40%"></td> <td width="60%"> <a class="dashed-link" href="javascript:void(0);" onclick="fToggleDeliveryInfo();"><?=GetMessage("SOD_SHOW_DELIVERY_ADDITIONAL_INFO")?></a></td> </td> </tr> <tr class="hidden-delivery-info"> <td><?=GetMessage("SOD_DELIVERY_BOX_SIZE")?>:</td> <td><?=GetMessage("SOD_DELIVERY_BOX_SIZE_VALUE", array("#L#" => $arBox["DIMENSIONS"][0], "#W#" => $arBox["DIMENSIONS"][1], "#H#" => $arBox["DIMENSIONS"][2]))?></td> </tr> <? if ($arDeliveryResult["RESULT"] == "OK"): ?> <tr class="hidden-delivery-info"> <td><?=GetMessage("SOD_DELIVERY_BOX_NUMBER")?>:</td> <td><?=$arDeliveryResult["PACKS_COUNT"]?></td> </tr> <tr class="hidden-delivery-info"> <td><?=GetMessage("SOD_DELIVERY_SUM")?>:</td> <td><?=SaleFormatCurrency($arOrder["PRICE_DELIVERY"], $arOrder["CURRENCY"])?></td> </tr> <? if ($delDiscountDiff != 0): ?> <tr class="hidden-delivery-info"> <td><?=GetMessage("SOD_DELIVERY_DELIVERY_DISCOUNT_DIFF")?>:</td> <td><?=SaleFormatCurrency($delDiscountDiff, $arOrder["CURRENCY"])?></td> </tr> <? endif; elseif ($arDeliveryResult["RESULT"] == "ERROR"): ?> <tr class="hidden-delivery-info"> <td><?=GetMessage("SOD_DELIVERY_SUM_AND_BOX_NUMBER")?>:</td> <td><?=$arDeliveryResult["TEXT"]?></td> </tr> <? endif; $arData = array(); if (isset($arDeliveryData["GETFEATURES"]) && is_callable($arDeliveryData["GETFEATURES"])) $arData = call_user_func($arDeliveryData["GETFEATURES"], $arDeliveryData["CONFIG"]["CONFIG"]); foreach ($arData as $paramName => $paramValue): ?> <tr class="hidden-delivery-info"> <td><?=$paramName?>:</td> <td><?=$paramValue?></td> </tr> <? endforeach; endif; ?> <script type="text/javascript"> function fToggleDeliveryInfo() { var elements = document.getElementsByClassName('hidden-delivery-info'); for (var i = 0; i < elements.length; ++i) { elements[i].style.display = (elements[i].style.display == 'none' || elements[i].style.display == '') ? 'table-row' : 'none'; } } </script> <? $tabControl->EndCustomField("ORDER_DELIVERY_ADDITIONAL_INFO", ""); } // end of additional delivery info $tabControl->AddSection("order_payment", GetMessage("P_ORDER_PAYMENT")); $tabControl->BeginCustomField("ORDER_PAYMENT", GetMessage("P_ORDER_PAYMENT")); ?> <tr> <td valign="top"><?=GetMessage("P_ORDER_PAY_SYSTEM")?>:</td> <td valign="middle"> <span id="payed_name"> <? if (IntVal($arOrder["PAY_SYSTEM_ID"]) > 0) { $arPaySys = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"], $arOrder["PERSON_TYPE_ID"]); if ($arPaySys) echo htmlspecialcharsEx($arPaySys["NAME"].""); else echo '<font color="#FF0000">'.GetMessage("SOD_PAY_SYS_DISC").'</font>'; } else echo GetMessage("SOD_NONE"); ?> </span> </td> </tr> <? $tabControl->EndCustomField("ORDER_PAYMENT", ''); $tabControl->BeginCustomField("ORDER_PAYED", GetMessage("P_ORDER_PAYED")); ?> <tr id="summary_pay" style="display:<?=($arOrder["PAYED"] == "N") ? 'table-row' : 'none'?>"> <td valign="top"><?=GetMessage('SOD_PAYED_SUM');?>:</td> <td valign="middle"><?=SaleFormatCurrency($arOrder["PRICE"], $arOrder["CURRENCY"])?></td> </tr> <tr id="pay_date_pay" style="display:<?=(strlen($arOrder["DATE_PAYED"]) > 0) ? 'table-row' : 'none'?>"> <td><?=GetMessage('SOD_DATE_ALLOW_PAY_CHANGE');?>:</td> <td id="pay_date_pay_format"><?=$arOrder["DATE_PAYED"]?> <?if (!$crmMode && IntVal($arOrder["EMP_PAYED_ID"]) > 0) echo GetFormatedUserName($arOrder["EMP_PAYED_ID"], false); ?> </td> </tr> <tr id="pay_pay_user" style="display:<?=($arOrder["PAYED"] == "N" && $bUserCanPayOrder) ? 'table-row' : 'none'?>"> <td> </td> <td valign="middle" class="btn_order"><? if (!$boolLocked) { ?><a title="<?=GetMessage('SOD_DO_PAY_ORDER')?>" onClick="fShowAllowPay(this);" class="adm-btn adm-btn-green" href="javascript:void(0);"><?=GetMessage('SOD_DO_PAY_ORDER')?></a><? } else { ?><a title="<? echo $strLockUserExt; ?>" class="adm-btn-disabled" href="javascript:void(0);"><?=GetMessage('SOD_DO_PAY_ORDER')?></a><? } ?></td> </tr> <tr id="pay_pay_user_no" style="display:<?=($arOrder["PAYED"] == "N" && !$bUserCanPayOrder) ? 'table-row' : 'none'?>"> <td><?=GetMessage("SOD_PAYED_IS_ALLOW")?>:</td> <td><?=GetMessage("SALE_NO")?></td> </tr> <tr id="pay_allow_pay" style="display:<?=($arOrder["PAYED"] != "N" && strlen($arOrder["PAY_VOUCHER_NUM"]) > 0) ? 'table-row' : 'none'?>"> <td><?=GetMessage('SOD_NUMBER_ALLOW_PAY');?>:</td> <td id="payed_doc_number_format"><?= str_replace("#DATE#", $arOrder["PAY_VOUCHER_DATE"], str_replace("#NUM#", htmlspecialcharsEx($arOrder["PAY_VOUCHER_NUM"]), GetMessage("SOD_PAY_DOC"))) ?></td> </tr> <tr id="pay_is_pay" style="display:<?=($arOrder["PAYED"] != "N") ? 'table-row' : 'none'?>"> <td><span class="alloy_payed_left"><?=GetMessage("SOD_PAYED_IS_ALLOW")?>:</span></td> <td> <span class="alloy_payed_right"><?=GetMessage("SOD_PAYED_YES")?></span> <?if($bUserCanPayOrder) { ?> <? if (!$boolLocked) { ?><a href="javascript:void(0);" onclick="fShowAllowPay(this);"><?=GetMessage('SOD_DELIVERY_EDIT');?></a><? } else { ?><span style="text-decoration: line-through;" title="<? echo $strLockUserExt; ?>"><?=GetMessage('SOD_DELIVERY_EDIT');?></span><? } } ?> </td> </tr> <tr> <td colspan="2"> <div id="popup_form_pay" class="sale_popup_form adm-workarea" style="display:none; font-size:13px;"> <table> <tr> <td class="head"><?=GetMessage('SOD_POPUP_PAY_STATUS')?>:</td> <td><select name="FORM_PAY_STATUS_ID" id="FORM_PAY_STATUS_ID" onChange="fPayChangeOrderStatus();"><?=$statusOrder?></select></td> </tr> <tr> <td class="head"><?=GetMessage('SOD_POPUP_PAY_NUMBER_DOC')?>:</td> <td> <input type="text" id="FORM_PAY_VOUCHER_NUM" class="popup_input" name="FORM_PAY_VOUCHER_NUM" value="<?= htmlspecialcharsbx($arOrder["PAY_VOUCHER_NUM"]) ?>" size="30" maxlength="20" class="typeinput"> </td> </tr> <tr> <td class="head"><?=GetMessage('SOD_POPUP_PAY_DATE_DOC')?>:</td> <td> <?= CalendarDate("FROM_PAY_VOUCHER_DATE", $arOrder["PAY_VOUCHER_DATE"], "change_pay_form", "10", 'class="typeinput"'); ?> </td> </tr> <? $dbUserAccount = CSaleUserAccount::GetList( array(), array( "USER_ID" => $arOrder["USER_ID"], "CURRENCY" => $arOrder["CURRENCY"], "LOCKED" => "N" ) ); $arUserAccount = $dbUserAccount->GetNext(); ?> <tr id="user_budget" style="display:<?=($arOrder["PAYED"] == "N" && floatval($arUserAccount["CURRENT_BUDGET"]) >= $arOrder["PRICE"]) ? 'table-row' : 'none'?>"> <td class="head" nowrap><?=GetMessage('SOD_ORDER_USER_BUDGET')?>:</td> <td id="price_user_budget"><b><?=SaleFormatCurrency($arUserAccount["CURRENT_BUDGET"], $arOrder["CURRENCY"]);?></b></td> </tr> <tr id="pay_from_account" style="display:<?=($arOrder["PAYED"] == "N" && count($arUserAccount) > 1 && floatval($arUserAccount["CURRENT_BUDGET"]) >= $arOrder["PRICE"]) ? 'table-row' : 'none'?>"> <td class="head" nowrap><label for="FORM_PAY_FROM_ACCOUNT"><?=GetMessage('SOD_PAY_ACCOUNT')?>:</label></td> <td> <input type="checkbox" value="Y" name="FORM_PAY_FROM_ACCOUNT" id="FORM_PAY_FROM_ACCOUNT" /> </td> </tr> <tr id="cancel_allow_pay" style="display:<?=($arOrder["PAYED"] == "Y") ? 'table-row' : 'none'?>"> <td class="head"><label for="FORM_ALLOW_PAY_CANCEL"><?=GetMessage('SOD_POPUP_PAY_CANCEL')?>:</label></td> <td> <input type="checkbox" name="FORM_ALLOW_PAY_CANCEL" id="FORM_ALLOW_PAY_CANCEL" value="N" /> </td> </tr> <tr id="repay_to_account" style="display:<?=($arOrder["PAYED"] == "Y") ? 'table-row' : 'none'?>"> <td class="head"><label for="FORM_PAY_FROM_ACCOUNT_BACK"><?=GetMessage('SOD_PAY_ACCOUNT_BACK')?>:</label></td> <td> <input type="checkbox" name="FORM_PAY_FROM_ACCOUNT_BACK" id="FORM_PAY_FROM_ACCOUNT_BACK" value="N" /> </td> </tr> </table> </div> <script type="text/javascript"> function fPayChangeOrderStatus() { BX('change_status').value='Y'; BX('change_status_popup').value='Y'; var obStatusErr = BX('change_status_err'); if (!!obStatusErr) { obStatusErr.innerHTML = ''; obStatusErr.style.display = 'none'; } BX('STATUS_ID').value = BX.findChild(BX('sale-popup-pay'), {'attr': {id: 'FORM_PAY_STATUS_ID'}}, true, false).value; } function fChangePayResult(res) { var rs = eval( '('+res+')' ); BX.closeWait(); if (rs["message"] == "ok") { if (rs["PAYED"] == "Y") { var emp_payed = ''; BX('summary_pay').style.display = "none"; BX('pay_pay_user').style.display = "none"; BX('pay_is_pay').style.display = "table-row"; if (rs["DATE_PAYED"] && rs["DATE_PAYED"].length > 0) { emp_payed = rs["DATE_PAYED"]+' '; if (rs["EMP_PAYED_ID"] && rs["EMP_PAYED_ID"].length > 0) emp_payed += rs["EMP_PAYED_ID"]; if (BX('pay_date_pay_format') && emp_payed.length > 0) BX('pay_date_pay_format').innerHTML = emp_payed; BX('pay_date_pay').style.display = "table-row"; } if (rs["PAY_DOC_NUMBER_FORMAT"] && rs["PAY_DOC_NUMBER_FORMAT"].length > 0) { BX('payed_doc_number_format').innerHTML = rs["PAY_DOC_NUMBER_FORMAT"]; BX('pay_allow_pay').style.display = "table-row"; } BX('user_budget').style.display = "none"; BX('pay_from_account').style.display = "none"; BX('cancel_allow_pay').style.display = "table-row"; BX('repay_to_account').style.display = "table-row"; } else { BX('summary_pay').style.display = "table-row"; BX('pay_pay_user').style.display = "table-row"; BX('pay_allow_pay').style.display = "none"; BX('pay_date_pay').style.display = "table-row"; BX('pay_is_pay').style.display = "none"; if (rs["BUDGET_ENABLE"] && rs["BUDGET_ENABLE"] == "Y") { BX('price_user_budget').innerHTML = "<b>"+rs["BUDGET_USER"]+"</b>"; BX('user_budget').style.display = "table-row"; BX('pay_from_account').style.display = "table-row"; } BX('cancel_allow_pay').style.display = "none"; BX('repay_to_account').style.display = "none"; } if (!!rs.STATUS_ERR && true == rs.STATUS_ERR) { var obStatusErr = BX('change_status_err'); if (!!obStatusErr) { obStatusErr.innerHTML = rs.STATUS_ERR_MESS; obStatusErr.style.display = 'inline-block'; } } else { if (BX('date_status_change') && rs['DATE_STATUS'].length > 0) BX('date_status_change').innerHTML = rs['DATE_STATUS'] + ' ' + rs['EMP_STATUS_ID']; if (rs['STATUS_ID'] && rs['STATUS_ID'].length > 0) BX('STATUS_ID').value = rs['STATUS_ID']; } } fCheckReservationResult(rs); BX('change_status').value='N'; BX('change_status_popup').value='N'; } function fShowAllowPay(el) { BX('FORM_PAY_STATUS_ID').value = BX('STATUS_ID').value; if (BX('FORM_ALLOW_PAY_CANCEL')) BX('FORM_ALLOW_PAY_CANCEL').checked = false; if (BX('FORM_PAY_FROM_ACCOUNT_BACK')) BX('FORM_PAY_FROM_ACCOUNT_BACK').checked = false; if (BX('FORM_PAY_FROM_ACCOUNT')) BX('FORM_PAY_FROM_ACCOUNT').checked = false; formAllowPay = BX.PopupWindowManager.create("sale-popup-pay", BX('payed_name'), { offsetTop : -100, offsetLeft : -150, autoHide : true, closeByEsc : true, closeIcon : true, titleBar : true, draggable: {restrict:true}, titleBar: {content: BX.create("span", {html: '<?=GetMessageJS('SOD_POPUP_PAY_TITLE')?>', 'props': {'className': 'sale-popup-title-bar'}})}, content : document.getElementById("popup_form_pay") }); formAllowPay.setButtons([ new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_SAVE')?>", className : "", events : { click : function() { BX.showWait(); payed = "Y"; if (BX('FORM_ALLOW_PAY_CANCEL') && BX.findChild(BX('sale-popup-pay'), {'attr': {id: 'FORM_ALLOW_PAY_CANCEL'}}, true, false).checked) payed = "N"; pay_date = BX.findChild(BX('popup_form_pay'), {'attr': {name: 'FROM_PAY_VOUCHER_DATE'}}, true, false).value; pay_num = BX('FORM_PAY_VOUCHER_NUM').value; var change_status = 'N'; var status_id = ''; if (BX('change_status') && BX('change_status').value == 'Y') { change_status = BX('change_status').value; status_id = BX('STATUS_ID').value; } var pay_from_account = ""; if (BX('FORM_PAY_FROM_ACCOUNT') && BX.findChild(BX('sale-popup-pay'), {'attr': {id: 'FORM_PAY_FROM_ACCOUNT'}}, true, false).checked) pay_from_account = 'Y'; var pay_from_account_back = ""; if (BX('FORM_PAY_FROM_ACCOUNT_BACK') && BX.findChild(BX('sale-popup-pay'), {'attr': {id: 'FORM_PAY_FROM_ACCOUNT_BACK'}}, true, false).checked) pay_from_account_back = 'Y'; var change_status_popup = 'N'; if (BX('change_status_popup') && BX('change_status_popup').value == 'Y') change_status_popup = BX('change_status_popup').value; BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&save_order_data=Y&STATUS_ID='+status_id+'&change_status='+change_status+'&change_status_popup='+change_status_popup+'&change_pay_form=Y&PAYED='+payed+'&PAY_VOUCHER_NUM='+pay_num+'&PAY_VOUCHER_DATE='+pay_date+'&PAY_FROM_ACCOUNT='+pay_from_account+'&PAY_FROM_ACCOUNT_BACK='+pay_from_account_back+'&ID=<?=$ID?>', fChangePayResult); formAllowPay.close(); } } }), new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_CANCEL')?>", className : "", events : { click : function() { formAllowPay.close(); } } }) ]); formAllowPay.show(); BX('FORM_PAY_VOUCHER_NUM').focus(); } </script> </td> </tr> <? $tabControl->EndCustomField("ORDER_PAYED", ''); $arPaySys = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"], $arOrder["PERSON_TYPE_ID"]); if (strlen($arOrder["PS_STATUS"]) > 0) { $tabControl->AddSection("ps_stat", GetMessage("P_ORDER_PS_STATUS")); $tabControl->BeginCustomField("ORDER_PS_STATUS", GetMessage("P_ORDER_PS_STATUS")); ?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <? echo (($arOrder["PS_STATUS"]=="Y") ? "OK" : "N"); if (!$boolLocked) { if (!$crmMode && $arPaySys["PSA_HAVE_RESULT"] == "Y" || strlen($arPaySys["PSA_RESULT_FILE"]) > 0) { ?> <a href="/bitrix/admin/sale_order_detail.php?ID=<?= $ID ?>&action=ps_update&lang=<? echo LANGUAGE_ID; ?><?echo GetFilterParams("filter_")?>&<?= bitrix_sessid_get() ?>"><?echo GetMessage("P_ORDER_PS_STATUS_UPDATE") ?> >></a> <? } } ?> </td> </tr> <? $tabControl->EndCustomField("ORDER_PS_STATUS", ''); $tabControl->BeginCustomField("ORDER_PS_STATUS_CODE", GetMessage("P_ORDER_PS_STATUS")); ?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?echo $arOrder["PS_STATUS_CODE"] ;?></td> </tr> <? $tabControl->EndCustomField("ORDER_PS_STATUS_CODE", ''); $tabControl->BeginCustomField("ORDER_PS_STATUS_DESCRIPTION", GetMessage("P_ORDER_PS_STATUS_DESCRIPTION")); ?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?echo $arOrder["PS_STATUS_DESCRIPTION"] ;?></td> </tr> <? $tabControl->EndCustomField("ORDER_PS_STATUS_DESCRIPTION", ''); $tabControl->BeginCustomField("ORDER_PS_STATUS_MESSAGE", GetMessage("P_ORDER_PS_STATUS_MESSAGE")); ?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?echo $arOrder["PS_STATUS_MESSAGE"] ;?></td> </tr> <? $tabControl->EndCustomField("ORDER_PS_STATUS_MESSAGE", ''); $tabControl->BeginCustomField("ORDER_PS_SUM", GetMessage("P_ORDER_PS_SUM")); ?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?echo $arOrder["PS_SUM"] ;?></td> </tr> <? $tabControl->EndCustomField("ORDER_PS_SUM", ''); $tabControl->BeginCustomField("ORDER_PS_CURRENCY", GetMessage("P_ORDER_PS_CURRENCY")); ?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?echo $arOrder["PS_CURRENCY"] ;?></td> </tr> <? $tabControl->EndCustomField("ORDER_PS_CURRENCY", ''); $tabControl->BeginCustomField("ORDER_PS_RESPONSE_DATE", GetMessage("P_ORDER_PS_RESPONSE_DATE")); ?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?echo $arOrder["PS_RESPONSE_DATE"]; ?></td> </tr> <? $tabControl->EndCustomField("ORDER_PS_RESPONSE_DATE", ''); } elseif (!$crmMode && $arPaySys["PSA_HAVE_RESULT"] == "Y" || strlen($arPaySys["PSA_RESULT_FILE"]) > 0) { $tabControl->AddSection("ps_stat", GetMessage("P_ORDER_PS_STATUS")); $tabControl->BeginCustomField("ORDER_PS_STATUS_REC", GetMessage("P_ORDER_PS_STATUS")); ?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><? if (!$boolLocked) { ?><a href="/bitrix/admin/sale_order_detail.php?ID=<?= $ID ?>&action=ps_update&lang=<? echo LANGUAGE_ID; ?><?= GetFilterParams("filter_") ?>&<?= bitrix_sessid_get() ?>"><?= GetMessage("P_ORDER_PS_STATUS_UPDATE") ?> >></a><? } else { ?><span style="text-decoration: line-through;" title="<? echo $strLockUserExt; ?>"><? echo GetMessage("P_ORDER_PS_STATUS_UPDATE"); ?></span><? } ?></td> </tr> <? $tabControl->EndCustomField("ORDER_PS_STATUS_REC", ''); } //order mark $tabControl->AddSection("order_mark", GetMessage("P_ORDER_MARK")); $tabControl->BeginCustomField("ORDER_MARKED", GetMessage("SOD_MARKED_Y")); ?> <tr id="btn_show_marked" style="display:<?=($arOrder["MARKED"] == "N" && $bUserCanMarkOrder) ? 'table-row' : 'none'?>"> <td width="40%"><?=GetMessage("SOD_MARKED")?>:</td> <td valign="middle"> <?=GetMessage("SALE_NO")?> <!-- <a title="<?=GetMessage('SOD_MARKED')?>" onClick="fShowMarkOrder(this, '');" class="adm-btn-wrap" href="javascript:void(0);"><span class="adm-btn"><?=GetMessage('SOD_MARKED')?></span></a> --> </td> </tr> <tr id="user_can_mark" style="display:<?=($arOrder["MARKED"] == "N" && !$bUserCanMarkOrder) ? 'table-row' : 'none'?>"> <td width="40%"> <?=GetMessage("SOD_MARKED")?>: </td> <td valign="middle"> <?=GetMessage("SALE_NO")?> </td> </tr> <tr id="btn_mark_cancel" style="display:<?=($arOrder["MARKED"] != "N") ? 'table-row' : 'none'?>"> <td> <span class="order_cancel_left"><?=GetMessage("SOD_MARKED")?>:</span> </td> <td> <span class="order_marked_right"><?=GetMessage("SALE_YES")?></span> </td> </tr> <tr id="date_change_mark" style="display:<?=(strlen($arOrder["DATE_MARKED"]) > 0 && $arOrder["MARKED"] == "Y") ? 'table-row' : 'none'?>"> <td> <?=GetMessage('SOD_DATE_MARKED');?>: </td> <td id="date_change_mark_user"> <?=$arOrder["DATE_MARKED"]?> <?if (!$crmMode && IntVal($arOrder["EMP_MARKED_ID"]) > 0) echo GetFormatedUserName($arOrder["EMP_MARKED_ID"], false); ?> </td> </tr> <tr id="reason_mark" style="display:<?=($arOrder["MARKED"] != "N") ? 'table-row' : 'none'?>"> <td> <?=GetMessage('SOD_MARK_REASON_TITLE')?>: </td> <td id="reason_mark_text"> <?=htmlspecialcharsbx($arOrder["REASON_MARKED"])?> </td> </tr> <tr id="btn_mark_cancel_button" style="display:<?=($arOrder["MARKED"] != "N") ? 'table-row' : 'none'?>"> <td width="40%"> </td> <td> <?if($bUserCanMarkOrder) { if (!$boolLocked) { ?><a href="javascript:void(0);" onclick="fCancelMarkOrder();" class="adm-btn-wrap"><span class="adm-btn"><?=GetMessage('SOD_MARK_N');?></span></a><? } else { ?><a href="javascript:void(0);" class="adm-btn-wrap" title="<? echo $strLockUserExt; ?>"><span class="adm-btn-disabled"><?=GetMessage('SOD_MARK_N');?></span></a><? } } ?> </td> </tr> <tr> <td valign="top"> <div id="popup_mark_order_form" class="sale_popup_form" style="display:none; font-size:13px;"> <table> <tr> <td colspan="2"><?=GetMessage('SOD_MARK_REASON_TITLE')?><br /> <textarea name="FORM_REASON_MARKED" id="FORM_REASON_MARKED" rows="3" cols="30"><?= htmlspecialcharsEx($arOrder["REASON_MARKED"]) ?></textarea><br /> </td> </tr> </table> </div> <script type="text/javascript"> function fCancelMarkOrder() { BX.showWait(); BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&save_order_data=Y&'+'&change_marked=Y&MARKED=N&ID=<?=$ID?>', fCancelMarkOrderResult); } function fCancelMarkOrderResult(res) { var rs = eval( '('+res+')' ); BX.closeWait(); if (rs["message"] == "ok") { BX('date_change_mark').style.display = "none"; BX('btn_show_marked').style.display = "table-row"; BX('reason_mark').style.display = "none"; BX('btn_mark_cancel').style.display = "none"; BX('btn_mark_cancel_button').style.display = "none"; if (rs["DATE_MARKED"].length > 0) BX('date_change_mark_user').innerHTML = rs["DATE_MARKED"]; if ( typeof rs["EMP_MARKED_ID"] != "undefined" ) BX('date_change_mark_user').innerHTML += rs["EMP_MARKED_ID"]; } } function fChangeMarkResult(res) { // todo: not used now } function fShowMarkOrder(el, type) { formMarkOrder = BX.PopupWindowManager.create("sale-popup-mark", el, { offsetTop : -100, offsetLeft : -150, autoHide : true, closeByEsc : true, closeIcon : true, titleBar : true, draggable: {restrict:true}, titleBar: {content: BX.create("span", {html: '<?=GetMessageJS('SOD_MARK_ORDER')?>', 'props': {'className': 'sale-popup-title-bar'}})}, content : BX("popup_mark_order_form") }); formMarkOrder.setButtons([ new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_SAVE')?>", className : "", events : { click : function() { BX.showWait(); BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&save_order_data=Y&'+'&change_marked=Y&MARKED=Y&REASON_MARKED='+BX.util.urlencode(BX('FORM_REASON_MARKED').value)+'&ID=<?=$ID?>', fChangeMarkResult); formMarkOrder.close(); } } }), new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_CANCEL')?>", className : "", events : { click : function() { BX('FORM_REASON_MARKED').value = ''; formMarkOrder.close(); } } }) ]); formMarkOrder.show(); BX('FORM_REASON_MARKED').focus(); } </script> </td> </tr> <? $tabControl->EndCustomField("ORDER_MARKED", ''); $tabControl->AddSection("order_comments", GetMessage("SOD_COMMENTS")); $tabControl->BeginCustomField("ORDER_COMMENTS", GetMessage("SOD_COMMENTS")); if (strlen($arOrder["USER_DESCRIPTION"])>0) { ?> <tr> <td valign="top"><?echo GetMessage("P_ORDER_USER_COMMENTS")?>:</td> <td valign="middle"><?echo htmlspecialcharsEx($arOrder["USER_DESCRIPTION"]); ?></td> </tr> <? } if (strlen($arOrder["ADDITIONAL_INFO"])>0) { ?> <tr> <td valign="top"><?echo GetMessage("P_ORDER_ADDITIONAL_INFO")?>:</td> <td valign="middle"><?echo htmlspecialcharsEx($arOrder["ADDITIONAL_INFO"]); ?></td> </tr> <? } ?> <tr> <td valign="top"><?echo GetMessage('SOD_ORDER_COMMENT_MANAGER_TITLE');?>:</td> <td valign="middle"> <div id="hover_comment"><? if (!$boolLocked) { ?> <span id="manager-comment-title" onClick="fShowComment(this);"> <? if('' != $arOrder["COMMENTS"]) { echo htmlspecialcharsbx($arOrder["COMMENTS"]); } else { echo GetMessage('SOD_ORDER_COMMENT_MANAGER'); } ?> </span> <span class="pencil"></span><? } else { if ('' != $arOrder["COMMENTS"]) { echo htmlspecialcharsbx($arOrder["COMMENTS"]); } else { echo '<span style="text-decoration: line-through;" title="'.$strLockUserExt.'">'.GetMessage('SOD_ORDER_COMMENT_MANAGER').'</span>'; } } ?> </div> <? if (!$boolLocked) { ?><textarea id="manager-comment-text" name="COMMENTS" class="comment" onChange="fEditComment(this, 'change');" onblur="fEditComment(this, 'exit');"><?= htmlspecialcharsbx($arOrder["COMMENTS"]) ?></textarea><? } ?> <input type="hidden" name="change_comments" id="id_change_comments_hidden" value="N"> <script type="text/javascript"> function fShowComment(el) { BX(el).style.display = 'none'; BX('manager-comment-text').style.display = 'block'; BX('manager-comment-text').focus(); } function fEditComment(el, type) { if (type == 'change') { BX.showWait(); BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&change=Y&comment='+BX.util.urlencode(el.value)+'&ID=<?=$ID?>', fEditCommentResult); if (BX('manager-comment-text').value.length > 0) BX('manager-comment-title').innerHTML = BX('manager-comment-text').value; else BX('manager-comment-title').innerHTML = '<?=GetMessage('SOD_ORDER_COMMENT_MANAGER')?>'; } BX('manager-comment-title').style.display = 'inline-block'; BX('manager-comment-text').style.display = 'none'; } function fEditCommentResult(res) { BX.closeWait(); } </script> </td> </tr> <? $tabControl->EndCustomField("ORDER_COMMENTS", ''); $tabControl->AddSection("order_deduction", GetMessage("P_ORDER_DEDUCTION")); $tabControl->BeginCustomField("ORDER_DEDUCTED", GetMessage("P_ORDER_DEDUCTED")); ?> <tr id="deduct_message_yes" style="display: <?=($arOrder["DEDUCTED"] == "Y") ? "table-row" : "none" ?>" > <td> <span class="alloy_payed_left"><?=GetMessage("SOD_DEDUCTED")?>:</span> </td> <td valign="top"> <span class="alloy_payed_right"><?=GetMessage("SALE_YES")?></span> </td> </tr> <tr id="deduct_message_no" style="display: <?=($arOrder["DEDUCTED"] == "N") ? "table-row" : "none" ?>" > <td> <?=GetMessage("SOD_DEDUCTED")?>: </td> <td valign="top"> <?=GetMessage("SALE_NO")?> </td> </tr> <tr id="deduct_date" style="display:<?=(strlen($arOrder["DATE_DEDUCTED"]) > 0) ? 'table-row' : 'none'?>"> <td><?=GetMessage('SOD_DATE_DEDUCT_CHANGE');?>:</td> <td id="date_deduct_format"><?=$arOrder["DATE_DEDUCTED"]?> <?if (!$crmMode && IntVal($arOrder["EMP_DEDUCTED_ID"]) > 0) echo GetFormatedUserName($arOrder["EMP_DEDUCTED_ID"], false); ?> </td> </tr> <tr id="reason_deduct" style="display:<?=($arOrder["DATE_DEDUCTED"] > 0 && $arOrder["DEDUCTED"] == "N") ? 'table-row' : 'none'?>"> <td> <?=GetMessage('SOD_UNDO_DEDUCT_REASON_TITLE')?>: </td> <td id="reason_deduct_text"> <?=htmlspecialcharsbx($arOrder["REASON_UNDO_DEDUCTED"])?> </td> </tr> <tr id="btn_show_deduct" style="display:<?=($arOrder["DEDUCTED"] == "Y" && $bUserCanDeductOrder) ? 'table-row' : 'none'?>"> <td width="40%"> </td> <td valign="middle"><? if (!$boolLocked) { ?><a title="<?=GetMessage('SOD_DEDUCT_N')?>" onclick="fShowUndoDeductOrder(this, '');" class="adm-btn-wrap" href="javascript:void(0);"><span class="adm-btn"><?=GetMessage('SOD_DEDUCT_N')?></span></a><? } else { ?><a title="<? echo $strLockUserExt; ?>" class="adm-btn-wrap" href="javascript:void(0);"><span class="adm-btn-disabled"><?=GetMessage('SOD_DEDUCT_N')?></span></a><? } ?> </td> </tr> <tr> <td valign="top"> <div id="popup_deduct_order_form" class="sale_popup_form" style="display:none; font-size:13px;"> <table> <tr> <td colspan="2"><?=GetMessage('SOD_UNDO_DEDUCT_REASON_TITLE')?><br /> <textarea name="FORM_REASON_UNDO_DEDUCT" id="FORM_REASON_UNDO_DEDUCT" rows="3" cols="30"><?= htmlspecialcharsEx($arOrder["REASON_UNDO_DEDUCTED"]) ?></textarea><br /> </td> </tr> </table> </div> <script type="text/javascript"> function fUndoDeductOrderResult(res) { BX.closeWait(); var rs = eval( '('+res+')' ); if (rs["message"] == "ok") { BX('deduct_message_yes').style.display = "none"; BX('deduct_message_no').style.display = "table-row"; BX('btn_show_deduct').style.display = "none"; BX('reason_deduct').style.display = "table-row"; if (rs["DATE_DEDUCTED"].length > 0) BX('date_deduct_format').innerHTML = rs["DATE_DEDUCTED"] + ' ' + rs["EMP_DEDUCTED_ID"]; BX('reason_deduct_text').innerHTML = rs["REASON_UNDO_DEDUCTED"]; } else { alert(rs["message"]); } } //is used when setting DEDUCTION = "Y". possibly later // function fChangeUndoDeductResult(res) // { // var rs = eval( '('+res+')' ); // BX.closeWait(); // if (rs["message"] == "ok") // { // var emp_undo_deduct_user = ''; // BX('btn_show_undo_deduct').style.display = "none"; // BX('btn_undo_deduct_undo_deduct').style.display = "table-row"; // if (rs["DATE_DEDUCTED"] && rs["DATE_DEDUCTED"].length > 0) // emp_undo_deduct_user = rs["DATE_DEDUCTED"]; // if (rs["EMP_DEDUCTED_ID"] && rs["EMP_DEDUCTED_ID"].length > 0) // emp_undo_deduct_user += ' ' + rs["EMP_DEDUCTED_ID"]; // if (BX('date_change_undo_deduct_user') && emp_undo_deduct_user.length > 0) // BX('date_change_undo_deduct_user').innerHTML = emp_undo_deduct_user; // BX('date_change_undo_deduct').style.display = "table-row"; // BX('reason_undo_deduct_text').innerHTML = BX('FORM_REASON_UNDO_DEDUCT').value; // BX('reason_undo_deduct').style.display = "table-row"; // } // } function fShowUndoDeductOrder(el, type) { formUndoDeductOrder = BX.PopupWindowManager.create("sale-popup-deduct", el, { offsetTop : -100, offsetLeft : -150, autoHide : true, closeByEsc : true, closeIcon : true, titleBar : true, draggable: {restrict:true}, titleBar: {content: BX.create("span", {html: '<?=GetMessageJS('SOD_UNDO_DEDUCT_ORDER')?>', 'props': {'className': 'sale-popup-title-bar'}})}, content : BX("popup_deduct_order_form") }); formUndoDeductOrder.setButtons([ new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_SAVE')?>", className : "", events : { click : function() { BX.showWait(); var urlparams = '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&save_order_data=Y&change_deduct=Y&UNDO_DEDUCT=Y&REASON_UNDO_DEDUCTED='+BX('FORM_REASON_UNDO_DEDUCT').value+'&ID=<?=$ID?>'; BX.ajax.post('/bitrix/admin/sale_order_detail.php', urlparams, fUndoDeductOrderResult); formUndoDeductOrder.close(); } } }), new BX.PopupWindowButton({ text : "<?=GetMessage('SOD_POPUP_CANCEL')?>", className : "", events : { click : function() { BX('FORM_REASON_UNDO_DEDUCT').value = ''; formUndoDeductOrder.close(); } } }) ]); formUndoDeductOrder.show(); BX('FORM_REASON_UNDO_DEDUCT').focus(); } </script> </td> </tr> <? $tabControl->EndCustomField("ORDER_DEDUCTED", ''); //order list $tabControl->AddSection("buyer_order", GetMessage("SOD_ORDER")); $tabControl->BeginCustomField("orders_list", GetMessage("SOD_ORDER")); ?> <tr> <td colspan="2" valign="top"> <!-- //? --> <table id="BASKET_TABLE" cellpadding="3" cellspacing="1" border="0" width="100%" class="internal"> <tr class="heading"> <?=getColumnsHeaders($arUserColumns, "detail", false);?> </tr> <? $bXmlId = COption::GetOptionString("sale", "show_order_product_xml_id", "N"); $arCurFormat = CCurrencyLang::GetCurrencyFormat($arOrder["CURRENCY"]); $CURRENCY_FORMAT = trim(str_replace("#", '', $arCurFormat["FORMAT_STRING"])); $ORDER_TOTAL_PRICE = 0; $ORDER_TOTAL_WEIGHT = 0; $arFilterRecomendet = array(); $arBasketProps = array(); $bUseCatalog = (CModule::IncludeModule("catalog")) ? true : false; $bUseIblock = (CModule::IncludeModule("iblock")) ? true : false; $arBasketItems = getMeasures($arBasketItems); if(!empty($arBasketId)) { //select props from basket $arPropsFilter = array("BASKET_ID" => $arBasketId); if ($bXmlId == "N") $arPropsFilter["!CODE"] = array("PRODUCT.XML_ID", "CATALOG.XML_ID"); $dbBasketPropsTmp = CSaleBasket::GetPropsList( array("BASKET_ID" => "ASC", "SORT" => "ASC", "NAME" => "ASC"), $arPropsFilter, false, false, array("ID", "BASKET_ID", "NAME", "VALUE", "CODE", "SORT") ); while ($arBasketPropsTmp = $dbBasketPropsTmp->Fetch()) $arBasketProps[$arBasketPropsTmp["BASKET_ID"]][] = $arBasketPropsTmp; $arBasketElement = array(); $arElementData = array(); if (!empty($arElementId)) // get properties for iblock elements and their parents (if any) { $arSelect = array_merge( array("ID", "PREVIEW_PICTURE", "DETAIL_PICTURE", "IBLOCK_TYPE_ID", "IBLOCK_ID", "IBLOCK_SECTION_ID"), $arSelectProps ); $arProductData = getProductProps($arElementId, $arSelect); foreach ($arProductData as $key => &$value) { if (array_key_exists($value["ID"], $arSku2Parent)) // if sku element { if ($value["PREVIEW_PICTURE"] == "") $value["PREVIEW_PICTURE"] = $arProductData[$arSku2Parent[$value["ID"]]]["PREVIEW_PICTURE"]; if ($value["DETAIL_PICTURE"] == "") $value["DETAIL_PICTURE"] = $arProductData[$arSku2Parent[$value["ID"]]]["DETAIL_PICTURE"]; } $arBasketElement[$value["ID"]] = $value; $arBasketPropsValues[$key] = $value; } unset($value); // if sku element doesn't have some property value - we'll show parent element value instead foreach ($arBasketPropsValues as $key => &$arRecord) { if (array_key_exists($key, $arSku2Parent)) { foreach ($arSelectProps as $field) { $fieldVal = $field."_VALUE"; $parentId = $arSku2Parent[$key]; if ((!isset($arRecord[$fieldVal]) || (isset($arRecord[$fieldVal]) && strlen($arRecord[$fieldVal]) == 0)) && (isset($arProductData[$parentId][$fieldVal]) && !empty($arProductData[$parentId][$fieldVal]))) // fieldVal can be array or string { $arRecord[$fieldVal] = $arProductData[$parentId][$fieldVal]; } } } } unset($arRecord); } $productNumber = 0; foreach ($arBasketItems as $arItem) { if (!CSaleBasketHelper::isSetItem($arItem)) { $ORDER_TOTAL_PRICE += ($arItem["PRICE"] + $arItem["DISCOUNT_PRICE"]) * $arItem["QUANTITY"]; $arFilterRecomendet[] = $arItem["PRODUCT_ID"]; } if (!CSaleBasketHelper::isSetParent($arItem)) { $ORDER_TOTAL_WEIGHT += FloatVal($arItem["WEIGHT"] * $arItem["QUANTITY"]); } $hidden = ""; $setItemClass = ""; if (CSaleBasketHelper::isSetItem($arItem)) { $hidden = "style=\"display:none\""; $setItemClass = "class=\"set_item_".$arItem["SET_PARENT_ID"]."\""; } ?> <tr <?=$hidden?> <?=$setItemClass?>> <? if (!CSaleBasketHelper::isSetItem($arItem)) $productNumber++; foreach ($arUserColumns as $columnCode => $columnName) { if ($columnCode == "COLUMN_NUMBER") { ?> <td class="COLUMN_NUMBER"> <div><?=(!CSaleBasketHelper::isSetItem($arItem)) ? $productNumber : ""?></div> </td> <? } if ($columnCode == "COLUMN_IMAGE") { ?> <td class="COLUMN_IMAGE"> <? $productImg = ""; if ($bUseIblock) { $arProductInfo = $arBasketElement[$arItem["PRODUCT_ID"]]; if($arProductInfo["PREVIEW_PICTURE"] != "") $productImg = $arProductInfo["PREVIEW_PICTURE"]; elseif($arProductInfo["DETAIL_PICTURE"] != "") $productImg = $arProductInfo["DETAIL_PICTURE"]; } if ($productImg != "") { $arFile = CFile::GetFileArray($productImg); $productImg = CFile::ResizeImageGet($arFile, array('width'=>80, 'height'=>80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false); $arItem["PICTURE"] = $productImg; } if (is_array($arItem["PICTURE"])) echo '<img src="'.$arItem["PICTURE"]["src"].'" alt="" border="0" />'; else echo '<div class="no_foto">'.GetMessage('SOD_NO_FOTO').'</div>'; ?> </td> <? } if ($columnCode == "COLUMN_NAME") { if ($bUseIblock) { $arProductInfo = $arBasketElement[$arItem["PRODUCT_ID"]]; if ($arProductInfo["IBLOCK_ID"] > 0) { $arItem["EDIT_PAGE_URL"] = CIBlock::GetAdminElementEditLink($arProductInfo["IBLOCK_ID"], $arItem["PRODUCT_ID"], array( "find_section_section" => $arProductInfo["IBLOCK_SECTION_ID"], 'WF' => 'Y', )); } } ?> <td class="COLUMN_NAME"> <div class='bx-adm-bigdata-icon-medium-inner' <?=!$arItem['RECOMMENDATION']?'style="visibility: hidden"':''?>></div> <? $linkClass = (CSaleBasketHelper::isSetItem($arItem)) ? "set-item-link-name" : ""; if (strlen($arItem["EDIT_PAGE_URL"]) > 0): ?> <a href="<?echo $arItem["EDIT_PAGE_URL"]?>" class="name-link <?=$linkClass?>" target="_blank"> <? endif; echo trim($arItem["NAME"]); if (strlen($arItem["EDIT_PAGE_URL"]) > 0): ?> </a> <? endif; if (CSaleBasketHelper::isSetParent($arItem)): ?> <div class="set-link-block"> <a class="dashed-link show-set-link" href="javascript:void(0);" id="set_toggle_link_<?=$arItem["SET_PARENT_ID"]?>" onclick="fToggleSetItems(<?=$arItem["SET_PARENT_ID"]?>);"><?=GetMessage("SOD_SHOW_SET")?></a> </div> <? endif; ?> </td> <? } if ($columnCode == "COLUMN_QUANTITY") { $measure = (isset($arItem["MEASURE_TEXT"])) ? $arItem["MEASURE_TEXT"] : ""; ?> <td class="COLUMN_QUANTITY"> <?echo $arItem["QUANTITY"]." ".$measure?> </td> <? } if ($columnCode == "COLUMN_REMAINING_QUANTITY") { ?> <td class="COLUMN_REMAINING_QUANTITY"> <? $balance = 0; if ($arItem["MODULE"] == "catalog" && $bUseCatalog) { $ar_res = CCatalogProduct::GetByID($arItem["PRODUCT_ID"]); $balance = FloatVal($ar_res["QUANTITY"]); } ?> <?echo $balance?> </td> <? } if ($columnCode == "COLUMN_PROPS") { ?> <td class="COLUMN_PROPS"> <? if (!empty($arBasketProps[$arItem["ID"]]) && is_array($arBasketProps[$arItem["ID"]])) { foreach ($arBasketProps[$arItem["ID"]] as &$val) { echo htmlspecialcharsex($val["NAME"].": ".$val["VALUE"])."<br />"; } if (isset($val)) unset($val); } ?> </td> <? } if ($columnCode == "COLUMN_PRICE") { ?> <td class="COLUMN_PRICE" nowrap> <? $priceDiscount = $priceBase = ($arItem["DISCOUNT_PRICE"] + $arItem["PRICE"]); if(DoubleVal($priceBase) > 0) $priceDiscount = roundEx(($arItem["DISCOUNT_PRICE"] * 100) / $priceBase, SALE_VALUE_PRECISION); ?> <div class="edit_price"> <span class="default_price_product" > <span class="formated_price"><?=CCurrencyLang::CurrencyFormat($arItem["PRICE"], $arItem["CURRENCY"], false);?></span> </span> <span class="currency_price"><?=$CURRENCY_FORMAT?></span> </div> <? if (0 < $priceDiscount) { ?><div class="base_price" id="DIV_BASE_PRICE_WITH_DISCOUNT_<?=$arItem["PRODUCT_ID"]?>"> <?=CCurrencyLang::CurrencyFormat($priceBase, $arItem["CURRENCY"], false);?> <span class="currency_price"><?=$CURRENCY_FORMAT?></span> </div><? if ('Y' != $arItem["CUSTOM_PRICE"]) { ?><div class="discount">(<? echo GetMessage('SOD_PRICE_DISCOUNT')." ".$priceDiscount?>%)</div><? } } ?><div class="base_price_title"> <?=('Y' == $arItem["CUSTOM_PRICE"]) ? GetMessage("SOD_BASE_CATALOG_PRICE") : $arItem["NOTES"];?> </div> </td> <? } if ($columnCode == "COLUMN_SUM") { ?> <td class="COLUMN_SUM" nowrap> <? if (!CSaleBasketHelper::isSetItem($arItem)): ?> <div><?=CCurrencyLang::CurrencyFormat(($arItem["QUANTITY"] * $arItem["PRICE"]), $arItem["CURRENCY"], false);?> <span><?=$CURRENCY_FORMAT?></span></div> <? endif; ?> </td> <? } if (substr($columnCode, 0, 9) == "PROPERTY_") { ?> <td class="property_field <?=$columnCode?>"> <?=getIblockPropInfo($arBasketPropsValues[$arItem["PRODUCT_ID"]][$columnCode."_VALUE"], $arIblockProps[$columnCode], array("WIDTH" => 90, "HEIGHT" => 90), $ID);?> </td> <? } } ?> </tr> <? }//end while order } ?> </table> </td> </tr> <script type="text/javascript"> function fToggleSetItems(setParentId) { var elements = document.getElementsByClassName('set_item_' + setParentId); var hide = false; for (var i = 0; i < elements.length; ++i) { if (elements[i].style.display == 'none' || elements[i].style.display == '') { elements[i].style.display = 'table-row'; hide = true; } else elements[i].style.display = 'none'; } if (hide) BX("set_toggle_link_" + setParentId).innerHTML = '<?=GetMessage("SOD_HIDE_SET")?>'; else BX("set_toggle_link_" + setParentId).innerHTML = '<?=GetMessage("SOD_SHOW_SET")?>'; } </script> <? $tabControl->EndCustomField("orders_list"); $tabControl->BeginCustomField("orders_itog", GetMessage("SOD_ORDER_ITOG")); ?> <tr> <td colspan="2" valign="top"> <br> <table width="100%" class="order_summary"> <tr> <td class="load_product" valign="top"> <table width="100%" class="itog_header"><tr><td><?=GetMessage('SOD_SUBTAB_RECOM_REQUEST');?></td></tr></table> <br> <div id="tabs"> <? $displayNone = "block"; $displayNoneBasket = "block"; $displayNoneViewed = "block"; $arRecommendedResult = CSaleProduct::GetRecommendetProduct($arOrder["USER_ID"], $arOrder["LID"], $arFilterRecomendet); $recomCnt = count($arRecommendedResult); if ($recomCnt > 2) { $arTmp = array(); $arTmp[] = $arRecommendedResult[0]; $arTmp[] = $arRecommendedResult[1]; $arRecommendedResult = $arTmp; } if ($recomCnt <= 0) $displayNone = "none"; $arErrors = array(); $arFuserItems = CSaleUser::GetList(array("USER_ID" => intval($arOrder["USER_ID"]))); $arCartWithoutSetItems = array(); $arTmpShoppingCart = CSaleBasket::DoGetUserShoppingCart($arOrder["LID"], $arOrder["USER_ID"], $arFuserItems["ID"], $arErrors, array()); if (is_array($arTmpShoppingCart)) { foreach ($arTmpShoppingCart as $arCartItem) { if (CSaleBasketHelper::isSetItem($arCartItem)) continue; $arCartWithoutSetItems[] = $arCartItem; } } $basketCnt = count($arCartWithoutSetItems); if ($basketCnt > 2) { $arTmp = array(); $arTmp[] = $arCartWithoutSetItems[0]; $arTmp[] = $arCartWithoutSetItems[1]; $arCartWithoutSetItems = $arTmp; } if ($basketCnt <= 0) $displayNoneBasket = "none"; /// $arViewed = array(); $arViewedIds = array(); $viewedCount = 0; $mapViewed = array(); if (CModule::includeModule("catalog")) { $viewedIterator = \Bitrix\Catalog\CatalogViewedProductTable::getList(array( 'order' => array("DATE_VISIT" => "DESC"), 'filter' => array('FUSER_ID' => $arFuserItems["ID"], "SITE_ID" =>$arOrder["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" ) )); while($viewed = $viewedIterator->fetch()) { $viewed['MODULE'] = 'catalog'; $arViewed[$viewedCount] = $viewed; $arViewedIds[] = $viewed['PRODUCT_ID']; $mapViewed[$viewed['PRODUCT_ID']] = $viewedCount; $viewedCount++; } unset($viewedCount); $baseGroup = CCatalogGroup::getBaseGroup(); if (!empty($arViewedIds)) { $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"]; } } } $viewedCnt = count($arViewed); $arViewed = array_slice($arViewed, 0, 2); if (count($arViewed) <= 0) $displayNoneViewed = "none"; } else { $displayNoneViewed = "none"; } $tabBasket = "tabs"; $tabViewed = "tabs"; if ($displayNoneBasket == 'none' && $displayNone == 'none' && $displayNoneViewed == 'block') $tabViewed .= " active"; if ($displayNoneBasket == 'block' && $displayNone == 'none') $tabBasket .= " active"; ?> <div id="tab_1" style="display:<?=$displayNone?>" class="tabs active" onClick="fTabsSelect('buyer_recmon', this);" ><?=GetMessage('SOD_SUBTAB_RECOMENET')?></div> <div id="tab_2" style="display:<?=$displayNoneBasket?>" class="<?=$tabBasket?>" onClick="fTabsSelect('buyer_basket', this);"><?=GetMessage('SOD_SUBTAB_BASKET')?></div> <div id="tab_3" style="display:<?=$displayNoneViewed?>" class="<?=$tabViewed?>" onClick="fTabsSelect('buyer_viewed', this);"><?=GetMessage('SOD_SUBTAB_LOOKED')?></div> <? if ($displayNone == 'block') { $displayNoneBasket = 'none'; $displayNoneViewed = 'none'; } if ($displayNoneBasket == 'block') { $displayNone = 'none'; $displayNoneViewed = 'none'; } if ($displayNoneViewed == 'block') { $displayNone = 'none'; $displayNoneBasket = 'none'; } ?> <div id="buyer_recmon" class="tabstext active" style="display:<?=$displayNone?>"> <?echo fGetFormatedProductData($arOrder["USER_ID"], $arOrder["LID"], $arRecommendedResult, $recomCnt, $arOrder["CURRENCY"], 'recom', $crmMode);?> </div> <div id="buyer_basket" class="tabstext active" style="display:<?=$displayNoneBasket?>"> <? if (count($arCartWithoutSetItems) > 0) echo fGetFormatedProductData($arOrder["USER_ID"], $arOrder["LID"], $arCartWithoutSetItems, $basketCnt, $arOrder["CURRENCY"], 'basket', $crmMode); ?> </div> <div id="buyer_viewed" class="tabstext active" style="display:<?=$displayNoneViewed?>"> <? if (count($arViewed) > 0) echo fGetFormatedProductData($arOrder["USER_ID"], $arOrder["LID"], $arViewed, $viewedCnt, $arOrder["CURRENCY"], 'viewed', $crmMode); ?> </div> </div> <script type="text/javascript"> function fTabsSelect(tabText, el) { BX('tab_1').className = "tabs"; BX('tab_2').className = "tabs"; BX('tab_3').className = "tabs"; BX(el).className = "tabs active"; BX(el).className = "tabs active"; BX(el).style.display = 'block'; BX('buyer_recmon').className = "tabstext"; BX('buyer_basket').className = "tabstext"; BX('buyer_viewed').className = "tabstext"; BX('buyer_recmon').style.display = 'none'; BX('buyer_basket').style.display = 'none'; BX('buyer_viewed').style.display = 'none'; BX(tabText).style.display = 'block'; BX(tabText).className = "tabstext active"; } </script> </td> <td class="summary" valign="top"> <div class="order-itog"> <table> <tr> <td class="title"><?echo GetMessage("SOD_TOTAL_PRICE")?></td> <td nowrap style="white-space:nowrap;"><?=SaleFormatCurrency($ORDER_TOTAL_PRICE, $arOrder["CURRENCY"]);?></td> </tr> <tr class="price"> <td class="title"><?echo GetMessage("SOD_TOTAL_PRICE_WITH_DISCOUNT_MARGIN")?></td> <td nowrap style="white-space:nowrap;"><?=SaleFormatCurrency($orderBasketPrice, $arOrder["CURRENCY"]);?></td> </tr> <tr> <td class="title"><?echo GetMessage("SOD_TOTAL_PRICE_DELIVERY")?></td> <td nowrap style="white-space:nowrap;"><?=SaleFormatCurrency($arOrder["PRICE_DELIVERY"], $arOrder["CURRENCY"]);?></td> </tr> <?if (floatval($arOrder["DISCOUNT_VALUE"]) > 0):?> <tr class="price"> <td class="title" > <?echo GetMessage("NEWO_TOTAL_DISCOUNT_PRICE_VALUE")?> </td> <td nowrap style="white-space:nowrap;"> <div><?=SaleFormatCurrency($arOrder["DISCOUNT_VALUE"], $arOrder["CURRENCY"]);?></div> </td> </tr> <?endif;?> <?if ($ORDER_TOTAL_WEIGHT > 0):?> <tr> <td class="title"><?echo GetMessage("NEWO_TOTAL_WEIGHT")?></td> <td nowrap style="white-space:nowrap;"> <?=roundEx(DoubleVal($ORDER_TOTAL_WEIGHT/$WEIGHT_KOEF), SALE_WEIGHT_PRECISION)." ".$WEIGHT_UNIT;?> </td> </tr> <?endif;?> <tr class="itog"> <td class="ileft"><div style="white-space:nowrap;"><?echo GetMessage("SOD_TOTAL_PRICE_TOTAL")?></div></td> <td class="iright" nowrap><div style="white-space:nowrap;"><?=SaleFormatCurrency($arOrder["PRICE"], $arOrder["CURRENCY"]);?></div></td> </tr> <?if (floatval($arOrder["SUM_PAID"]) > 0 && $arOrder["PAYED"] != "Y"):?> <tr class="price"> <td class="title"><?echo GetMessage("SOD_TOTAL_PRICE_PAYED")?></td> <td nowrap style="white-space:nowrap;"><?=SaleFormatCurrency($arOrder["SUM_PAID"], $arOrder["CURRENCY"]);?></td> </tr> <?endif;?> <?if ($arOrder["PAYED"] == "Y"):?> <tr class="price"> <td class="title"><?echo GetMessage("SOD_TOTAL_PRICE_PAYED")?></td> <td nowrap style="white-space:nowrap;"><?=SaleFormatCurrency($arOrder["PRICE"], $arOrder["CURRENCY"]);?></td> </tr> <?endif;?> </table> </div> </td> </tr> </table> <script type="text/javascript"> /* * click on recommendet More */ function fGetMoreProduct(type) { BX.showWait(); productData = <? echo CUtil::PhpToJSObject($arFilterRecomendet); ?>; var userId = '<?=$arOrder["USER_ID"]?>'; var fUserId = '<?=$arFuserItems["ID"]?>'; var currency = '<?=$arOrder["CURRENCY"]?>'; var lid = '<?=$arOrder["LID"]?>'; BX.ajax.post('/bitrix/admin/sale_order_detail.php', '<?=CUtil::JSEscape(bitrix_sessid_get())?>&ORDER_AJAX=Y&type='+type+'&arProduct='+productData+'¤cy='+currency+'&LID='+lid+'&userId='+userId+'&fUserId='+fUserId+'&ID=<?=$ID?>', fGetMoreProductResult); } function fGetMoreProductResult(res) { BX.closeWait(); var rs = eval( '('+res+')' ); if (rs["ITEMS"].length > 0) { if (rs["TYPE"] == 'basket') BX("buyer_basket").innerHTML = rs["ITEMS"]; if (rs["TYPE"] == 'recom') BX("buyer_recmon").innerHTML = rs["ITEMS"]; if (rs["TYPE"] == 'viewed') BX("buyer_viewed").innerHTML = rs["ITEMS"]; } } </script> </td> </tr> <? $tabControl->EndCustomField("orders_itog"); $tabControl->BeginNextFormTab(); $tabControl->BeginCustomField("TRANSACT", GetMessage("SODN_TAB_TRANSACT")); ?> <tr> <td colspan="2"> <? $dbTransact = CSaleUserTransact::GetList( array("TRANSACT_DATE" => "DESC"), array("ORDER_ID" => $ID), false, false, array("ID", "USER_ID", "AMOUNT", "CURRENCY", "DEBIT", "ORDER_ID", "DESCRIPTION", "NOTES", "TIMESTAMP_X", "TRANSACT_DATE") ); ?> <table cellpadding="3" cellspacing="1" border="0" width="100%" class="adm-list-table" style="border:1px solid #CCC"> <tr class="adm-list-table-header"> <td class="adm-list-table-cell"><div class="adm-list-table-cell-inner"><?echo GetMessage("SOD_TRANS_DATE")?></div></td> <td class="adm-list-table-cell"><div class="adm-list-table-cell-inner"><?echo GetMessage("SOD_TRANS_USER")?></div></td> <td class="adm-list-table-cell"><div class="adm-list-table-cell-inner"><?echo GetMessage("SOD_TRANS_SUM")?></div></td> <td class="adm-list-table-cell"><div class="adm-list-table-cell-inner"><?echo GetMessage("SOD_TRANS_DESCR")?></div></td> <td class="adm-list-table-cell"><div class="adm-list-table-cell-inner"><?echo GetMessage("SOD_TRANS_COMMENT")?></div></td> </tr> <? $bNoTransact = True; while ($arTransact = $dbTransact->Fetch()) { $bNoTransact = False; ?> <tr class="adm-list-table-row"> <td class="adm-list-table-cell"><?= $arTransact["TRANSACT_DATE"]; ?></td> <td class="adm-list-table-cell"> <?echo GetFormatedUserName($arTransact["USER_ID"]);?> </td> <td class="adm-list-table-cell"> <? echo (($arTransact["DEBIT"] == "Y") ? "+" : "-"); echo SaleFormatCurrency($arTransact["AMOUNT"], $arTransact["CURRENCY"]); ?> </td> <td class="adm-list-table-cell"> <? if (array_key_exists($arTransact["DESCRIPTION"], $arTransactTypes)) echo htmlspecialcharsEx($arTransactTypes[$arTransact["DESCRIPTION"]]); else echo htmlspecialcharsEx($arTransact["DESCRIPTION"]); ?> </td> <td class="adm-list-table-cell" align="right"> <?echo htmlspecialcharsEx($arTransact["NOTES"]) ?> </td> </tr> <? } if ($bNoTransact) { ?> <tr> <td colspan="5" align="center"> <?echo GetMessage("SOD_NO_TRANS")?> </td> </tr> <? } ?> </table> </td> </tr> <? $tabControl->EndCustomField("TRANSACT", ''); $tabControl->BeginNextFormTab(); $tabControl->BeginCustomField("ORDER_HISTORY", GetMessage("SODN_TAB_HISTORY")); ?> <tr> <td colspan="2" valign="top"> <div id="trans-history"></div> </td> </tr> <? $tabControl->EndCustomField("ORDER_HISTORY", ''); $tabControl->Show(); } } ?> <div id="tr-sourse" style="display:none;"> <form name="find_form5" method="GET" action="<? echo $APPLICATION->GetCurPage(); ?>?"> <input type="hidden" name="ID" value="<?=$ID?>"> <? $arFilterFieldsTmp = array( "filter_user" => GetMessage("SOA_ROW_BUYER"), "filter_date_history" => GetMessage("SALE_F_DATE"), "filter_status_id" => GetMessage("SALE_F_DATE_UPDATE"), "filter_payed" => GetMessage("SALE_F_ID"), "filter_allow_delivery" => GetMessage("SALE_F_LANG_CUR"), "filter_canceled" => GetMessage("SOA_F_PRICE"), "filter_deducted" => GetMessage("SOA_F_PRICE"), "filter_marked" => GetMessage("SOA_F_PRICE") ); $oFilter = new CAdminFilter( $sTableID_tab5."_filters", $arFilterFieldsTmp ); $oFilter->SetDefaultRows(array("filter_user")); $oFilter->Begin(); ?> <tr> <td><?=GetMessage('SOD_HIST_H_USER')?>:</td> <td> <?echo FindUserID("filter_user", $filter_user, "", "find_form5");?> </td> </tr> <tr> <td><?=GetMessage('SOD_HIST_H_DATE')?>:</td> <td> <?echo CalendarPeriod("filters_date_history_from", $filters_date_history_from, "filters_date_history_to", $filters_date_history_to, "find_form5", "Y")?> </td> </tr> <tr> <td><?=GetMessage('SOD_HIST_TYPE')?>:</td> <td> <select name="filter_type"> <option value=""><?echo GetMessage("SOD_HIST_ALL")?></option> <? foreach ($arOperations as $type => $name) { ?> <option value="<?=$type?>"<?if ($filter_type== $type) echo " selected"?>><?=$name?></option> <? } ?> </select> </td> </tr> <? $oFilter->Buttons( array( "table_id" => $sTableID_tab5, "url" => $APPLICATION->GetCurPage(), "form" => "find_form5" ) ); $oFilter->End(); ?> </form> <?$lAdmin_tab5->DisplayList(array("FIX_HEADER" => false, "FIX_FOOTER" => false));?> </div> <div class="sale_popup_form" id="popup_form_sku_order" style="display:none;"> <table width="100%"> <tr><td></td></tr> <tr> <td><small><span id="listItemPrice"></span> <span id="listItemOldPrice"></span></small></td> </tr> <tr> <td><hr></td> </tr> </table> <table width="100%" id="sku_selectors_list"> <tr> <td colspan="2"></td> </tr> </table> <span id="prod_order_button"></span> <input type="hidden" value="" name="popup-params-product" id="popup-params-product" > </div> <script type="text/javascript"> var wind = new BX.PopupWindow('popup_sku', this, { offsetTop : 10, offsetLeft : 0, autoHide : true, closeByEsc : true, closeIcon : true, titleBar : true, draggable: {restrict:true}, titleBar: {content: BX.create("span", {html: '', 'props': {'className': 'sale-popup-title-bar'}})}, content : BX("popup_form_sku_order"), buttons: [ new BX.PopupWindowButton({ text : '<?=GetMessageJS('SOD_POPUP_CAN_BUY_NOT');?>', id : "popup_sku_save", events : { click : function() { if (BX('popup-params-product') && BX('popup-params-product').value.length > 0) { window.location = BX('popup-params-product').value; wind.close(); } } } }), new BX.PopupWindowButton({ text : '<?=GetMessageJS('SOD_POPUP_CLOSE');?>', id : "popup_sku_cancel", events : { click : function() { wind.close(); } } }) ] }); function fAddToBasketMoreProductSku(arSKU, arProperties, type, message) { BX.message(message); wind.show(); buildSelect("sku_selectors_list", 0, arSKU, arProperties, type); var properties_num = arProperties.length; var lastPropCode = arProperties[properties_num-1].CODE; addHtml(lastPropCode, arSKU, type); } function buildSelect(cont_name, prop_num, arSKU, arProperties, type) { var properties_num = arProperties.length; var lastPropCode = arProperties[properties_num-1].CODE; for (var i = prop_num; i < properties_num; i++) { var q = BX('prop_' + i); if (q) q.parentNode.removeChild(q); } var select = BX.create('SELECT', { props: { name: arProperties[prop_num].CODE, id : arProperties[prop_num].CODE }, events: { change: (prop_num < properties_num-1) ? function() { buildSelect(cont_name, prop_num + 1, arSKU, arProperties, type); if (this.value != "null") BX(arProperties[prop_num+1].CODE).disabled = false; addHtml(lastPropCode, arSKU, type); } : function() { if (this.value != "null") addHtml(lastPropCode, arSKU, type); } } }); if (prop_num != 0) select.disabled = true; var ar = []; select.add(new Option(arProperties[prop_num].NAME, 'null')); for (var i = 0; i < arSKU.length; i++) { if (checkSKU(arSKU[i], prop_num, arProperties) && !BX.util.in_array(arSKU[i][prop_num], ar)) { select.add(new Option( arSKU[i][prop_num], prop_num < properties_num-1 ? arSKU[i][prop_num] : arSKU[i]["ID"] )); ar.push(arSKU[i][prop_num]); } } var cont = BX.create('tr', { props: {id: 'prop_' + prop_num}, children:[ BX.create('td', {html: arProperties[prop_num].NAME + ': '}), BX.create('td', { children:[ select ]}) ] }); var tmp = BX.findChild(BX(cont_name), {tagName:'tbody'}, false, false); tmp.appendChild(cont); if (prop_num < properties_num-1) buildSelect(cont_name, prop_num + 1, arSKU, arProperties, type); } function checkSKU(SKU, prop_num, arProperties) { for (var i = 0; i < prop_num; i++) { code = BX.findChild(BX('popup_sku'), {'attr': {name: arProperties[i].CODE}}, true, false).value; if (SKU[i] != code) return false; } return true; } function addHtml(lastPropCode, arSKU, type) { var selectedSkuId = BX(lastPropCode).value; var btnText = ''; BX('popup-window-titlebar-popup_sku').innerHTML = '<span class="sale-popup-title-bar">'+arSKU[0]["PRODUCT_NAME"]+'</span>'; BX("listItemPrice").innerHTML = BX.message('PRODUCT_PRICE_FROM')+" "+arSKU[0]["MIN_PRICE"]; BX("listItemOldPrice").innerHTML = ''; for (var i = 0; i < arSKU.length; i++) { if (arSKU[i]["ID"] == selectedSkuId) { BX('popup-window-titlebar-popup_sku').innerHTML = '<span class="sale-popup-title-bar">'+arSKU[i]["NAME"]+'</span>'; if (arSKU[i]["DISCOUNT_PRICE"] != "") { BX("listItemPrice").innerHTML = arSKU[i]["DISCOUNT_PRICE_FORMATED"]+" "+arSKU[i]["VALUTA_FORMAT"]; BX("listItemOldPrice").innerHTML = arSKU[i]["PRICE_FORMATED"]+" "+arSKU[i]["VALUTA_FORMAT"]; summaFormated = arSKU[i]["DISCOUNT_PRICE_FORMATED"]; price = arSKU[i]["DISCOUNT_PRICE"]; priceFormated = arSKU[i]["DISCOUNT_PRICE_FORMATED"]; priceDiscount = arSKU[i]["PRICE"] - arSKU[i]["DISCOUNT_PRICE"]; } else { BX("listItemPrice").innerHTML = arSKU[i]["PRICE_FORMATED"]+" "+arSKU[i]["VALUTA_FORMAT"]; BX("listItemOldPrice").innerHTML = ""; summaFormated = arSKU[i]["PRICE_FORMATED"]; price = arSKU[i]["PRICE"]; priceFormated = arSKU[i]["PRICE_FORMATED"]; priceDiscount = 0; } if (arSKU[i]["CAN_BUY"] == "Y") { BX('popup-params-product').value = "/bitrix/admin/sale_order_new.php?lang=<? echo LANGUAGE_ID; ?>&user_id="+arSKU[i]["USER_ID"]+"&LID="+arSKU[i]["LID"]+"&product["+arSKU[i]["ID"]+"]=1"; message = BX.message('PRODUCT_ADD'); } else { BX('popup-params-product').value = ''; message = BX.message('PRODUCT_NOT_ADD'); } BX.findChild(BX('popup_sku_save'), {'className': 'popup-window-button-text' }, true, false).innerHTML = message; } if (arSKU[i]["ID"] == selectedSkuId) break; } } //BX.ready(function(){setTimeout(function(){BX('trans-history').appendChild(BX('tr-sourse')); BX.show(BX('tr-sourse'));},300);}) BX.ready(function(){ BX('trans-history').appendChild(BX('tr-sourse')); BX.show(BX('tr-sourse')); }) </script> <? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); ?>