Ir para conteúdo
  • Cadastre-se

Norton Martins

Membros
  • Total de ítens

    4
  • Registro em

  • Última visita

Tudo que Norton Martins postou

  1. Olá bom dia, Em anexo os Xml's de envio e retorno, para se caso precisar. 79-env-lot.xml 79-env-lot-soap.xml 79-pro-lot.xml 79-pro-lot-soap.xml
  2. 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.
  3. Estou tentando fazer o envio do MDFe de forma síncrona, entretanto está gerando algumas dúvidas. Na função de enviar o MDFe, são 3 parâmetros que podem ser passados, ALote, Imprimir, ASincrono respectivamente. Sendo que o parâmetro ASincrono tem como valor default FALSE, ou seja entende-se que a forma de envio é Síncrona correto? Pois bem, ao debugar o código na função Envia da classe ACBrMDFeWebServices, tem se o código: FEnviar.Lote := ALote; FEnviar.Sincrono := ASincrono; Então neste caso assumindo o valor default de Asincrono, o valor de Sincrono também é FALSE. Essa propriedade implica na função TratarResposta da parte de RECEPÇÃO nesta mesma classe. Primeira pergunta: 1º Porque a propriedade FEnviar.Sincrono recebe ASincrono? Sendo que no TratarResposta na recepção, existe condição que Sincrono tem de ser verdadeiro para poder ser executado. 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 E a segunda pergunta ainda na função Envia da classe ACBrMDFeWebServices. if not ASincrono or ((FEnviar.Recibo <> '') and (FEnviar.cStat = 103)) then begin FRetorno.Recibo := FEnviar.Recibo; if not FRetorno.Executar then FRetorno.GerarException( FRetorno.Msg ); end; Sendo neste caso a condição verdadeira, irá ser executado uma consulta dentro do FRetorno.Executar. 2º Porque tem de ser feita uma consulta?. Sendo que, segundo o parâmetro ASincrono está com valor FALSE, ou seja teria de ser Síncrono, e uma vez sendo Síncrono não necessita de consulta. Se não me fiz entender, tento explicar de outra maneira. Desde já, agradeço a compreensão.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.