Você pode forçar o Cancelamento ou Confirmação... de acordo com o que retorna, com o Estado do ECF...
Veja esse trecho de ACBrTEFDClass.pas (use a força, veja os fontes).. Basta retornar o estado que o Cupom está Fechado, que a transação será Confirmada
procedure TACBrTEFDClass.VerificarTransacoesPendentesClass(aVerificarCupom: Boolean);
var
wEstadoECF: AnsiChar;
begin
if aVerificarCupom then
begin
try
wEstadoECF := TACBrTEFD(Owner).EstadoECF;
except
wEstadoECF := 'O';
{ Se o ECF estiver desligado, será retornado 'O', o que fará o código
abaixo Cancelar Todas as Transações Pendentes, porém, pelo Roteiro do
TEF dedicado, é necessário confirmar a Transação se o Cupom foi
finalizado com sucesso.
Criar um arquivo de Status que seja atualizado no Fim do Cupom e no
inicio do CCD, de maneira que seja possível identificar o Status do
Documento no ECF indepentende do mesmo estar ou não ligado
Como alteranativa, é possível implementar código no Evento "OnInfoECF"
para buscar o Status do Documento no Banco de dados da sua aplicação, e
responder diferente de 'O', (Veja exemplo nos fontes do TEFDDemo) }
end;
TACBrTEFD(Owner).GPAtual := Tipo;
// Cupom Ficou aberto?? ...Se SIM, Cancele tudo... //
if (wEstadoECF in ['V', 'P', 'N', 'O']) then
CancelarTransacoesPendentesClass
else
// NAO, Cupom Fechado, Pode confirmar e Mandar aviso para re-imprimir //
ConfirmarESolicitarImpressaoTransacoesPendentes; // <------------------------ AQUI -------------------
end
else
CancelarTransacoesPendentesClass;
end;
Isso foi implementado no "ACBrTEFD.TEFPayGoWeb.OnAvaliarTransacaoPendente"