Иногда нужно получить данные о заказе текущего пользователя. Не через компонент, а непосредственно через API Битрикс. Вариантов, где это может понадобиться достаточно много. Например: после оформления заказ пользователем, нужно вывести ему всю информацио о заказе.
Или в кабинете пользователя, автоматически заполнить персональные данные в кабинете пользователя, если он не указал иное. В общем, думайте сами, куда это применять. Расскажу просто об этой возможности
Получаем самый свежий заказ текущего пользователя CSaleOrder::GetList
С помощью метода CSaleOrder::GetList мы можем получить все заказы, сколько бы их ни было, любого пользователя, зная его (пользователя) ID.
$arFilter = Array(
"USER_ID" => 12, //12 Это ID пользователя
);
$db_sales = CSaleOrder::GetList(
array(),
$arFilter
);
while ($ar_sales = $db_sales->Fetch()){
echo '<pre>';
print_r($ar_sales);
echo '</pre>';
}
Если нам нужно получить заказы текущего авторизованного пользователя. Просто подставляем в ID - $USER->GetID()
$arFilter = Array(
"USER_ID" => $USER->GetID(),
);
$db_sales = CSaleOrder::GetList(array(), $arFilter);
while ($ar_sales = $db_sales->Fetch()){
echo '<pre>';
print_r($ar_sales);
echo '</pre>';
}
Для дальнейших манипуляций нужно получить только самый свежий заказ, при этом достаточно знать только его ID (ID заказа). Для этого, используем параметр для CSaleOrder::GetList arNavStartParams со значением nTopCount = 1. И присвоим переменной $lastorder ID этого заказа
$arFilter = Array(
"USER_ID" => $USER->GetID(),
);
$db_sales = CSaleOrder::GetList(
array(
'DATE_INSERT' => 'DESC' // сортируем по дате в сторону убывания
),
$arFilter,
false,
array (
nTopCount => '1'
)
);
while ($ar_sales = $db_sales->Fetch()){
$lasorderid = $ar_sales['ID']; //присвоили переменной ID заказа
}
arNavStartParams: Массив параметров выборки. Может содержать ключ: "nTopCount" - количество возвращаемых методом записей будет ограничено сверху значением этого ключа
Информация о заказе CSaleOrder::GetList
Теперь, зная ID конкретного заказа мы можем получить информацию о нем и вывести на экран. Для этого используем метод CSaleOrder::GetList
CModule::IncludeModule('sale');
$res = CSaleOrder::GetList(array(), array("ID" => $lasorderid)); // ID заказа из переменной
while ($arItemOrder = $res->Fetch()) {
echo '<pre>';
print_r($arItemOrder);
echo '</pre>';
}
Или свойства этого заказа через метод CSaleOrderPropsValue::GetList
$arFilter =Array (
"ORDER_ID" => $lasorderid,
);
$db_sales_ord = CSaleOrderPropsValue::GetList(array(), $arFilter);
while ($ar_salesord = $db_sales_ord->Fetch()){
echo '<pre>';
print_r($ar_salesord);
echo '</pre>';
}
Еще больше методов относящихся к заказу, вы можете найти в официальной документации Битрикс
Получить информацию о заказах на D7
Тоже самое на новом ядре D7. Используем \Bitrix\Sale\Order::getList
$dbRes = \Bitrix\Sale\Order::getList([
'select' => ['ID'],
'filter' => [
"ID" => $lasorderid, //оплаченные
],
]);
while ($order = $dbRes->fetch()){
echo '';
print_r($order);
echo '
';
}
Получение определенных данных свойств заказа (либо указать в select => '*' что бы получить все)
$dbRes = \Bitrix\Sale\PropertyValueCollection::getList([
'select' => [
'CODE',
'NAME',
'VALUE'
],
'filter' => [
'=ORDER_ID' => $arOrder['ID'],
]
]);