- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/kanban/helper.php
- Класс: Bitrix\Crm\Kanban\Helper
- Вызов: Helper::getFilter
static function getFilter($entity)
{
static $filter = array();
$types = self::getTypes();
if (!array_key_exists($entity, $filter))
{
$filter[$entity] = array();
// lead
if ($entity == $types['lead'])
{
$entityFilter = \Bitrix\Crm\Filter\Factory::createEntityFilter(
new \Bitrix\Crm\Filter\LeadSettings(
array(
'ID' => self::getGridId($entity)
)
)
);
}
// deal
elseif ($entity == $types['deal'])
{
$userPermissions = \CCrmPerms::getCurrentUserPermissions();
$entityFilter = \Bitrix\Crm\Filter\Factory::createEntityFilter(
new \Bitrix\Crm\Filter\DealSettings(
array(
'ID' => self::getGridId($entity),
'categoryID' => self::$categoryId,
'categoryAccess' => array(
'CREATE' => \CCrmDeal::getPermittedToCreateCategoryIDs($userPermissions),
'READ' => \CCrmDeal::getPermittedToReadCategoryIDs($userPermissions),
'UPDATE' => \CCrmDeal::getPermittedToUpdateCategoryIDs($userPermissions)
),
'flags' => \Bitrix\Crm\Filter\DealSettings::FLAG_NONE
)
)
);
}
// quote
elseif ($entity == $types['quote'])
{
$entityFilter = \Bitrix\Crm\Filter\Factory::createEntityFilter(
new \Bitrix\Crm\Filter\QuoteSettings(
array(
'ID' => self::getGridId($entity)
)
)
);
}
// invoice
elseif ($entity == $types['invoice'])
{
$filter[$entity]['OVERDUE'] = array(
'id' => 'OVERDUE',
'name' => Loc::getMessage('CRM_KANBAN_HELPER_FLT_OVERDUE_INVOICE'),
'default' => true,
'type' => 'list',
'items' => array(
'Y' => Loc::getMessage('CRM_KANBAN_HELPER_FLT_YES'),
'N' => Loc::getMessage('CRM_KANBAN_HELPER_FLT_NO')
)
);
$filter[$entity]['DATE_PAY_BEFORE'] = array(
'id' => 'DATE_PAY_BEFORE',
'name' => Loc::getMessage('CRM_KANBAN_HELPER_FLT_DATE_PAY_INVOICE'),
'default' => true,
'type' => 'date'
);
$filter[$entity]['PRICE'] = array(
'id' => 'PRICE',
'name' => Loc::getMessage('CRM_KANBAN_HELPER_FLT_PRICE'),
'default' => true,
'type' => 'number'
);
$filter[$entity]['RESPONSIBLE_ID'] = array(
'id' => 'RESPONSIBLE_ID',
'name' => Loc::getMessage('CRM_KANBAN_HELPER_FLT_ASSIGNED_BY_ID'),
'default' => true,
'type' => 'dest_selector',
'params' => array(
'context' => 'CRM_KANBAN_FILTER_RESPONSIBLE_ID',
'multiple' => 'Y',
'contextCode' => 'U',
'enableAll' => 'N',
'enableSonetgroups' => 'N',
'allowEmailInvitation' => 'N',
'allowSearchEmailUsers' => 'N',
'departmentSelectDisable' => 'Y',
'isNumeric' => 'Y',
'prefix' => 'U',
)
);
// add new columns
$columns = PhaseSemantics::getListFilterInfo(false, null, true);
$id = 'STATUS_SEMANTIC_ID';
$filter[$entity][$id] = array_merge(
array(
'id' => $id,
'name' => Loc::getMessage('CRM_KANBAN_HELPER_FLT_STATUS_SEMANTIC_ID'),
'default' => false,
'params' => array(
'multiple' => 'Y'
)
),
$columns
);
}
// order
elseif ($entity == $types['order'])
{
$entityFilter = \Bitrix\Crm\Filter\Factory::createEntityFilter(
new \Bitrix\Crm\Filter\OrderSettings(
array(
'ID' => self::getGridId($entity)
)
)
);
}
// new common filter
if ($entity != $types['invoice'])
{
$grid = self::getGrid($entity);
$effectiveFilterFieldIDs = $grid->getUsedFields();
// add some additional fields
if ($entity != $types['quote'])
{
$addCodes = array(
'ASSIGNED_BY_ID', 'ACTIVITY_COUNTER', 'STAGE_ID'
);
if (self::$categoryId)
{
$addCodes[] = 'STAGE_ID';
}
foreach ($addCodes as $code)
{
if (!in_array($code, $effectiveFilterFieldIDs))
{
$effectiveFilterFieldIDs[] = $code;
}
}
}
// compile filter
if (empty($effectiveFilterFieldIDs))
{
$effectiveFilterFieldIDs = $grid->getDefaultFieldIDs();
}
foreach ($effectiveFilterFieldIDs as $filterFieldID)
{
$filterField = $entityFilter->getField($filterFieldID);
if ($filterField)
{
$filter[$entity][$filterFieldID] = $filterField->toArray();
}
}
}
}
return $filter[$entity];
}