• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Model/ItemCategoryTable.php
  • Класс: Bitrix\Crm\Model\ItemCategoryTable
  • Вызов: ItemCategoryTable::onBeforeDelete
static function onBeforeDelete(Event $event): EventResult
{
	$result = new EventResult();

	$id = $event->getParameter('id');
	if (is_array($id))
	{
		$id = $id['ID'];
	}
	$id = (int) $id;

	$data = static::getById($id)->fetch();
	if (!$data)
	{
		return $result;
	}
	$factory = Container::getInstance()->getFactory((int) $data['ENTITY_TYPE_ID']);
	if (!$factory)
	{
		return $result;
	}
	$category = $factory->getCategory($id);
	if (!$category)
	{
		return $result;
	}

	if ($category->getIsDefault() && $factory->getItemsCount() > 0)
	{
		$result->addError(new EntityError(Loc::getMessage('CRM_CATEGORY_TABLE_DELETE_ERROR_DEFAULT')));
	}
	elseif ($category->getIsSystem())
	{
		$result->addError(new EntityError(Loc::getMessage('CRM_TYPE_CATEGORY_DELETE_ERROR_SYSTEM')));
	}
	elseif ($factory->getItemsCount($category->getItemsFilter()) > 0)
	{
		$result->addError(new EntityError(Loc::getMessage('CRM_CATEGORY_TABLE_DELETE_ERROR_ITEMS')));
	}

	if (!$result->getErrors() && $factory->isStagesSupported())
	{
		$stages = $factory->getStages($category->getId());
		foreach ($stages as $stage)
		{
			$deleteStageResult = $stage->delete();
			if (!$deleteStageResult->isSuccess())
			{
				foreach ($deleteStageResult->getErrorMessages() as $message)
				{
					$result->addError(new EntityError($message));
				}
			}
		}
	}
	if (!$result->getErrors())
	{
		static::$categoryToEntityTypeRelations[$id] = $data['ENTITY_TYPE_ID'];
	}

	return $result;
}