В редакции битрикса "Малый бизнес" отсутствует функционал раздела "Покупатели". И по этой причине отсутствует возможность при необходимости быстро посмотреть заказы определенного клиента. Выйти из ситуации поможет следующее решение - выводим список всех заказов пользователя в дополнительной вкладке при просмотре любого его заказа в панели администрирования 1C Bitrix.
Данный код добавляем в init.php и, при необходимости, модифицируем его под себя. В коде есть проверка на пользователя с ID 1 - она необходима, если есть один пользователь, к которому привязываются все заказы, сделанные без регистрации (частный случай реализации). Если такого нет в Вашем проекте, то эта проверка на на какого-то конкретного пользователя не нужна.
\Bitrix\Main\EventManager::getInstance()->addEventHandler("main", "OnAdminSaleOrderView", array("MyTab", "onInit"));
class MyTab
{
public static function onInit()
{
return array(
"TABSET" => "MyTab",
"GetTabs" => array("MyTab", "mygetTabs"),
"ShowTab" => array("MyTab", "myshowTab"),
"Action" => array("MyTab", "myaction"),
"Check" => array("MyTab", "mycheck"),
);
}
public static function myaction($arArgs)
{
return true;
}
public static function mycheck($arArgs)
{
return true;
}
public static function mygetTabs($arArgs)
{
return array(array("DIV" => "edit1", "TAB" => "История заказов",
"ICON" => "sale", "TITLE" => "Список заказов клиента",
"SORT" => 1)
);
}
public static function myshowTab($divName, $arArgs, $bVarsFromForm)
{
$order = \Bitrix\Sale\Order::load($arArgs["ID"]);
$order_user_id = $order->getUserId();
if(!empty($order_user_id) && $order_user_id>1) {
$registry = \Bitrix\Sale\Registry::getInstance(\Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER);
$orderClassName = $registry->getOrderClassName();
$orderResult = $orderClassName::getList(array(
'filter' => [
'USER_ID' => $order_user_id,
'LID' => 's1',
],
'select' => ['ID'],
'order' => ['ID' => 'DESC'],
));
$all_summ = 0;
echo '<div class="client-order-list">';
while($row = $orderResult->fetch()){
$order_in_list = \Bitrix\Sale\Order::load($row['ID']);
$order_summ = $order_in_list->getField('PRICE');
$order_id = $order_in_list->getField('ID');
$order_date = $order_in_list->getField('DATE_INSERT');
switch($order_in_list->getField('STATUS_ID')){
case 'C':
$status_text = "Отменен";
$status_color = "#ff0000";
break;
case 'D':
$status_text = "Передан на доставку";
$status_color = "#7c4900";
break;
case 'F':
$status_text = "Выполен";
$status_color = "#00a650";
$all_summ += $order_summ;
break;
case 'N':
$status_text = "Новый заказ";
$status_color = "#ffffff";
break;
case 'P':
$status_text = "Оплачен";
$status_color = "#fff100";
break;
case 'ST':
$status_text = "Занесен в таблицу";
$status_color = "#04b4ab";
break;
default:
$status_text = "";
$status_color = "transparent";
}
echo '<div class="client-order-list-item">';
echo '<div>Заказ № <a href="/bitrix/admin/sale_order_view.php?amp%3Bfilter=Y&%3Bset_filter=Y&lang=ru&ID='.$order_id.'">'.$order_id.'</a> от '.$order_date.' на сумму '.$order_summ.' руб. </div>';
echo '<div style="background-color:'.$status_color.'">'.$status_text.'</div>';
echo '</div>';
}
echo '</div>';
if($all_summ>0){
echo '<p>Всего выполнено заказов на сумму '.$all_summ.' руб.</p>';
}
echo '<style>.client-order-list{display:flex;flex-direction:column;width:fit-content}.client-order-list-item{padding:4px 4px 4px 10px;border:1px solid #dadee1;display:flex;width:100%;justify-content:space-between;align-items:center}.client-order-list-item + .client-order-list-item{border-top:0}.client-order-list-item div:last-child{padding:3px 7px}</style>';
} else {
echo '<p>Для данного пользователя история заказов недоступна, так как заказ оформлен незарегистрированным пользователем. </p>';
echo '<p>История заказов доступна только для зарегистрированных покупателей с индивидуальной учетной записью. </p>';
}
}
}
В результате мы получаем новую вкладку в каждом заказе - "История заказов", в которой и есть список всех заказов пользователя с возможностью перехода на каждый из этих заказов и подсветкой статусов каждого заказа. Очень удобно и без необходимости перехода на более высокую редакцию 1С Битрикс.
