Entity::getSchemes

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Entity
  4. getSchemes
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/entity.php
  • Класс: Bitrix\Crm\WebForm\Entity
  • Вызов: Entity::getSchemes
static function getSchemes($schemeId = null)
{
	// ATTENTION!!! SCHEME ORDER IS IMPORTANT FOR getSchemesByInvoice
	// ATTENTION!!! ENTITY ORDER IS IMPORTANT FOR SYNCHRONIZATION
	static $schemes = null;
	if ($schemes !== null)
	{
		return $schemeId ? ($schemes[$schemeId] ?? null) : $schemes;
	}

	$schemes = array(
		self::ENUM_ENTITY_SCHEME_LEAD => array(
			'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_LEED'),
			'ENTITIES' => array(
				\CCrmOwnerType::LeadName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName
			),
			'MAIN_ENTITY' => \CCrmOwnerType::Lead,
			'HAS_INVOICE' => false,
			'SPECULAR_ID' => self::ENUM_ENTITY_SCHEME_LEAD_INVOICE,
			'DYNAMIC' => false,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_LEED_DESC')
		),
		self::ENUM_ENTITY_SCHEME_LEAD_INVOICE => array(
			'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_LEED'),
			'ENTITIES' => array(
				\CCrmOwnerType::InvoiceName,
				\CCrmOwnerType::LeadName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName
			),
			'MAIN_ENTITY' => \CCrmOwnerType::Lead,
			'HAS_INVOICE' => true,
			'SPECULAR_ID' => self::ENUM_ENTITY_SCHEME_LEAD,
			'DYNAMIC' => false,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_LEED_INVOICE_DESC1')
		),
		self::ENUM_ENTITY_SCHEME_CONTACT => array(
			'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_CLIENT'),
			'ENTITIES' => array(
				\CCrmOwnerType::ContactName,
				\CCrmOwnerType::CompanyName,
			),
			'MAIN_ENTITY' => null,
			'HAS_INVOICE' => false,
			'SPECULAR_ID' => self::ENUM_ENTITY_SCHEME_CONTACT_INVOICE,
			'DYNAMIC' => false,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_CLIENT_DESC')
		),
		self::ENUM_ENTITY_SCHEME_CONTACT_INVOICE => array(
			'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_CLIENT'),
			'ENTITIES' => array(
				\CCrmOwnerType::InvoiceName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName,
			),
			'MAIN_ENTITY' => null,
			'HAS_INVOICE' => true,
			'SPECULAR_ID' => self::ENUM_ENTITY_SCHEME_CONTACT,
			'DYNAMIC' => false,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_CLIENT_INVOICE_DESC1')
		),
		self::ENUM_ENTITY_SCHEME_DEAL => array(
			'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_DEAL'),
			'ENTITIES' => array(
				\CCrmOwnerType::DealName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName,
			),
			'MAIN_ENTITY' => \CCrmOwnerType::Deal,
			'HAS_INVOICE' => false,
			'SPECULAR_ID' => self::ENUM_ENTITY_SCHEME_DEAL_INVOICE,
			'DYNAMIC' => false,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_DEAL_DESC')
		),
		self::ENUM_ENTITY_SCHEME_DEAL_INVOICE => array(
			'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_DEAL'),
			'ENTITIES' => array(
				\CCrmOwnerType::InvoiceName,
				\CCrmOwnerType::DealName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName,
			),
			'MAIN_ENTITY' => \CCrmOwnerType::Deal,
			'HAS_INVOICE' => true,
			'SPECULAR_ID' => self::ENUM_ENTITY_SCHEME_DEAL,
			'DYNAMIC' => false,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_DEAL_INVOICE_DESC1')
		),
		self::ENUM_ENTITY_SCHEME_QUOTE => array(
			'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_QUOTE_MSGVER_1'),
			'ENTITIES' => array(
				\CCrmOwnerType::QuoteName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName,
			),
			'MAIN_ENTITY' => \CCrmOwnerType::Quote,
			'HAS_INVOICE' => false,
			'SPECULAR_ID' => self::ENUM_ENTITY_SCHEME_QUOTE_INVOICE,
			'DYNAMIC' => false,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_QUOTE_DESC_MSGVER_1')
		),
		self::ENUM_ENTITY_SCHEME_QUOTE_INVOICE => array(
			'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_QUOTE_MSGVER_1'),
			'ENTITIES' => array(
				\CCrmOwnerType::InvoiceName,
				\CCrmOwnerType::QuoteName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName,
			),
			'MAIN_ENTITY' => \CCrmOwnerType::Quote,
			'HAS_INVOICE' => true,
			'SPECULAR_ID' => self::ENUM_ENTITY_SCHEME_QUOTE,
			'DYNAMIC' => false,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_QUOTE_INVOICE_DESC1_MSGVER_1')
		),
	);

	foreach (Container::getInstance()->getDynamicTypesMap()->load()->getTypesCollection() as $type)
	{
		$schemeWithoutInvoiceId = $type->getEntityTypeId() * 10;
		$schemeWithInvoiceId = $type->getEntityTypeId() * 10 + 1;

		$entityTypeName = \CCrmOwnerType::resolveName($type->getEntityTypeId());
		$schemes[$schemeWithoutInvoiceId] = [
			'NAME' => $type->getTitle(),
			'ENTITIES' => [
				$entityTypeName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName,
			],
			'MAIN_ENTITY' => $type->getEntityTypeId(),
			'HAS_INVOICE' => false,
			'SPECULAR_ID' => $schemeWithInvoiceId,
			'DYNAMIC' => true,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_DYNAMIC_DESC')
		];

		if (in_array($type->getEntityTypeId(), [
			defined('\CCrmOwnerType::SmartDocument')
					? \CCrmOwnerType::SmartDocument
					: \CCrmOwnerType::Undefined,
				\CCrmOwnerType::SmartInvoice,
			]))
		{
			continue;
		}

		$schemes[$schemeWithInvoiceId] = [
			'NAME' => $type->getTitle(),
			'ENTITIES' => [
				\CCrmOwnerType::InvoiceName,
				$entityTypeName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::ContactName,
			],
			'MAIN_ENTITY' => $type->getEntityTypeId(),
			'HAS_INVOICE' => true,
			'SPECULAR_ID' => $schemeWithoutInvoiceId,
			'DYNAMIC' => true,
			'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_DYNAMIC_INVOICE_DESC')
		];
	}

	if($schemeId)
	{
		return $schemes[$schemeId] ?? null;
	}
	else
	{
		return $schemes;
	}
}

Добавить комментарий