• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/cashbox/events/deletecashboxesondeletepaysystem.php
  • Класс: BitrixSalePaySystemCashboxEventsDeleteCashboxesOnDeletePaySystem
  • Вызов: DeleteCashboxesOnDeletePaySystem::executeEvent
public function executeEvent(): SaleResult
{
	$result = new SaleResult();

	if (!$this->service || !$this->service->isSupportPrintCheck())
	{
		return $result;
	}

	/** @var SaleCashboxCashboxPaySystem $cashboxClass */
	$cashboxClass = $this->service->getCashboxClass();
	$supportedKkmModels = [];

	$paySystemIterator = SalePaySystemManager::getList([
		'filter' => [
			'=ACTIVE' => 'Y',
		]
	]);
	while ($paySystemItem = $paySystemIterator->fetch())
	{
		$paySystemService = new SalePaySystemService($paySystemItem);
		if (
			$paySystemService->isSupportPrintCheck()
			&& $paySystemService->getCashboxClass() === $cashboxClass
		)
		{
			$supportedKkmModels[] = $cashboxClass::getKkmValue($this->service);
		}
	}

	$supportedKkmModels = array_unique(array_merge(...$supportedKkmModels));

	$cashboxList = SaleCashboxManager::getList([
		'select' => ['ID', 'KKM_ID'],
		'filter' => [
			'=HANDLER' => $cashboxClass,
			'!@KKM_ID' => $supportedKkmModels,
		],
	]);
	foreach ($cashboxList as $cashboxItem)
	{
		$serviceCashbox = SaleCashboxManager::getObjectById($cashboxItem['ID']);
		$deleteResult = SaleCashboxManager::delete($cashboxItem['ID']);
		if ($deleteResult->isSuccess())
		{
			AddEventToStatFile('sale', 'deleteCashbox', '', $serviceCashbox::getCode());
		}
		else
		{
			$result->addErrors($deleteResult->getErrors());
		}
	}

	return $result;
}