/** * @var CDatabase $DB * @var CMain $APPLICATION */ require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/general/admin_tool.php"); $moduleId = "sale"; Bitrix\Main\Loader::includeModule('sale'); use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); $ID = intval($_GET["ID"]); /** @var \Bitrix\Sale\Order $saleOrder */ if (!isset($saleOrder) || !($saleOrder instanceof \Bitrix\Sale\Order)) $saleOrder = \Bitrix\Sale\Order::load($ID); $shipmentCollection = $saleOrder->getShipmentCollection(); $paymentCollection = $saleOrder->getPaymentCollection(); $sTableHistory = "table_order_history"; $oSortHistory = new CAdminSorting($sTableHistory); $lAdminHistory = new CAdminList($sTableHistory, $oSortHistory); //FILTER ORDER CHANGE HISTORY $arFilterFieldsHistory = array( "filter_user", "filter_date_history", "filter_type" ); $lAdminHistory->InitFilter($arFilterFieldsHistory); $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 (isset($entity)) $arFilterHistory = array_merge($entity, $arFilterHistory); 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"))) { 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")), 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, $sTableHistory); $dbRecords->NavStart(); $lAdminHistory->NavText($dbRecords->GetNavPrint(Loc::getMessage('SOD_HIST_LIST'))); $histdHeader = array( array("id"=>"DATE_CREATE", "content"=>Loc::getMessage("SOD_HIST_H_DATE"), "sort"=>"DATE_CREATE", "default"=>true), array("id"=>"USER_ID", "content"=>Loc::getMessage("SOD_HIST_H_USER"), "sort"=>"USER_ID", "default"=>true), array("id"=>"TYPE", "content"=>Loc::getMessage("SOD_HIST_TYPE"), "sort"=>"TYPE", "default"=>true), array("id"=>"DATA", "content"=>Loc::getMessage("SOD_HIST_DATA"), "sort"=>"", "default"=>true), ); if (!isset($entity)) { $histdHeader[] = array("id"=>"ENTITY_ID", "content"=>Loc::getMessage("SOD_HIST_ENTITY_ID"), "sort"=>"", "default"=>true); } $lAdminHistory->AddHeaders($histdHeader); $arOperations = array(); while ($arChangeRecord = $dbRecords->Fetch()) { $entityName = ''; $row =& $lAdminHistory->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"])); if (!isset($entity)) { if ($arChangeRecord["ENTITY"] == 'SHIPMENT') { $shipment = $shipmentCollection->getItemById($arChangeRecord["ENTITY_ID"]); if ($shipment) $entityName = $shipment->getField('DELIVERY_NAME'); } else if ($arChangeRecord["ENTITY"] == 'PAYMENT') { $payment = $paymentCollection->getItemById($arChangeRecord["ENTITY_ID"]); if ($payment) $entityName = $payment->getField('PAY_SYSTEM_NAME'); } } $row->AddField("ENTITY_ID", htmlspecialcharsbx($entityName)); $arOperations[$arChangeRecord["TYPE"]] = $arRecord["NAME"]; } if($_REQUEST["table_id"] == $sTableHistory) $lAdminHistory->CheckListMode(); ?>