- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/checkmanager.php
- Класс: BitrixSaleCashboxCheckManager
- Вызов: CheckManager::addCorrection
static function addCorrection($type, $cashboxId, array $correction)
{
$result = new Result();
if (!self::isAvailableCorrection())
{
return $result->addError(
new Error(
Loc::getMessage('SALE_CASHBOX_CHECK_CORRECTION_NOT_AVAILABLE')
)
);
}
/** @var CorrectionCheck $check */
$check = self::createByType($type);
if (!$check instanceof CorrectionCheck)
{
$result->addError(new Error(Loc::getMessage('SALE_CASHBOX_ERROR_CHECK')));
return $result;
}
$check->setField('CASHBOX_ID', $cashboxId);
$check->setAvailableCashbox([
Manager::getCashboxFromCache($cashboxId)
]);
$check->setCorrectionFields($correction);
$r = $check->save();
if ($r->isSuccess())
{
$result->setId($check->getField('ID'));
$cashbox = Manager::getObjectById($cashboxId);
if ($cashbox->isCorrection())
{
CashboxCheckTable::update(
$check->getField('ID'),
[
'STATUS' => 'P', 'DATE_PRINT_START' => new TypeDateTime()
]
);
$printResult = $cashbox->printCorrectionImmediately($check);
if ($printResult->isSuccess())
{
$data = $printResult->getData();
CashboxCheckTable::update($check->getField('ID'), ['EXTERNAL_UUID' => $data['UUID']]);
}
else
{
self::savePrintResult(
$check->getField('ID'),
[
'ID' => $check->getField('ID'),
'ERROR' => [
'TYPE' => ErrorsError::TYPE,
'MESSAGE' => implode("n", $printResult->getErrorMessages())
]
]
);
}
global $CACHE_MANAGER;
$CACHE_MANAGER->Read(CACHED_b_sale_order, 'sale_checks_'.$cashboxId);
$CACHE_MANAGER->SetImmediate('sale_checks_'.$cashboxId, true);
}
}
else
{
$result->addErrors($r->getErrors());
}
return $result;
}