• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/integrations/report/handlers/treatment.php
  • Класс: BitrixImOpenLinesIntegrationsReportHandlersTreatment
  • Вызов: Treatment::prepare
public function prepare()
{
	$query = $this->getQueryForPrepareData();
	/** @var DropDown $whatWillCalculate */
	$whatWillCalculate = $this->getFormElement('calculate');
	$whatWillCalculateValue = $whatWillCalculate->getValue();
	switch ($whatWillCalculateValue)
	{
		case self::WHAT_WILL_CALCULATE_ALL:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(FIRST_TREATMENT_QTY + REPEATED_TREATMENT_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_ALL_TREATMENT_BY_HOUR:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_FIRST:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(FIRST_TREATMENT_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_DUPLICATE:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(REPEATED_TREATMENT_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_POSITIVE_MARK:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(POSITIVE_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_NEGATIVE_MARK:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(NEGATIVE_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_WITHOUT_MARK:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(WITHOUT_MARK_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_ALL_MARK:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(POSITIVE_QTY + NEGATIVE_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_ALL_APPOINTED:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(APPOINTED_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_ANSWERED:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(ANSWERED_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_SKIPPED:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(SKIP_QTY)'));
			break;
		case self::WHAT_WILL_CALCULATE_CONTENTMENT:
			$query->addSelect(new ExpressionField('VALUE', '(SUM(POSITIVE_QTY)/SUM(POSITIVE_QTY + NEGATIVE_QTY)) * 100'));
			break;
		default:
			$query->addSelect(new ExpressionField('VALUE', 'SUM(FIRST_TREATMENT_QTY + REPEATED_TREATMENT_QTY)'));

	}

	$query->addOrder('VALUE', 'DESC');
	$result = $query->exec();

	return $this->getCalculatedDataFromDbResult($result);
}