- Модуль: 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;
}