- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/volume/invoice.php
- Класс: Bitrix\Crm\Volume\Invoice
- Вызов: Invoice::measureFiles
public function measureFiles()
{
self::loadTablesInformation();
$query = $this->prepareQuery();
if ($this->prepareFilter($query))
{
$source = array();
$groupByFields = array(
'DATE_CREATE' => 'DATE_CREATE_SHORT',
'STAGE_SEMANTIC_ID' => 'STAGE_SEMANTIC_ID',
);
$entityUserFieldList = $this->getUserTypeFieldList(Crm\InvoiceTable::class);
/** @var array $userField */
foreach ($entityUserFieldList as $userField)
{
$sql = $this->prepareUserFieldQuery(Crm\InvoiceTable::class, $userField, $groupByFields);
if ($sql !== '')
{
$source[] = $sql;
}
}
$diskConnector = static::getDiskConnector(Crm\InvoiceTable::class);
if ($diskConnector !== null)
{
$sql = $this->prepareDiskAttachedQuery(Crm\InvoiceTable::class, $diskConnector, $groupByFields);
if ($sql !== '')
{
$source[] = $sql;
}
}
$liveFeedConnector = static::getLiveFeedConnector(Crm\InvoiceTable::class);
if ($liveFeedConnector !== null)
{
$sql = $this->prepareLiveFeedQuery(Crm\InvoiceTable::class, $liveFeedConnector, $groupByFields);
if ($sql !== '')
{
$source[] = $sql;
}
}
if (count($source) > 0)
{
$querySql = "
SELECT
'".static::getIndicatorId()."' as INDICATOR_TYPE,
'".$this->getOwner()."' as OWNER_ID,
DATE_CREATE,
STAGE_SEMANTIC_ID,
SUM(FILE_SIZE) as FILE_SIZE,
SUM(FILE_COUNT) as FILE_COUNT,
SUM(DISK_SIZE) as DISK_SIZE,
SUM(DISK_COUNT) as DISK_COUNT
FROM
(
(".implode(' ) UNION ( ', $source).")
) src
GROUP BY
STAGE_SEMANTIC_ID,
DATE_CREATE
";
Crm\VolumeTable::updateFromSelect(
$querySql,
array(
'FILE_SIZE' => 'destination.FILE_SIZE + source.FILE_SIZE',
'FILE_COUNT' => 'destination.FILE_COUNT + source.FILE_COUNT',
'DISK_SIZE' => 'destination.DISK_SIZE + source.DISK_SIZE',
'DISK_COUNT' => 'destination.DISK_COUNT + source.DISK_COUNT',
),
array(
'INDICATOR_TYPE',
'OWNER_ID',
'DATE_CREATE',
'STAGE_SEMANTIC_ID',
)
);
}
}
return $this;
}