- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/widget/data/company/datasource.php
- Класс: Bitrix\Crm\Widget\Data\Company\DataSource
- Вызов: DataSource::prepareEntityListFilter
public function prepareEntityListFilter(array $filterParams)
{
$filter = self::internalizeFilter($filterParams);
$period = $filter->getPeriod();
$dataSourceName = isset($filterParams['DS']) ? (string)$filterParams['DS'] : '';
//fix date -> datetime
$periodEnd = Main\Type\DateTime::createFromTimestamp($period['END']->getTimestamp());
$periodEnd->setTime(23, 59, 59);
$result = array(
'>=DEADLINE' => $period['START'],
'<=DEADLINE' => $periodEnd,
'=BINDING_OWNER_TYPE_ID' => \CCrmOwnerType::Company,
'=COMPLETED' => 'Y'
);
$responsibleIDs = $filter->getResponsibleIDs();
if(!empty($responsibleIDs))
{
$result['@RESPONSIBLE_ID'] = $responsibleIDs;
}
if (isset($filterParams['PN']))
{
// filter Calls, Meetings and Emails by TYPE_ID (not by PROVIDER_TYPE_ID) for compatibility.
list($providerId, $providerTypeId) = static::parsePresetName($filterParams['PN']);
if (
$providerId === Activity\Provider\Call::getId()
&& $providerTypeId === Activity\Provider\Call::ACTIVITY_PROVIDER_TYPE_CALL
)
{
$result['=TYPE_ID'] = \CCrmActivityType::Call;
}
elseif ($providerId === Activity\Provider\Meeting::getId())
{
$result['=TYPE_ID'] = \CCrmActivityType::Meeting;
}
elseif ($providerId === Activity\Provider\Email::getId())
{
$result['=TYPE_ID'] = \CCrmActivityType::Email;
}
else
{
if ($providerId)
$result['=PROVIDER_ID'] = $providerId;
if ($providerTypeId)
$result['=PROVIDER_TYPE_ID'] = $providerTypeId;
}
}
if (isset($filterParams['ENTITY_ID']))
$result['=BINDING_OWNER_ID'] = (int)$filterParams['ENTITY_ID'];
$field = isset($filterParams['FIELD']) ? $filterParams['FIELD'] : '';
switch ($field)
{
case 'NONE_QTY':
$result['=RESULT_MARK'] = StatisticsMark::None;
break;
case 'POSITIVE_QTY':
$result['=RESULT_MARK'] = StatisticsMark::Positive;
break;
case 'NEGATIVE_QTY':
$result['=RESULT_MARK'] = StatisticsMark::Negative;
break;
case 'ANSWERED_QTY':
$result['=RESULT_STATUS'] = StatisticsStatus::Answered;
unset($result['=COMPLETED']);
break;
case 'UNANSWERED_QTY':
$result['=RESULT_STATUS'] = StatisticsStatus::Unanswered;
unset($result['=COMPLETED']);
break;
case 'INCOMING_QTY':
$result['=RESULT_STREAM'] = StatisticsStream::Incoming;
unset($result['=COMPLETED']);
break;
case 'OUTGOING_QTY':
$result['=RESULT_STREAM'] = StatisticsStream::Outgoing;
unset($result['=COMPLETED']);
break;
case 'REVERSING_QTY':
$result['=RESULT_STREAM'] = StatisticsStream::Reversing;
unset($result['=COMPLETED']);
break;
case 'MISSING_QTY':
$result['=RESULT_STREAM'] = StatisticsStream::Missing;
unset($result['=COMPLETED']);
break;
case 'SUM_TOTAL':
$result['>RESULT_SUM'] = 0;
break;
case 'TOTAL':
if ($dataSourceName === ActivityStatusStatistics::TYPE_NAME)
{
$result['>STATUS_ID'] = StatisticsStatus::Undefined;
}
elseif ($dataSourceName === ActivityStreamStatistics::TYPE_NAME)
{
$result['>RESULT_STREAM'] = StatisticsStream::Undefined;
}
break;
}
return $result;
}