Bom dia Italo,
Certo, entendi a questão da letra Auxiliar, quanto a isso tudo Ok.
Mas agora está surgiu uma outra questão, o envio agora sendo Síncrono, dentro da função Envia da classe ACBrMDFeWebServices, tem a parte do código:
if not Enviar.Executar then
Enviar.GerarException( Enviar.Msg );
E dentro deste Executar, a função TratarResposta da Recepção que fica na mesma classe, que tem o código:
if Sincrono then
begin
if pos('retMDFe', FPRetWS) > 0 then
AXML := StringReplace(FPRetWS, 'retMDFe', 'retConsSitMDFe',
[rfReplaceAll, rfIgnoreCase])
else
AXML := FPRetWS;
...
Código continua para baixo
Bem, isto eu já havia citado acima, mas como antes eu estava fazendo confusão com a questão da implementação do envio, não estava caindo nesta condição "If Sincrono", porém agora com o ajuste está entrando, e mais abaixo então, temos:
// Verificar se a MDF-e foi autorizado com sucesso
Result := (FMDFeRetornoSincrono.cStat = 104) and
(TACBrMDFe(FPDFeOwner).CstatProcessado(FMDFeRetornoSincrono.protMDFe.cStat));
if Result then
begin
for I := 0 to TACBrMDFe(FPDFeOwner).Manifestos.Count - 1 do
begin
with TACBrMDFe(FPDFeOwner).Manifestos.Items[I] do
...
Código continua para baixo
Ai que está o problema, o valor de cStat que está retornando é 100, portanto torna a condição falsa, e o valor de Result por sua vez também falso. E ocorre que então voltando ao primeiro código citado, ele gera um Exception com a seguinte mensagem: "Autorizado o uso do Mdf-e".
Seguindo o manual o cStat
104 = "Arquivo processado"
100 = "Autorizado o uso do MDF-e"
Está correto ser gerado uma Exception? Se sim, porque isso ocorre? Pois não compreendi ainda, se o MDF-e foi autorizado porque é tratado como se fosse um erro.