• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/cashboxcheckbox.php
  • Класс: BitrixSaleCashboxCashboxCheckbox
  • Вызов: CashboxCheckbox::printImmediately
public function printImmediately(Check $check)
{
	$url = $this->getRequestUrl(static::OPERATION_CREATE_CHECK);
	$token = $this->getAccessToken();

	$requestHeaders = [
		'ACCESS_TOKEN' => $token,
	];

	$requestBody = $this->buildCheckQuery($check);

	$printResult = $this->sendRequestWithAuthorization(self::HTTP_METHOD_POST, $url, $requestHeaders, $requestBody, self::HTTP_NO_REDIRECT);
	if (!$printResult->isSuccess())
	{
		return $printResult;
	}

	$response = $printResult->getData();

	if ($response['http_code'] === self::HTTP_RESPONSE_CODE_400)
	{
		$openShiftResult = $this->openShift();
		if (!$openShiftResult->isSuccess())
		{
			return $openShiftResult;
		}
		$this->addCloseShiftAgent();

		$printResult = $this->sendRequestWithAuthorization(self::HTTP_METHOD_POST, $url, $requestHeaders, $requestBody, self::HTTP_NO_REDIRECT);
		if (!$printResult->isSuccess())
		{
			return $printResult;
		}
		$response = $printResult->getData();
	}

	$responseCode = $response['http_code'];
	switch ($responseCode)
	{
		case self::HTTP_RESPONSE_CODE_201:
			if ($response['id'])
			{
				$printResult->setData(['UUID' => $response['id']]);
			}
			else
			{
				$printResult->addError(new MainError(Loc::getMessage('SALE_CASHBOX_CHECKBOX_CHECK_PRINT_ERROR')));
			}
			break;
		case self::HTTP_RESPONSE_CODE_422:
			if ($response['detail'])
			{
				foreach ($response['detail'] as $errorDetail)
				{
					$printResult->addError(new MainError($errorDetail['msg']));
				}
			}
			else
			{
				$printResult->addError(new MainError(Loc::getMessage('SALE_CASHBOX_CHECKBOX_CHECK_PRINT_ERROR')));
			}
			break;
		default:
			if ($response['message'])
			{
				$printResult->addError(new MainError($response['message']));
			}
			else
			{
				$printResult->addError(new MainError(Loc::getMessage('SALE_CASHBOX_CHECKBOX_CHECK_PRINT_ERROR')));
			}
	}

	return $printResult;
}