Рассмотрим задачи по копированию товаров между сущностями в коробочной версии Битрикс24.
Содержание
Копирование товаров из сделки в предложение
При создании нескольких коммерческих предложений Битрикс учитывает только измененные товары и добавляет в КП только их. Менеджерам же зачастую нужно, чтобы в предложение добавлялись все товары из сделки. Что можно сделать?
Создадим бизнес-процесс в первой стадии предложения. Для этого перейдем в CRM —> Продажи —> Предложения —> Роботы.
В первом статусе нажимаем Редактировать в дизайнере бизнес-процессов.
Заходим в Параметры шаблона.
Вводим название и сохраняем.
Действия БП
Запись в отчет
Действие Запись в отчет.
Заголовок — Запись в отчет;
Текст — Сделка {{Сделка}}; Предложение {{ID}};
Загрузить отчет для доступа из бизнес-процесса — оставляем пустым.
PHP код: все товары из сделки в предложение
Действие PHP код.
Заголовок — PHP код: все товары из сделки в предложение;
PHP код:
$deal_id = '{{Сделка}}';
$quote_id = '{{ID}}';
if(!\Bitrix\Main\Loader::includeModule('crm') || $deal_id <= 0 || $quote_id <= 0)
return;
// вытащить товары из сделки
$ar = \CCrmProductRow::LoadRows('D', $deal_id); // D - Deal(Сделка), L - Lead(Лид), Q - Quote(Предложение)
if (count($ar) <= 0) // проверка наличия товаров в сделке
return;
$rows = array();
foreach($ar as $item)
{
unset($item['ID']);
reset($item);
$rows[] = $item;
}
unset($ar, $item);
// удалить товары из предложения
$ar = \CCrmProductRow::LoadRows('Q', $quote_id); // D - Deal(Сделка), L - Lead(Лид), Q - Quote(Предложение)
foreach($ar as $item)
{
\CCrmProductRow::Delete($item['ID'], false, false);
}
// добавить товары в предложение
$obj = new \CCrmQuote(false);
$obj->SaveProductRows($quote_id, $rows, true, false, true);
unset($ar, $item, $obj);
Получился вот такой маленький бизнес-процесс. Сохраняем.
Теперь при создании предложения в него будут добавляться все товары из сделки, вне зависимости от того, меняли вы список товаров или нет, первое это предложение или нет.
Копирование товаров из предложения в сделку
Если по сделке было создано несколько вариантов предложений, и клиент остановился на каком-то одном, то хочется нажатием одной кнопки перенести товары из этого КП в сделку.
Создадим бизнес-процесс для нажатия этой волшебной кнопки:)
Переходим в CRM —> Настройки —> Настройки CRM —> Роботы и бизнес-процессы —> Бизнес-процессы —> Коммерческие предложения.
Нажимаем Добавить шаблон.
Вводим название и сохраняем.
Действия БП
Запись в отчет
Действие Запись в отчет.
Заголовок — Запись в отчет;
Текст — Сделка {{Сделка}}; Предложение {{ID}};
Загрузить отчет для доступа из бизнес-процесса — оставляем пустым.
PHP код: все товары из предложения в сделку
Действие PHP код.
Заголовок — PHP код: все товары из предложения в сделку;
PHP код:
$deal_id = '{{Сделка}}';
$quote_id = '{{ID}}';
if(!\Bitrix\Main\Loader::includeModule('crm') || $deal_id <= 0 || $quote_id <= 0)
return;
// вытащить товары из предложения
$ar = \CCrmProductRow::LoadRows('Q', $quote_id); // D - Deal(Сделка), L - Lead(Лид), Q - Quote(Предложение)
if (count($ar) <= 0) // проверка наличия товаров в предложении
return;
$rows = array();
foreach($ar as $item)
{
unset($item['ID']);
reset($item);
$rows[] = $item;
}
unset($ar, $item);
// удалить товары из сделки
$ar = \CCrmProductRow::LoadRows('D', $deal_id); // D - Deal(Сделка), L - Lead(Лид), Q - Quote(Предложение)
foreach($ar as $item)
{
\CCrmProductRow::Delete($item['ID'], false, false);
}
// добавить товары в сделку
$obj = new \CCrmDeal(false);
$obj->SaveProductRows($deal_id, $rows, true, false, true);
unset($ar, $item, $obj);
Сохраняем бизнес-процесс.
В карточке предложения теперь, при необходимости, можно запустить копирование товаров из КП в сделку, для этого нужно нажать на кнопку бизнес-процесса и выбрать соответствующий пункт:
Подскажите, сталкивались ли Вы с добавлением товаров в смарт-процессах?
Иван, здравствуйте!)
Нет, пока не сталкивалась, если будет подобная задача, дополню статью.