mail@vecdev.ru

Своя кастомная нумерация заказов

Если у вас несколько интернет-магазинов работают под управлением БУС на многосайтовости, то возникает вопрос как разметить номера заказов для менеджеров. Для этого добавим в файл /bitrix/modules/sale/init.php код:


<?
$eventManager = \Bitrix\Main\EventManager::getInstance();

$eventManager->addEventHandlerCompatible('sale', 'OnBeforeOrderAccountNumberSet',
    function ($orderId, $type){
        if($type == 'siteid_orderid' && $orderId > 0){
            $arOrder = CSaleOrder::GetByID($orderId);
            $num = $arOrder['ID']; // получаем номер заказа
            if($arOrder['LID'] == "s1") {
                $vdOrder = $num."- Рога и копыта";
            } elseif ($arOrder['LID'] == "s2") {
                $vdOrder = $num."- Попкорн и печеньки";
            } else {
                $vdOrder = $num."- Мемы и кеки"; // сайт по умолчанию, если вдруг мы не получили идентификатор
            }
            return $vdOrder;
        }
        return false;
    });

//ФОРМИРУЕМ САМ ФОРМАТ ВЫВОДА НОМЕРА ЗАКАЗ
$eventManager->addEventHandlerCompatible('sale', 'OnBuildAccountNumberTemplateList',
    function (){
        return array(
            'CODE' => 'siteid_orderid', 
            'NAME' => 'SITE_ID: ORDER_ID/DATE'); //формат вывода    
});
?>

Теперь представим ситуацию: у вас есть 3 сайта на мультисайтовости Битрикс (едина админка). Допустим сайты называются так:

  • Рога и копыта (ID = s1);
  • Попкорн и печеньки (ID=s2);
  • Мемы и кеки (ID=s3).

Допустим заказ №1000 приходит от сайта "Рога и копыта", заказ №1001 от "Попкорн и печеньки", заказ №1002 от "Мемы и кеки".

При стандартных настройках Битрикса вы бы никак не смогли понять откуда же пришел заказ, так как нельзя указать в номере заказа ID сайта.

При наших настройках Номера заказов, попадаемые на почту будут выглядеть так: "Поступил новый заказ №1000-Рога и копыта", "Поступил новый заказ №1001-Попкорн и печеньки", "Поступил новый заказ №1001-Мемы и кеки".

В нашем случае мы использовали только 'NAME' => 'SITE_ID: ORDER_ID/DATE'. Вот несколько полезных свойств, которые вы можете использовать для массива в eventManager:

  • [ID] - уникальный идентификатор заказа
  • [LID] - идентификатор сайта с которого был заказ
  • [DATE_INSERT] => 2021-05-22 12:34:42
  • [PERSON_TYPE_ID] => 1 (физ лицо)
  • [USER_ID] - идентификатор покупателя
  • [DATE_INSERT_FORMAT] в формате 05/22/2021

Устанавливается новый формат в настройках модуля Настройки - Модули - "Интернет-магазин". При этом кастомный формат нельзя комбинировать с другими базовыми. Он просто не будет работать

Кастомный формат заказа

Небольшая ремарка: для Битрикс-24 (допустим в случае модели Заказ+Сделка на лицензии Интернет-магазин+CRM) эта настройка работать не будет, там будет просто прилетать обычный номер заказа.

Частный разработчик сайтов Vector Dev
Комментарии