• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/archive/manager.php
  • Класс: BitrixSaleArchiveManager
  • Вызов: Manager::archiveOrders
static function archiveOrders($filter = array(), $limit = null, $timeExecution = null)
{
	$result = new SaleResult();
	$countArchived = 0;

	if ((int)$timeExecution)
	{
		@set_time_limit(0);
	}

	$params["filter"] = $filter;
	$params["order"] = array('ID' => "ASC");
	if ((int)$limit)
	{
		$params["limit"] = (int)$limit;
	}

	$orderArchiveCollection = new ProcessOrderArchiveCollection();
	$fillResult = $orderArchiveCollection->loadFromDB($params);
	if ($fillResult->hasWarnings())
	{
		return $fillResult;
	}

	/** @var ProcessOrderArchiveItem $item */
	foreach ($orderArchiveCollection as $index => $item)
	{
		$resultArchiving = $item->archive();
		if ($resultArchiving->isSuccess())
		{
			$countArchived++;
			$orderArchiveCollection->deleteItem($index);
		}
		else
		{
			$errorMessages = $resultArchiving->getErrorMessages();
			foreach ($errorMessages as $error)
			{
				$result->addError(new MainError(Loc::getMessage("ARCHIVE_ERROR_ORDER_MESSAGE", array("#ID#" => $item->getId())).": ".$error));
			}
		}

		if ((int)$timeExecution && (getmicrotime() - START_EXEC_TIME > $timeExecution))
		{
			break;
		}
	}

	$result->setData(array("count" => $countArchived));
	return $result;
}