- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/volume/invoice.php
- Класс: Bitrix\Crm\Volume\Invoice
- Вызов: Invoice::clearActivity
public function clearActivity()
{
if (!$this->canClearActivity())
{
return -1;
}
$userPermissions = \CCrmPerms::GetUserPermissions($this->getOwner());
$activityVolume = new Volume\Activity();
$activityVolume->setFilter($this->getFilter());
$query = $activityVolume->prepareQuery();
$dropped = -1;
if ($activityVolume->prepareFilter($query))
{
$query
->setSelect(array(
'ID' => 'ID',
'INVOICE_ID' => 'BINDINGS.OWNER_ID',
))
->where('BINDINGS.OWNER_TYPE_ID', '=', \CCrmOwnerType::Invoice)
->setLimit(self::MAX_ENTITY_PER_INTERACTION)
->setOrder(array('ID' => 'ASC'));
if ($this->getProcessOffset() > 0)
{
$query->where('ID', '>', $this->getProcessOffset());
}
$res = $query->exec();
$dropped = 0;
while ($activity = $res->fetch())
{
$this->setProcessOffset($activity['ID']);
$activity['OWNER_TYPE_ID'] = \CCrmOwnerType::Invoice;
$activity['OWNER_ID'] = $activity['INVOICE_ID'];
if (\CCrmActivity::CheckItemDeletePermission($activity, $userPermissions))
{
\CCrmActivity::DeleteByOwner(\CCrmOwnerType::Invoice, $activity['INVOICE_ID']);
//todo: fail count here
$this->incrementDroppedActivityCount();
$dropped ++;
}
else
{
$this->collectError(new Main\Error('Access denied to activity #'.$activity['ID'], self::ERROR_PERMISSION_DENIED));
$this->incrementFailCount();
}
if ($this->hasTimeLimitReached())
{
break;
}
}
}
else
{
$this->collectError(new Main\Error('Filter error', self::ERROR_DELETION_FAILED));
}
return $dropped;
}