Указание внешнего номера на созданные счета в Битрикс24

Используется несколько источников выставления счетов. Для нумерации счетов сделали независымый сервер к которому обращаются по http и получают номер. Этот сервер выдает только нечетные номера (к примеру: 1073, 1075, 1077 и т.д.). В дальнейшем планируем сделать резервный, который будет выдавать четные номера (к примеру 1076, 1078 и т.д.).

Для данной реализации решил использовать событие onCrmDynamicItemAdd_31 и указывать номер счету через D7, а не через веб-хуки.

пример в файле init.php:

<?php

use Bitrix\Main\Loader;
use Bitrix\Crm\Service;

// ...

AddEventHandler('crm', 'onCrmDynamicItemAdd_31', ['\DiswebEvent', 'invoiceAdd']);

class DiswebEvent
{
    protected static $key = 'КЛЮЧ УДАЛЕННОГО СЕРВЕРА';

    // ...

    public static function invoiceAdd($data = [])
    {
        Loader::includeModule("crm");

        $ch = curl_init('https://domain.com/api/v1/sys/order_number');
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Authorization: Bearer ' . self::$key,
        ]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $return = curl_exec($ch);
        curl_close($ch);

        $ar = json_decode($return, true);

        // В нашей системе несколько организаций и у каждой отдельный префикс
        if ($data->getMycompanyId() == 438) $accountNumber = "СС";
        else if ($data->getMycompanyId() == 437) $accountNumber = "ЕВ";
        else if ($data->getMycompanyId() == 4233) $accountNumber = "СА";
        else if ($data->getMycompanyId() == 4232) $accountNumber = "СН";
        else $accountNumber = "00";
        $accountNumber .= substr('000000000' . $ar['number'], -9);

        $factory = Service\Container::getInstance()->getFactory(\CCrmOwnerType::SmartInvoice);
        $item = $factory->getItem($data->getId());
        $item->setFromCompatibleData([
            // титульное наименование счета
            'TITLE' => '№ ' . $accountNumber . ' от ' . explode(' ', $data->getCreatedTime())[0],
            // номер счета
            'ACCOUNT_NUMBER' => $ar['number'],
        ]);
        $item->save();
    }

    // ...

}

// ...