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