- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/tracking/internals/sourceexpenses.php
- Класс: Bitrix\Crm\Tracking\Internals\SourceExpensesTable
- Вызов: SourceExpensesTable::addExpenses
static function addExpenses($sourceId, Main\Type\Date $from, Main\Type\Date $to, $sum, $currencyId, $actions, $comment = null)
{
if (!$sourceId || !$sum || !$currencyId)
{
return;
}
if ($from->getTimestamp() > $to->getTimestamp())
{
return;
}
$date = clone $from;
$days = (int) (($to->getTimestamp() - $from->getTimestamp()) / 86400) + 1;
if ($days > 365)
{
return;
}
$resultPack = ExpensesPackTable::add([
'SOURCE_ID' => $sourceId,
'DATE_FROM' => $from,
'DATE_TO' => $to,
'ACTIONS' => $actions,
'EXPENSES' => $sum,
'CURRENCY_ID' => $currencyId,
'COMMENT' => $comment
]);
if (!$resultPack->getId())
{
return;
}
$stepSum = round($sum / $days, 2);
$stepSumModulo = round($sum - $stepSum * $days, 2);
$stepActions = (int) ($actions / $days);
$stepActionModulo = $actions - $stepActions * $days;
for ($i = 1; $i <= $days; $i++)
{
$currentSum = $stepSum;
if ($stepSumModulo && $i === 1)
{
$currentSum = $stepSum + $stepSumModulo;
}
$currentActions = $stepActions;
if ($stepActionModulo && $i === 1)
{
$currentActions = $stepActions + $stepActionModulo;
}
static::add([
'PACK_ID' => $resultPack->getId(),
'SOURCE_ID' => $sourceId,
'DATE_STAT' => $date,
'ACTIONS' => $currentActions,
'EXPENSES' => $currentSum,
'CURRENCY_ID' => $currencyId,
//'COMMENT' => $comment
]);
$date->add('+1 day');
}
}