%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/sale.mobile.order.history/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/sale.mobile.order.history/component.php |
<?
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
if (!CModule::IncludeModule('sale'))
{
ShowError(GetMessage("SMOH_SALE_NOT_INSTALLED"));
return;
}
if (isset($_REQUEST['id']))
$orderId = $_REQUEST['id'];
else
return;
$bUserCanViewOrder = CSaleOrder::CanUserViewOrder($orderId, $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID());
if(!$bUserCanViewOrder)
{
echo ShowError(GetMessage("SMOH_NO_PERMS2VIEW"));
return;
}
if (!CModule::IncludeModule('mobileapp'))
{
ShowError("SMOH_MOBILEAPP_NOT_INSTALLED");
return;
}
$arResult["ORDER"] = CSaleMobileOrderUtils::getOrderInfoDetail($orderId);
if (!function_exists("convertHistoryToNewFormat"))
{
function convertHistoryToNewFormat($arFields)
{
foreach ($arFields as $fieldname => $fieldvalue)
{
if (strlen($fieldvalue) > 0)
{
foreach (CSaleOrderChangeFormat::$operationTypes as $code => $arInfo)
{
if (in_array($fieldname, $arInfo["TRIGGER_FIELDS"]))
{
$arData = array();
foreach ($arInfo["DATA_FIELDS"] as $field)
$arData[$field] = $arFields["$field"];
return array(
"ID" => $arFields["ID"],
"ORDER_ID" => $arFields["H_ORDER_ID"],
"TYPE" => $code,
"DATA" => serialize($arData),
"DATE_CREATE" => $arFields["H_DATE_INSERT"],
"DATE_MODIFY" => $arFields["H_DATE_INSERT"],
"USER_ID" => $arFields["H_USER_ID"]
);
}
}
}
}
return false;
}
}
$arHistoryData = array();
$bUseOldHistory = false;
$usersIds = array();
// 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" => $orderId),
false,
false,
array("*")
);
while ($arHistory = $dbHistory->Fetch())
{
$res = convertHistoryToNewFormat($arHistory);
if ($res)
{
if(!in_array($res["USER_ID"], $usersIds))
$usersIds[] = $res["USER_ID"];
$arHistoryData[] = $res;
$bUseOldHistory = true;
}
}
// new order history data
$dbOrderChange = CSaleOrderChange::GetList(
array("DATE_CREATE" => "DESC"),
array("ORDER_ID" => $orderId),
false,
false,
array("*")
);
while ($arChangeRecord = $dbOrderChange->Fetch())
{
if(!in_array($arChangeRecord["USER_ID"], $usersIds))
$usersIds[] = $arChangeRecord["USER_ID"];
$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["DATE_CREATE"];
$arIds = array();
foreach ($arHistoryData as $index => $arHistoryRecord)
$arIds[$index] = $arHistoryRecord["ID"];
array_multisort($arData, SORT_DESC, $arIds, SORT_DESC, $arHistoryData);
}
$dbRecords = new CDBResult;
$dbRecords->InitFromArray($arHistoryData);
$arResult["STATUSES"] = array();
$dbStatusList = CSaleStatus::GetList(
array("SORT" => "ASC"),
array("LID" => LANGUAGE_ID),
false,
false,
array("ID", "NAME")
);
while ($arStatusList = $dbStatusList->Fetch())
$arResult["STATUSES"][htmlspecialcharsbx($arStatusList["ID"])] = htmlspecialcharsbx($arStatusList["NAME"]);
$arResult["PAY_SYSTEMS"] = array();
$dbPaySystemList = CSalePaySystem::GetList(
array("SORT"=>"ASC"),
array()
);
while ($arPaySystemList = $dbPaySystemList->Fetch())
$arResult["PAY_SYSTEMS"][$arPaySystemList["ID"]] = htmlspecialcharsbx($arPaySystemList["NAME"]);
$userCache = array();
$deliveryCache = array();
$usersList = array();
$dbUser = \Bitrix\Main\UserTable::getList(array(
'filter' => array(
'ID' => $usersIds
),
'select' => array("ID", "LOGIN", "NAME", "LAST_NAME")
));
while($user = $dbUser->fetch())
$usersList[$user["ID"]] = $user;
while ($arHistory = $dbRecords->Fetch())
{
$arHistory["USER"]["LOGIN"] = $usersList[$arHistory["USER_ID"]]["LOGIN"];
$arHistory["USER"]["NAME"] = $usersList[$arHistory["USER_ID"]]["NAME"];
$arHistory["USER"]["LAST_NAME"] = $usersList[$arHistory["USER_ID"]]["LAST_NAME"];
$arHistory = array_merge($arHistory, CSaleOrderChange::GetRecordDescription($arHistory["TYPE"], $arHistory["DATA"]));
$arResult["HISTORY"][] = $arHistory;
}
$this->IncludeComponentTemplate();
?>