• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Factory/Quote.php
  • Класс: Bitrix\Crm\Service\Factory\Quote
  • Вызов: Quote::getFieldsSettings
public function getFieldsSettings(): array
{
	$info =  [
		Item::FIELD_NAME_ID => [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
		],
		Item\Quote::FIELD_NAME_NUMBER => [
			'TYPE' => Field::TYPE_STRING,
			'CLASS' => Field\Number::class,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::AutoGenerated, \CCrmFieldInfoAttr::Unique],
			'SETTINGS' => [
				'numeratorType' => 'CRM_QUOTE',
				'numeratorIdSettings' => 'QUOTE_ID',
				'eventName' => 'OnBeforeCrmQuoteNumberSet',
				'tableClassName' => $this->getDataClass(),
				'fieldValueNotUniqueErrorMessage' => Loc::getMessage('CRM_SERVICE_FACTORY_QUOTE_NUMBER_NOT_UNIQUE_ERROR_MSGVER_1'),
			],
		],
		Item::FIELD_NAME_TITLE => [
			'TYPE' => Field::TYPE_STRING,
			'ATTRIBUTES' => [],
		],
		Item::FIELD_NAME_CREATED_TIME => [
			'TYPE' => Field::TYPE_DATETIME,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\CreatedTime::class,
		],
		Item::FIELD_NAME_UPDATED_TIME => [
			'TYPE' => Field::TYPE_DATETIME,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\UpdatedTime::class,
		],
		Item::FIELD_NAME_CREATED_BY => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\CreatedBy::class,
		],
		Item::FIELD_NAME_UPDATED_BY => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\UpdatedBy::class,
		],
		Item::FIELD_NAME_LAST_ACTIVITY_BY => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
		],
		//LAST_ACTIVITY_TIME should be processed after LAST_ACTIVITY_BY
		Item::FIELD_NAME_LAST_ACTIVITY_TIME => [
			'TYPE' => Field::TYPE_DATETIME,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\LastActivityTime::class,
		],
		Item::FIELD_NAME_ASSIGNED => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::CanNotBeEmptied, \CCrmFieldInfoAttr::HasDefaultValue],
			'CLASS' => Field\Assigned::class,
		],
		Item::FIELD_NAME_OPENED => [
			'TYPE' => Field::TYPE_BOOLEAN,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::Required],
			'CLASS' => Field\Opened::class,
		],
		Item\Quote::FIELD_NAME_CONTENT => [
			'TYPE' => Field::TYPE_TEXT,
			'VALUE_TYPE' => Field::VALUE_TYPE_BB,
			'ATTRIBUTES' => [],
			'CLASS' => Field\Comments::class,
		],
		Item\Quote::FIELD_NAME_TERMS => [
			'TYPE' => Field::TYPE_TEXT,
			'VALUE_TYPE' => Field::VALUE_TYPE_BB,
			'ATTRIBUTES' => [],
			'CLASS' => Field\Comments::class,
		],
		Item::FIELD_NAME_COMMENTS => [
			'TYPE' => Field::TYPE_TEXT,
			'VALUE_TYPE' => Field::VALUE_TYPE_BB,
			'ATTRIBUTES' => [],
			'CLASS' => Field\Comments::class,
		],
		Item\Quote::FIELD_NAME_DEAL_ID => [
			'TYPE' => Field::TYPE_CRM_DEAL,
			'SETTINGS' => [
				'parentEntityTypeId' => \CCrmOwnerType::Deal,
			],
		],
		Item::FIELD_NAME_LEAD_ID => [
			'TYPE' => Field::TYPE_CRM_LEAD,
			'SETTINGS' => [
				'parentEntityTypeId' => \CCrmOwnerType::Lead,
			],
		],
		Item\Quote::FIELD_NAME_STORAGE_TYPE => [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		],
		Item\Quote::FIELD_NAME_STORAGE_ELEMENTS => [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Multiple],
		],
		Item::FIELD_NAME_WEBFORM_ID => [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		],
	];

	if ($this->isClientEnabled())
	{
		$info[Item::FIELD_NAME_COMPANY_ID] = [
			'TYPE' => Field::TYPE_CRM_COMPANY,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
			'SETTINGS' => [
				'parentEntityTypeId' => \CCrmOwnerType::Company,
			],
		];

		$info[Item::FIELD_NAME_CONTACT_ID] = [
			'TYPE' => Field::TYPE_CRM_CONTACT,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Deprecated],
		];

		$info[Item::FIELD_NAME_CONTACT_IDS] = [
			'TYPE' => Field::TYPE_CRM_CONTACT,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Multiple]
		];

		$info[Item::FIELD_NAME_CONTACTS] = [
			'TYPE' => Field::TYPE_CRM_CONTACT,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Multiple]
		];

		$info[Item\Quote::FIELD_NAME_PERSON_TYPE_ID] = [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::NotDisplayed],
			'CLASS' => Field\PersonTypeId::class,
		];

		$locationAttributes = [];
		if (!Container::getInstance()->getAccounting()->isTaxMode())
		{
			$locationAttributes = [\CCrmFieldInfoAttr::NotDisplayed];
		}
		$info[Item\Quote::FIELD_NAME_LOCATION_ID] = [
			'TYPE' => Field::TYPE_LOCATION,
			'ATTRIBUTES' => $locationAttributes,
		];
	}

	if ($this->isLinkWithProductsEnabled())
	{
		$info[Item::FIELD_NAME_CURRENCY_ID] = [
			'TYPE' => Field::TYPE_CRM_CURRENCY,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::NotDisplayed,
				\CCrmFieldInfoAttr::HasDefaultValue,
				\CCrmFieldInfoAttr::CanNotBeEmptied,
			],
			'CLASS' => Field\CurrencyId::class,
		];
		$info[Item::FIELD_NAME_ACCOUNT_CURRENCY_ID] = [
			'TYPE' => Field::TYPE_CRM_CURRENCY,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::NotDisplayed,
				\CCrmFieldInfoAttr::Hidden,
				\CCrmFieldInfoAttr::ReadOnly,
				\CCrmFieldInfoAttr::HasDefaultValue,
			],
		];
		$info[Item::FIELD_NAME_IS_MANUAL_OPPORTUNITY] = [
			'TYPE' => Field::TYPE_BOOLEAN,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		];
		$info[Item::FIELD_NAME_PRODUCTS] = [
			'TYPE' => Field::TYPE_CRM_PRODUCT_ROW,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::Multiple, \CCrmFieldInfoAttr::Hidden, \CCrmFieldInfoAttr::NotDisplayed],
		];
		$info[Item::FIELD_NAME_OPPORTUNITY] = [
			'TYPE' => Field::TYPE_DOUBLE,
			'CLASS' => Field\Opportunity::class,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		];
		$info[Item::FIELD_NAME_TAX_VALUE] = [
			'TYPE' => Field::TYPE_DOUBLE,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
			'CLASS' => Field\TaxValue::class,
		];
		$info[Item::FIELD_NAME_OPPORTUNITY_ACCOUNT] = [
			'TYPE' => Field::TYPE_DOUBLE,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::NotDisplayed,
				\CCrmFieldInfoAttr::Hidden,
				\CCrmFieldInfoAttr::ReadOnly,
			],
			'CLASS' => Field\OpportunityAccount::class,
		];
		$info[Item::FIELD_NAME_TAX_VALUE_ACCOUNT] = [
			'TYPE' => Field::TYPE_DOUBLE,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::NotDisplayed,
				\CCrmFieldInfoAttr::Hidden,
				\CCrmFieldInfoAttr::ReadOnly,
			],
			'CLASS' => Field\TaxValueAccount::class,
		];
	}

	if($this->isStagesSupported())
	{
		$info[Item::FIELD_NAME_STAGE_ID] = [
			'TYPE' => Field::TYPE_CRM_STATUS,
			'CRM_STATUS_TYPE' => $this->getStagesEntityId(),
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::HasDefaultValue, \CCrmFieldInfoAttr::Progress],
			'CLASS' => Field\Stage::class,
		];
	}

	$info[Item::FIELD_NAME_CLOSED] = [
		'TYPE' => Field::TYPE_BOOLEAN,
		'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly],
		'CLASS' => Field\Closed::class,
	];
	$info[Item::FIELD_NAME_BEGIN_DATE] = [
		'TYPE' => Field::TYPE_DATE,
		'ATTRIBUTES' => [\CCrmFieldInfoAttr::CanNotBeEmptied, \CCrmFieldInfoAttr::HasDefaultValue],
	];
	$info[Item::FIELD_NAME_CLOSE_DATE] = [
		'TYPE' => Field::TYPE_DATE,
		'ATTRIBUTES' => [\CCrmFieldInfoAttr::CanNotBeEmptied, \CCrmFieldInfoAttr::HasDefaultValue],
		'CLASS' => Field\CloseDate::class,
	];
	$info[Item\Quote::FIELD_NAME_ACTUAL_DATE] = [
		'TYPE' => Field::TYPE_DATE,
		'ATTRIBUTES' => [\CCrmFieldInfoAttr::CanNotBeEmptied, \CCrmFieldInfoAttr::HasDefaultValue],
	];

	if ($this->isMyCompanyEnabled())
	{
		$info[Item::FIELD_NAME_MYCOMPANY_ID] = [
			'TYPE' => Field::TYPE_CRM_COMPANY,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::HasDefaultValue],
			'SETTINGS' => [
				'isMyCompany' => true,
				'parentEntityTypeId' => \CCrmOwnerType::Company,
				'isEmbeddedEditorEnabled' => true,
			],
		];
	}

	if (!QuoteSettings::getCurrent()->isUseNumberInTitlePlaceholder())
	{
		$info[Item::FIELD_NAME_TITLE]['CLASS'] = Field\Title::class;
	}

	return $info;
}