• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/reportmanager.php
  • Класс: BitrixSaleCashboxReportManager
  • Вызов: ReportManager::saveZReportPrintResult
static function saveZReportPrintResult($reportId, $data)
{
	$result = new Result();

	if ($reportId <= 0)
	{
		$result->addError(new Error(Loc::getMessage('SALE_CASHBOX_ERROR_REPORT_ID')));
		return $result;
	}

	$report = InternalsCashboxZReportTable::getRowById($reportId);
	if (!$report)
	{
		$result->addError(new Error(Loc::getMessage('SALE_CASHBOX_ERROR_REPORT_NOT_FOUND', array('#REPORT_ID#' => $reportId))));
		return $result;
	}

	if ($report['STATUS'] === 'Y')
		return $result;

	if (isset($data['ERROR']))
	{
		$errorMessage = Loc::getMessage('SALE_CASHBOX_ERROR_REPORT_PRINT', array('#REPORT_ID#' => $reportId));
		if ($data['ERROR']['MESSAGE'])
			$errorMessage .= ': '.$data['ERROR']['MESSAGE'];

		if ($data['ERROR']['TYPE'] === ErrorsWarning::TYPE)
		{
			if ($report['CNT_FAIL_PRINT'] >= 3)
			{
				$data['ERROR']['TYPE'] = ErrorsError::TYPE;
			}
			else
			{
				$result->addError(new ErrorsWarning($errorMessage));
				InternalsCashboxZReportTable::update($reportId, array('CNT_FAIL_PRINT' => $report['CNT_FAIL_PRINT']+1));
				return $result;
			}
		}

		if ($data['ERROR']['TYPE'] === ErrorsError::TYPE)
		{
			$updatedFields = array('STATUS' => 'E', 'DATE_PRINT_END' => new DateTime());
			if ((int)$report['CNT_FAIL_PRINT'] === 0)
				$updatedFields['CNT_FAIL_PRINT'] = 1;

			InternalsCashboxZReportTable::update($reportId, $updatedFields);
			$error = new ErrorsError($errorMessage);
			Logger::addError($error->getMessage(), $report['CASHBOX_ID']);
		}
		else
		{
			$error = new ErrorsWarning($errorMessage);
			Logger::addWarning($error->getMessage(), $report['CASHBOX_ID']);
		}

		$result->addError($error);
	}
	else
	{
		$updateResult = InternalsCashboxZReportTable::update(
			$reportId,
			array(
				'STATUS' => 'Y',
				'DATE_PRINT_END' => new DateTime(),
				'CASH_SUM' => $data['CASH_SUM'],
				'CASHLESS_SUM' => $data['CASHLESS_SUM'],
				'CUMULATIVE_SUM' => $data['CUMULATIVE_SUM'],
				'RETURNED_SUM' => $data['RETURNED_SUM'],
				'LINK_PARAMS' => $data['LINK_PARAMS']
			)
		);

		if (!$updateResult->isSuccess())
			$result->addErrors($updateResult->getErrors());
	}

	return $result;
}