- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskreport.php
- Класс: CTaskReport
- Вызов: CTaskReport::GetDepartementStats
static function GetDepartementStats($arFilter=array())
{
global $DB;
$obUserFieldsSqlDepartment = new CUserTypeSQL;
$obUserFieldsSqlDepartment->SetEntity("USER", "T.RESPONSIBLE_ID");
$obUserFieldsSqlDepartment->SetSelect(array("UF_DEPARTMENT"));
if (!$arFilter["RESPONSIBLE_ID"])
{
$arFilter["SUBORDINATE_TASKS"] = "Y";
}
$arSqlSearch = CTasks::GetFilter($arFilter);
$strSql = "
SELECT
COUNT(T.RESPONSIBLE_ID) AS CNT,
SUM(CASE WHEN T.ADD_IN_REPORT = 'Y' THEN 1 ELSE 0 END) AS IN_REPORT,
SUM(".CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CREATED_DATE").") AS NEW,
SUM(".CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CREATED_DATE", "T.ADD_IN_REPORT = 'Y'").") AS NEW_IN_REPORT,
SUM(".CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CLOSED_DATE", "T.CLOSED_DATE IS NOT NULL").") AS CLOSED,
SUM(".CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CLOSED_DATE", "T.CLOSED_DATE IS NOT NULL AND T.ADD_IN_REPORT = 'Y'").") AS CLOSED_IN_REPORT,
SUM(".CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CLOSED_DATE", "T.CLOSED_DATE IS NOT NULL AND T.DEADLINE IS NOT NULL AND T.DEADLINE < T.CLOSED_DATE").") AS OVERDUE,
SUM(".CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CLOSED_DATE", "T.CLOSED_DATE IS NOT NULL AND T.DEADLINE IS NOT NULL AND T.DEADLINE < T.CLOSED_DATE AND T.ADD_IN_REPORT = 'Y'").") AS OVERDUE_IN_REPORT,
SUM(".CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CLOSED_DATE", "T.CLOSED_DATE IS NOT NULL AND T.ADD_IN_REPORT = 'Y' AND (T.MARK = 'P' OR T.MARK = 'N')").") AS MARKED_IN_REPORT,
SUM(".CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CLOSED_DATE", "T.CLOSED_DATE IS NOT NULL AND T.ADD_IN_REPORT = 'Y' AND T.MARK = 'P'").") AS POSITIVE,
BUF1.VALUE_INT AS DEPARTMENT_ID
FROM
b_tasks T
INNER JOIN
b_user U ON U.ID = T.RESPONSIBLE_ID AND U.ACTIVE = 'Y'
INNER JOIN
b_utm_user BUF1 ON BUF1.FIELD_ID = ".$obUserFieldsSqlDepartment->user_fields["UF_DEPARTMENT"]["ID"]." AND BUF1.VALUE_ID = T.RESPONSIBLE_ID
WHERE
".implode(" AND ", $arSqlSearch)."
GROUP BY
BUF1.VALUE_INT
";
$res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
return $res;
}