Допустим Вам требуется переместить какое-то количество сделок из "открытых" этапов воронки в стадии "Отказа", либо "Успешно Реализованные". Помимо перемещения самих сделок, необходимо так же завершить все "дела" менеджеров ответственных по данным сделкам.
Напишем для этого код, который сперва перемещает сделку в нужную стадию, а после успешного перемещения завершает все дела у ответственного менеджера по этой сделке.
\Bitrix\Main\Loader::includeModule('crm');
//Получим список сделок с нужными нам свойствами
$rsDeal = \Bitrix\Crm\DealTable::getList(
[
'order' => ['ID' => 'DESC'],
'filter' => [
'CATEGORY_ID' => 0, // ID нужной воронки
'STAGE_ID' => 8 // ID этапа воронки из которой перемещаем сделки
],
'select' => [
'ID' // ID сделки
'ASSIGNED_BY_ID' // ID ответственного за сделку
]
]
)->fetchAll();
$dealEntity = new Bitrix\Crm\DealTable();
foreach($rsDeal as $deal):
$arDealFields = [
'CATEGORY_ID' => 0, // ID воронки в которую перемещаем сделку
'STAGE_ID' => 13, // ID этапа воронки в которую перемещаем сделки
];
$res = $dealEntity->update($deal['ID'],$arDealFields);
if ($res->isSuccess()) {
$ownerId[] = $deal['ID'];
}
endforeach;
$rsActivity = \Bitrix\Crm\ActivityTable::getList(
[
'order' => ['ID' => 'DESC'],
'filter' => [
'OWNER_ID' => $ownerId, // Фильтруем по списку ID сделок
'COMPLETED' => 'N' // Получаем только активные дела
],
'select' => [
'ID'
]
]
)->fetchAll();
foreach($rsActivity as $activity):
$arActivityFields['COMPLETED'] = 'Y';
\CCrmActivity::update($activity['ID'], $arActivityFields);
endforeach;