Parece que você não está enviando o Desconto em OnComandaECFSubtotaliza
Veja trecho do TEFDDemo... observe que ele usa considera os descontos "da aplicação" e "do TEF"
os descontos da aplicação são obtidos lendo um componente do formulário (obviamente, você precisa rever isso de acordo com a sua aplicação)
MeuAcresDesc := StringToFloatDef( edValorDescAcre.Text, 0 );
Os Total de Descontos do TEF é informado como parâmetro de entrada do Evento
procedure TForm1.ACBrTEFD1ComandaECFSubtotaliza(DescAcre: Double;
var RetornoECF: Integer);
Var
Est : TACBrECFEstado ;
MeuAcresDesc : Double ;
begin
Memo1.Lines.Add('ComandaECFSubtotaliza: DescAcre: ' + FormatFloat('0.00',DescAcre) );
MeuAcresDesc := StringToFloatDef( edValorDescAcre.Text, 0 );
try
Est := ACBrECF1.Estado;
if Est = estNaoFiscal then
ACBrECF1.SubtotalizaNaoFiscal( DescAcre + MeuAcresDesc, 'Projeto ACBr|http://acbr.sf.net' )
else
ACBrECF1.SubtotalizaCupom( DescAcre + MeuAcresDesc, 'Projeto ACBr|http://acbr.sf.net' );
{ Remove o Desconto pois já foi aplicado, caso contrário iria influenciar o
retorno de ineSubTotal }
edValorDescAcre.Text := '0,00';
RetornoECF := 1 ;
except
RetornoECF := 0 ;
end;
end;