protected function getFieldsSettings(): array
{
$info = [
Item::FIELD_NAME_ID => [
'TYPE' => Field::TYPE_INTEGER,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
],
Item::FIELD_NAME_TITLE => [
'TYPE' => Field::TYPE_STRING,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::HasDefaultValue, \CCrmFieldInfoAttr::CanNotBeEmptied],
'CLASS' => Field\Title::class,
],
Item::FIELD_NAME_TYPE_ID => [
'TYPE' => Field::TYPE_CRM_STATUS,
'CRM_STATUS_TYPE' => StatusTable::ENTITY_ID_DEAL_TYPE,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::HasDefaultValue],
],
Item::FIELD_NAME_CATEGORY_ID => [
'TYPE' => Field::TYPE_CRM_CATEGORY,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::HasDefaultValue],
'CLASS' => Field\Category::class,
'SETTINGS' => [
'eventNames' => [
'onBeforeChange' => 'OnBeforeDealMoveToCategory',
'onAfterChange' => 'OnAfterDealMoveToCategory',
],
],
],
Item::FIELD_NAME_STAGE_ID => [
'TYPE' => Field::TYPE_CRM_STATUS,
'CRM_STATUS_TYPE' => $this->getStagesEntityId(),
'ATTRIBUTES' => [\CCrmFieldInfoAttr::Progress],
'CLASS' => Field\Stage::class,
],
Item::FIELD_NAME_STAGE_SEMANTIC_ID => [
'TYPE' => Field::TYPE_STRING,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::NotDisplayed],
'CLASS' => Field\StageSemanticId::class,
],
Item\Deal::FIELD_NAME_IS_NEW => [
'TYPE' => Field::TYPE_BOOLEAN,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::NotDisplayed],
'CLASS' => Field\IsNew::class,
],
Item::FIELD_NAME_IS_RECURRING => [
'TYPE' => Field::TYPE_BOOLEAN,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
],
Item::FIELD_NAME_IS_RETURN_CUSTOMER => [
'TYPE' => Field::TYPE_BOOLEAN,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::NotDisplayed],
'CLASS' => Field\IsReturnCustomer::class,
],
Item\Deal::FIELD_NAME_IS_REPEATED_APPROACH => [
'TYPE' => Field::TYPE_BOOLEAN,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::NotDisplayed],
'CLASS' => Field\IsRepeatedApproach::class,
],
Item\Deal::FIELD_NAME_PROBABILITY => [
'TYPE' => Field::TYPE_INTEGER,
'CLASS' => Field\Percentage::class,
],
Item::FIELD_NAME_CURRENCY_ID => [
'TYPE' => Field::TYPE_CRM_CURRENCY,
'ATTRIBUTES' => [
\CCrmFieldInfoAttr::NotDisplayed,
\CCrmFieldInfoAttr::HasDefaultValue,
\CCrmFieldInfoAttr::CanNotBeEmptied,
],
'CLASS' => Field\CurrencyId::class,
],
Item::FIELD_NAME_ACCOUNT_CURRENCY_ID => [
'TYPE' => Field::TYPE_CRM_CURRENCY,
'ATTRIBUTES' => [
\CCrmFieldInfoAttr::NotDisplayed,
\CCrmFieldInfoAttr::Hidden,
\CCrmFieldInfoAttr::ReadOnly,
\CCrmFieldInfoAttr::HasDefaultValue,
],
],
Item::FIELD_NAME_IS_MANUAL_OPPORTUNITY => [
'TYPE' => Field::TYPE_BOOLEAN,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
],
Item::FIELD_NAME_PRODUCTS => [
'TYPE' => Field::TYPE_CRM_PRODUCT_ROW,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::Multiple, \CCrmFieldInfoAttr::Hidden, \CCrmFieldInfoAttr::NotDisplayed],
],
Item::FIELD_NAME_OPPORTUNITY => [
'TYPE' => Field::TYPE_DOUBLE,
'CLASS' => Field\Opportunity::class,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
],
Item::FIELD_NAME_TAX_VALUE => [
'TYPE' => Field::TYPE_DOUBLE,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
'CLASS' => Field\TaxValue::class,
],
Item::FIELD_NAME_OPPORTUNITY_ACCOUNT => [
'TYPE' => Field::TYPE_DOUBLE,
'ATTRIBUTES' => [
\CCrmFieldInfoAttr::NotDisplayed,
\CCrmFieldInfoAttr::Hidden,
\CCrmFieldInfoAttr::ReadOnly,
],
'CLASS' => Field\OpportunityAccount::class,
],
Item::FIELD_NAME_TAX_VALUE_ACCOUNT => [
'TYPE' => Field::TYPE_DOUBLE,
'ATTRIBUTES' => [
\CCrmFieldInfoAttr::NotDisplayed,
\CCrmFieldInfoAttr::Hidden,
\CCrmFieldInfoAttr::ReadOnly,
],
'CLASS' => Field\TaxValueAccount::class,
],
Item::FIELD_NAME_COMPANY_ID => [
'TYPE' => Field::TYPE_CRM_COMPANY,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
'SETTINGS' => [
'parentEntityTypeId' => \CCrmOwnerType::Company,
],
],
Item::FIELD_NAME_CONTACT_ID => [
'TYPE' => Field::TYPE_CRM_CONTACT,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Deprecated],
],
Item::FIELD_NAME_CONTACT_IDS => [
'TYPE' => Field::TYPE_CRM_CONTACT,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Multiple]
],
Item::FIELD_NAME_CONTACTS => [
'TYPE' => Field::TYPE_CRM_CONTACT,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Multiple]
],
Item\Deal::FIELD_NAME_QUOTE_ID => [
'TYPE' => Field::TYPE_CRM_QUOTE,
'SETTINGS' => [
'parentEntityTypeId' => \CCrmOwnerType::Quote,
],
],
Item::FIELD_NAME_BEGIN_DATE => [
'TYPE' => Field::TYPE_DATE,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::CanNotBeEmptied, \CCrmFieldInfoAttr::HasDefaultValue],
],
Item::FIELD_NAME_CLOSE_DATE => [
'TYPE' => Field::TYPE_DATE,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::CanNotBeEmptied, \CCrmFieldInfoAttr::HasDefaultValue],
'CLASS' => Field\CloseDate::class,
'SETTINGS' => [
'isSetCurrentDateOnCompletionEnabled' => DealSettings::getCurrent()->isCloseDateSyncEnabled(),
],
],
Item::FIELD_NAME_OPENED => [
'TYPE' => Field::TYPE_BOOLEAN,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::Required],
'CLASS' => Field\Opened::class,
],
Item::FIELD_NAME_CLOSED => [
'TYPE' => Field::TYPE_BOOLEAN,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly],
'CLASS' => Field\Closed::class,
],
Item::FIELD_NAME_COMMENTS => [
'TYPE' => Field::TYPE_TEXT,
'VALUE_TYPE' => Field::VALUE_TYPE_BB,
'ATTRIBUTES' => [],
'CLASS' => Field\Comments::class,
],
Item::FIELD_NAME_ASSIGNED => [
'TYPE' => Field::TYPE_USER,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::CanNotBeEmptied, \CCrmFieldInfoAttr::HasDefaultValue],
'CLASS' => Field\Assigned::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_MOVED_BY => [
'TYPE' => Field::TYPE_USER,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
'CLASS' => Field\MovedBy::class,
],
Item::FIELD_NAME_LAST_ACTIVITY_BY => [
'TYPE' => Field::TYPE_USER,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
],
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_MOVED_TIME => [
'TYPE' => Field::TYPE_DATETIME,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
'CLASS' => Field\MovedTime::class,
],
Item::FIELD_NAME_LAST_ACTIVITY_TIME => [
'TYPE' => Field::TYPE_DATETIME,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
'CLASS' => Field\LastActivityTime::class,
],
Item::FIELD_NAME_SOURCE_ID => [
'TYPE' => Field::TYPE_CRM_STATUS,
'CRM_STATUS_TYPE' => StatusTable::ENTITY_ID_SOURCE,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::HasDefaultValue],
],
Item::FIELD_NAME_SOURCE_DESCRIPTION => [
'TYPE' => Field::TYPE_TEXT,
],
Item::FIELD_NAME_LEAD_ID => [
'TYPE' => Field::TYPE_CRM_LEAD,
'SETTINGS' => [
'parentEntityTypeId' => \CCrmOwnerType::Lead,
],
],
Item\Deal::FIELD_NAME_ADDITIONAL_INFO => [
'TYPE' => Field::TYPE_STRING,
],
Item::FIELD_NAME_ORIGINATOR_ID => [
'TYPE' => Field::TYPE_STRING,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
],
Item::FIELD_NAME_ORIGIN_ID => [
'TYPE' => Field::TYPE_STRING,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
],
Item::FIELD_NAME_OBSERVERS => [
'TYPE' => Field::TYPE_USER,
'ATTRIBUTES' => [\CCrmFieldInfoAttr::Multiple],
'CLASS' => Field\Observers::class,
],
];
$locationAttributes = [];
if (!Container::getInstance()->getAccounting()->isTaxMode())
{
$locationAttributes = [\CCrmFieldInfoAttr::NotDisplayed];
}
$info[Item::FIELD_NAME_LOCATION_ID] = [
'TYPE' => Field::TYPE_LOCATION,
'ATTRIBUTES' => $locationAttributes,
];
return $info;
}