- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/recycling/leadcontroller.php
- Класс: Bitrix\Crm\Recycling\LeadController
- Вызов: LeadController::moveToBin
public function moveToBin($entityID, array $params = array())
{
if(!Main\Loader::includeModule('recyclebin'))
{
throw new Main\InvalidOperationException("Could not load module RecycleBin.");
}
$fields = isset($params['FIELDS']) && is_array($params['FIELDS']) ? $params['FIELDS'] : null;
if(empty($fields))
{
$fields = $params['FIELDS'] = $this->getEntityFields($entityID);
}
if(empty($fields))
{
throw new Main\ObjectNotFoundException("Could not find entity: #{$entityID}.");
}
$entityData = $this->prepareEntityData($entityID, $params);
$recyclingEntity = Crm\Integration\Recyclebin\Lead::createRecycleBinEntity($entityID);
$recyclingEntity->setTitle($entityData['TITLE']);
$slots = isset($entityData['SLOTS']) && is_array($entityData['SLOTS']) ? $entityData['SLOTS'] : array();
$relations = LeadRelationManager::getInstance()->buildCollection($entityID, $slots);
foreach($slots as $slotKey => $slotData)
{
$recyclingEntity->add($slotKey, $slotData);
}
$result = $recyclingEntity->save();
$errors = $result->getErrors();
if(!empty($errors))
{
throw new Main\SystemException($errors[0]->getMessage(), $errors[0]->getCode());
}
$recyclingEntityID = $recyclingEntity->getId();
//region Convert User Fields to Suspended Type
$suspendedUserFields = $this->prepareSuspendedUserFields($entityID);
if(!empty($suspendedUserFields))
{
$this->saveSuspendedUserFields($recyclingEntityID, $suspendedUserFields);
}
//endregion
$this->suspendActivities($entityData, $entityID, $recyclingEntityID);
$this->suspendMultiFields($entityID, $recyclingEntityID);
$this->suspendAddresses($entityID, $recyclingEntityID);
$this->suspendTimeline($entityID, $recyclingEntityID);
$this->suspendDocuments($entityID, $recyclingEntityID);
$this->suspendLiveFeed($entityID, $recyclingEntityID);
$this->suspendUtm($entityID, $recyclingEntityID);
$this->suspendTracing($entityID, $recyclingEntityID);
$this->suspendObservers($entityID, $recyclingEntityID);
$this->suspendWaitings($entityID, $recyclingEntityID);
$this->suspendChats($entityID, $recyclingEntityID);
$this->suspendProductRows($entityID, $recyclingEntityID);
$this->suspendScoringHistory($entityID, $recyclingEntityID);
$this->suspendCustomRelations((int)$entityID, (int)$recyclingEntityID);
$this->suspendBadges((int)$entityID, (int)$recyclingEntityID);
//region Relations
foreach($relations as $relation)
{
/** @var Relation $relation */
$relation->setRecycleBinID(\CCrmOwnerType::Lead, $entityID, $recyclingEntityID);
$relation->save();
}
LeadRelationManager::getInstance()->registerRecycleBin($recyclingEntityID, $entityID, $slots);
//endregion
}