• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/manager.php
  • Класс: BitrixSaleCashboxManager
  • Вызов: Manager::updateChecksStatus
static function updateChecksStatus()
{
	$cashboxList = static::getListFromCache();
	if (!$cashboxList)
	{
		return '';
	}

	$availableCashboxList = [];
	foreach ($cashboxList as $item)
	{
		$cashbox = Cashbox::create($item);
		if (
			$cashbox instanceof ICheckable
			|| $cashbox->isCorrection()
		)
		{
			$availableCashboxList[$item['ID']] = $cashbox;
		}
	}

	if (!$availableCashboxList)
	{
		return '';
	}

	$parameters = [
		'filter' => [
			'=STATUS' => 'P',
			'@CASHBOX_ID' => array_keys($availableCashboxList),
			'=CASHBOX.ACTIVE' => 'Y'
		],
		'limit' => 5
	];
	$dbRes = CheckManager::getList($parameters);
	while ($checkInfo = $dbRes->fetch())
	{
		/** @var Cashbox|ICheckable|ICorrection $cashbox */
		$cashbox = $availableCashboxList[$checkInfo['CASHBOX_ID']];
		if ($cashbox)
		{
			$check = CheckManager::getObjectById($checkInfo['ID']);

			if ($check instanceof CorrectionCheck)
			{
				$result = $cashbox->checkCorrection($check);
			}
			elseif ($check instanceof Check)
			{
				$result = $cashbox->check($check);
			}
			else
			{
				continue;
			}

			if (!$result->isSuccess())
			{
				foreach ($result->getErrors() as $error)
				{
					if ($error instanceof ErrorsWarning)
					{
						Logger::addWarning($error->getMessage(), $cashbox->getField('ID'));
					}
					else
					{
						Logger::addError($error->getMessage(), $cashbox->getField('ID'));
					}
				}
			}
		}
	}

	return static::CHECK_STATUS_AGENT;
}