• Модуль: 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; }