Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/crm/lib/webform/ |
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/modules/crm/lib/webform/entity.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage crm * @copyright 2001-2016 Bitrix */ namespace Bitrix\Crm\WebForm; use Bitrix\Main\Localization\Loc; use Bitrix\Crm\UtmTable; use Bitrix\Crm\Settings\LeadSettings; Loc::loadMessages(__FILE__); class Entity { const ENUM_ENTITY_SCHEME_LEAD = 1; const ENUM_ENTITY_SCHEME_CONTACT = 2; const ENUM_ENTITY_SCHEME_DEAL = 3; const ENUM_ENTITY_SCHEME_QUOTE = 4; const ENUM_ENTITY_SCHEME_CONTACT_INVOICE = 5; const ENUM_ENTITY_SCHEME_DEAL_INVOICE = 6; const ENUM_ENTITY_SCHEME_QUOTE_INVOICE = 7; const ENUM_ENTITY_SCHEME_LEAD_INVOICE = 8; public static function getMap($entityTypeName = null) { static $invoiceDefaultStatusId = null; if ($invoiceDefaultStatusId === null) { $invoiceDefaultStatusId = \CAllCrmInvoice::getDefaultStatusId(); } $entityTypeMap = array( \CCrmOwnerType::LeadName => array( 'CLASS_NAME' => 'CCrmLead', 'DUPLICATE_CHECK' => array( 'CHECKER_CLASS_NAME' => '\Bitrix\Crm\Integrity\LeadDuplicateChecker', 'MERGER_CLASS_NAME' => '\Bitrix\Crm\Merger\LeadMerger', ), 'HAS_MULTI_FIELDS' => true, 'FIELD_AUTO_FILL_TEMPLATE' => array( 'TITLE' => array( 'TEMPLATE' => Loc::getMessage('CRM_WEBFORM_ENTITY_FIELD_NAME_TEMPLATE'), ), 'OPENED' => array( 'TEMPLATE' => 'Y' ), 'SOURCE_ID' => array( 'TEMPLATE' => 'WEBFORM' ) ) ), \CCrmOwnerType::ContactName => array( 'CLASS_NAME' => 'CCrmContact', 'DUPLICATE_CHECK' => array( 'CHECKER_CLASS_NAME' => '\Bitrix\Crm\Integrity\ContactDuplicateChecker', 'MERGER_CLASS_NAME' => '\Bitrix\Crm\Merger\ContactMerger', ), 'HAS_MULTI_FIELDS' => true, 'FIELD_AUTO_FILL_TEMPLATE' => array( 'NAME' => array( 'TEMPLATE' => Loc::getMessage('CRM_WEBFORM_ENTITY_FIELD_NAME_CONTACT_TEMPLATE'), ), 'OPENED' => array( 'TEMPLATE' => 'Y' ), 'EXPORT' => array( 'TEMPLATE' => 'Y' ), 'SOURCE_ID' => array( 'TEMPLATE' => 'WEBFORM' ) ), 'EXCLUDED_FIELDS' => array() ), \CCrmOwnerType::CompanyName => array( 'CLASS_NAME' => 'CCrmCompany', 'DUPLICATE_CHECK' => array( 'CHECKER_CLASS_NAME' => '\Bitrix\Crm\Integrity\CompanyDuplicateChecker', 'MERGER_CLASS_NAME' => '\Bitrix\Crm\Merger\CompanyMerger', ), 'HAS_MULTI_FIELDS' => true, 'FIELD_AUTO_FILL_TEMPLATE' => array( 'TITLE' => array( 'TEMPLATE' => Loc::getMessage('CRM_WEBFORM_ENTITY_FIELD_NAME_COMPANY_TEMPLATE'), ), 'OPENED' => array( 'TEMPLATE' => 'Y' ) ) ), \CCrmOwnerType::DealName => array( 'CLASS_NAME' => 'CCrmDeal', 'DUPLICATE_CHECK' => array( 'CHECKER_CLASS_NAME' => null, 'MERGER_CLASS_NAME' => '\Bitrix\Crm\Merger\DealMerger', ), 'FIELD_AUTO_FILL_TEMPLATE' => array( 'TITLE' => array( 'TEMPLATE' => Loc::getMessage('CRM_WEBFORM_ENTITY_FIELD_NAME_TEMPLATE'), ), 'OPENED' => array( 'TEMPLATE' => 'Y' ) ) ), \CCrmOwnerType::QuoteName => array( 'CLASS_NAME' => 'CCrmQuote', 'FIELD_AUTO_FILL_TEMPLATE' => array( 'TITLE' => array( 'TEMPLATE' => Loc::getMessage('CRM_WEBFORM_ENTITY_FIELD_NAME_TEMPLATE'), ), 'OPENED' => array( 'TEMPLATE' => 'Y' ) ) ), \CCrmOwnerType::InvoiceName => array( 'CLASS_NAME' => 'CCrmInvoice', 'FIELD_AUTO_FILL_TEMPLATE' => array( 'ORDER_TOPIC' => array( 'TEMPLATE' => Loc::getMessage('CRM_WEBFORM_ENTITY_FIELD_NAME_TEMPLATE'), ), 'STATUS_ID' => array( 'TEMPLATE' => $invoiceDefaultStatusId, ), ) ), ); if($entityTypeName) { return $entityTypeMap[$entityTypeName]; } else { return $entityTypeMap; } } public static function getCommonExcludedFieldCodes() { return array( 'INVOICE_STATUS_ID', 'QUOTE_CLIENT_EMAIL', 'QUOTE_CLIENT_PHONE', 'QUOTE_CLIENT_TPA_ID', 'QUOTE_CLIENT_TP_ID', 'QUOTE_CLIENT_CONTACT', 'QUOTE_CLIENT_ADDR', 'QUOTE_CLIENT_TITLE', 'QUOTE_MYCOMPANY_ID', ); } public static function getEntityMapCommonExcludedFields() { $fieldCodes = array( 'ASSIGNED_BY_ID', //'PROBABILITY', 'DATE_PAY_BEFORE', 'REVENUE', 'OPPORTUNITY', //LEAD 'CURRENCY_ID', 'OPENED', 'COMPANY_ID', 'CONTACT_ID', 'CLOSED', 'EXPORT', 'BANKING_DETAILS', 'DEAL_ID', 'PERSON_TYPE_ID', //INVOICE 'ACCOUNT_NUMBER', 'CURRENCY', 'DATE_BILL', 'DATE_MARKED', 'PAY_SYSTEM_ID', 'RESPONSIBLE_ID', 'UF_DEAL_ID', 'UF_CONTACT_ID', 'PR_LOCATION', 'ADDRESS_LEGAL', //'ADDRESS', 'REG_ADDRESS', 'ADDRESS_2', 'ADDRESS_CITY', 'ADDRESS_POSTAL_CODE', 'ADDRESS_REGION', 'ADDRESS_PROVINCE', 'ADDRESS_COUNTRY', 'ADDRESS_COUNTRY_CODE', 'REG_ADDRESS_2', 'REG_ADDRESS_CITY', 'REG_ADDRESS_POSTAL_CODE', 'REG_ADDRESS_REGION', 'REG_ADDRESS_PROVINCE', 'REG_ADDRESS_COUNTRY', 'REG_ADDRESS_COUNTRY_CODE', ); $fieldCodes = array_merge($fieldCodes, UtmTable::getCodeList()); return $fieldCodes; } public static function getSchemesCodes() { $result = array(); foreach(self::getSchemes() as $code => $value) { $result[] = (string) $code; } return $result; } public static function getSchemesByInvoice($selectedSchemeId = null, $allowedEntitySchemes = null) { $result = array( 'HAS_DEAL' => false, 'HAS_INVOICE' => false, 'SELECTED_DESCRIPTION' => '', 'BY_INVOICE' => array(), 'BY_NON_INVOICE' => array(), ); $schemes = self::getSchemes(); $previousSchemeId = null; foreach($schemes as $schemeId => $scheme) { if(!$selectedSchemeId) { $selectedSchemeId = $schemeId; } $scheme['ID'] = $schemeId; $scheme['SELECTED'] = false; $scheme['DISABLED'] = (!empty($allowedEntitySchemes) && !in_array($schemeId, $allowedEntitySchemes)); $hasDeal = in_array(\CCrmOwnerType::DealName, $scheme['ENTITIES']); $hasInvoice = in_array(\CCrmOwnerType::InvoiceName, $scheme['ENTITIES']); $searchSchemeId = $hasInvoice ? $previousSchemeId : $schemeId; $section = $hasInvoice ? 'BY_INVOICE' : 'BY_NON_INVOICE'; $result[$section][$searchSchemeId] = $scheme; $previousSchemeId = $schemeId; if($schemeId == $selectedSchemeId) { $result['SELECTED_ID'] = $selectedSchemeId; $result['HAS_DEAL'] = $hasDeal; $result['HAS_INVOICE'] = $hasInvoice; $result['BY_NON_INVOICE'][$searchSchemeId]['SELECTED'] = true; $result['SELECTED_DESCRIPTION'] = $scheme['DESCRIPTION']; } } return $result; } public static function getSchemes($schemeId = null) { // ATTENTION!!! SCHEME ORDER IS IMPORTANT FOR getSchemesByInvoice // ATTENTION!!! ENTITY ORDER IS IMPORTANT FOR SYNCHRONIZATION $schemes = array( self::ENUM_ENTITY_SCHEME_LEAD => array( 'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_LEED'), 'ENTITIES' => array( \CCrmOwnerType::LeadName ), '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 ), 'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_LEED_INVOICE_DESC') ), self::ENUM_ENTITY_SCHEME_CONTACT => array( 'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_CLIENT'), 'ENTITIES' => array( \CCrmOwnerType::ContactName, \CCrmOwnerType::CompanyName, ), '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, ), 'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_CLIENT_INVOICE_DESC') ), self::ENUM_ENTITY_SCHEME_DEAL => array( 'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_DEAL'), 'ENTITIES' => array( \CCrmOwnerType::DealName, \CCrmOwnerType::CompanyName, \CCrmOwnerType::ContactName, ), '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, ), 'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_DEAL_INVOICE_DESC') ), self::ENUM_ENTITY_SCHEME_QUOTE => array( 'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_QUOTE'), 'ENTITIES' => array( \CCrmOwnerType::QuoteName, \CCrmOwnerType::CompanyName, \CCrmOwnerType::ContactName, ), 'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_QUOTE_DESC') ), self::ENUM_ENTITY_SCHEME_QUOTE_INVOICE => array( 'NAME' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_QUOTE'), 'ENTITIES' => array( \CCrmOwnerType::InvoiceName, \CCrmOwnerType::QuoteName, \CCrmOwnerType::CompanyName, \CCrmOwnerType::ContactName, ), 'DESCRIPTION' => Loc::getMessage('CRM_WEBFORM_ENTITY_SCHEME_QUOTE_INVOICE_DESC') ), ); if($schemeId) { return $schemes[$schemeId]; } else { return $schemes; } } /** * Return true if scheme support entity. * * @param int $schemeId Scheme ID. * @param int $entityTypeId Entity type ID. * @return bool */ public static function isSchemeSupportEntity(int $schemeId, int $entityTypeId): bool { $scheme = Entity::getSchemes((int) $schemeId); $entityName = \CCrmOwnerType::ResolveName((int) $entityTypeId); return ( $entityName && $scheme && in_array($entityName, $scheme['ENTITIES'], true)); } public static function getNames() { return array_keys(static::getList()); } public static function getList() { $result = array(); $map = static::getMap(); foreach($map as $entityName => $entity) { $result[$entityName] = \CCrmOwnerType::GetDescription(\CCrmOwnerType::ResolveID($entityName)); } return $result; } public static function getFieldCaption($entityName, $fieldId) { static $map = null; if ($map === null) { $map = static::getMap(); } $entity = $map[$entityName]; /**@var $className \CCrmInvoice*/ $className = $entity['CLASS_NAME']; return $className::GetFieldCaption($fieldId); } public static function getDefaultFieldsInfoMethod() { return 'GetFieldsInfo'; } }