> ## Documentation Index
> Fetch the complete documentation index at: https://docs.suot.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Carta de correção (CC-e)

> Registre CC-e com $cte->correct() e corrections([new CteEventCorrection(...)]).

## O quê / quando

Corrija campos permitidos de um CT-e autorizado sem cancelar. Cada item é um `CteEventCorrection` (`grupoAlterado`, `campoAlterado`, `valorAlterado`).

## Exemplo

```php theme={null}
use Suot\Fiscal\Core\Exception\InfrastructureException;
use Suot\Fiscal\Core\Result\RetryMode;
use Suot\Fiscal\Cte\ValueObject\CteEventCorrection;

try {
    $result = $cte->correct()
        ->forOperation('cce-1')
        ->inHomologation()
        ->accessKey($chave44)
        ->emitterCnpj($cnpj)
        ->corrections([
            new CteEventCorrection(
                changedGroup: 'ide',
                changedField: 'xObs',
                changedValue: 'Observacao corrigida em homologacao',
            ),
        ])
        ->handle();
} catch (InfrastructureException $e) {
    $failure = $e->toFailure('correct');
    // Host: alertar; QueryBeforeRetry se timeout após envio
    throw $e;
}

if (! $result->isRejected()) {
    // Host: persistir protocolNumber do evento, responseXml, accessKey, operationId
}

if ($result->isRejected()) {
    $failure = $result->failure();
    $policy = $result->retryPolicy();
    match ($policy?->mode) {
        RetryMode::AfterCorrection => /* ajustar corrections[] e tentar de novo */,
        RetryMode::QueryBeforeRetry => /* reconciliar eventos antes de reenviar */,
        RetryMode::AfterDelay, RetryMode::Immediate => /* filar conforme política */,
        RetryMode::Never, null => /* definitivo; não reenviar */,
    };
}
```

Construtor: `changedGroup`, `changedField`, `changedValue`, e opcionalmente `changedItemNumber` (coleções).

<Warning>
  Só corrija grupos/campos permitidos pelo MOC/schema. Valores fiscais críticos (valores, chave vinculada, etc.) em geral exigem cancelamento e nova emissão — valide na especificação oficial.
</Warning>

Resultado: `CorrectCteResult` — `isRejected()`, `failure()`, protocolo do evento quando OK.
