Полный цикл в digital

Счета в Битрикс24

В Битрикс24 счёт — финальный этап процесса продаж. Когда сделка заключена, мы создаём счет и выставляем его клиенту для оплаты.

В данный момент, в Битрикс24 существуют только «Новые счета», они основанны на механизме смарт-процессов, в то время как «старые счета» уже не используются и говорить о них нецелесообразно. «Новые счета» основаны на механизме смарт-процессов и нового API .

Основное

С технической точки зрения, счета являются сущностью основанной на смарт-процессах, однако все же нельзя сказать что это одно и то же. Мы будем исходить из позиции, что новые счета это особый зафиксированный тип смарт-процесса со своими допущениями.

В работе со смарт-процессами, все начинается с фабрики и чтобы получить фабрику, необходимо знать идентификатор типа сущности с которой мы хотим продолжить работу. Для счетов это \CCrmOwnerType::SmartInvoice или если брать цифровое значение 31.

Говоря об идентификаторах сущностей надо сказать что счета получили полный набор уникальных значений:

  • Идентификатор типа сущности ENTITY_TYPE_ID — \CCrmOwnerType::SmartInvoice — 31
  • Идентификатор типа сущности для корзины SPD — \CCrmOwnerType::SuspendedSmartInvoice — 32
  • Строковый код типа сущности ENTITY_NAME — \CCrmOwnerType::SmartInvoiceName — SMART_INVOICE
  • Строковый код типа сущности для корзины ENTITY_NAME_SPD — \CCrmOwnerType::SuspendedSmartInvoiceName — SUS_SMART_INVOICE
  • Короткое обозначения типа ABBR — \CCrmOwnerTypeAbbr::SmartInvoice — SI
  • Идентификатор для пользовательских полей ENTITY_ID — \Bitrix\Crm\Service\Factory\SmartInvoice::USER_FIELD_ENTITY_ID — CRM_SMART_INVOICE
  • Идентификатор для пользовательских полей в корзине ENTITY_ID — \Bitrix\Crm\Service\Factory\SmartInvoice::SUSPENDED_USER_FIELD_ENTITY_ID — CRM_SMART_INVOICE_SPD
  • Идентификатор ENTITY_ID для стадий формируется как SMART_INVOICE_STAGE_{categoryId}
  • Префикс поля STATUS_ID для стадий формируется также, как для смарт-процессов DT31_{categoryId}

Различия

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

Что касается направлений, то они в данный момент не используют направления. Несмотря на то что технически направления существуют и поддерживаются механикой смарт-процессов использовать их не следует. При работе подразумевайте что счета это элементам смарт-процесса, у которого в интерфейсе отключены направления.

Что касается стадий, то работа с ними ведется аналогично работе со смарт-процессами, за исключением того что счетов другой набор стадий при создании, это необходимо для поддержания обратной совместимости со старыми счетами.

Поскольку счета несут в себе бизнес-функцию и наследуют возможности старых счетов, разработчики битрикса расширили класс-наследник DataManager дополнительными полями через ORMв runtime.

При этом добавлены некоторые дополнительные поля:

  • ACCOUNT_NUMBER номер счета
  • COMMENTS html-поле с комментариями

Примеры

Создадим счет с определенными параметрами:

  • Плательщик: «ООО Ромашка» (ID:111)
  • Наше юр.лицо: «ООО Фьюжн» (ID:400)
  • По реквизитам юридического лица (ID:444)
  • Дата выставления счета: 17 ноября 2022
  • Дата оплаты: до 24 ноября 2022
  • Сделка: «Продажа пестиков и тычинок в ООО Ромашка» (ID:555)

Счет будет содержать овары:

  • «Пестик» (1шт, 100.0 руб./шт.) (ID:222)
  • «Тычинка» (2шт, 150.0 р/шт.) (ID:333)

Пример создания такого счета может выглядеть так:

\Bitrix\Main\Loader::requireModule('crm');

// получаем контейнер
$container = \Bitrix\Crm\Service\Container::getInstance();

// получаем фабрику
$factory = $container->getFactory(\CCrmOwnerType::SmartInvoice);

// создаем новый счет
$invoice = $factory->createItem([
    'BEGINDATE' => '17.10.2022',
    'CLOSEDATE' => '22.10.2022',
    'PARENT_ID_2' => 555,
    'COMPANY_ID' => 111,
    'MYCOMPANY_ID' => 400,
    'MC_REQUISITE_ID' => 444,
    'COMMENTS' => 'Новый счет созданный програмнно!',
]);

// товары/услуги для оплаты счетом
$productParseResult = $invoice->setProductRowsFromArrays([
    [
        'PRODUCT_NAME' => 'Пестик',
        'PRODUCT_ID' => '222',
        'PRICE' => 100,
        'QUANTITY' => 1,
    ],
    [
        'PRODUCT_NAME' => 'Тычинка',
        'PRODUCT_ID' => '333',
        'PRICE' => 150,
        'QUANTITY' => 2,
    ],
]);

// проверка на добавление товаров/услуг
if (!$productParseResult->isSuccess()) {
    return null;
}

// получаем операцию добавления счета
$operation = $factory->getAddOperation($invoice);

// сохраняим счет
$operationResult = $operation->launch();

if ($operationResult->isSuccess()) {
    var_dump($invoice->getId());
} else {
    var_dump($operationResult->getErrors());
}

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!