Ir para conteúdo
  • Cadastre-se

dev botao

Como obter o retorno do MDFe em modo Síncrono?


Recommended Posts

  • Consultores

Olá pessoal!

O envio do MDFe de forma assíncrona está com os dias contados, com a previsão de ser encerrado no dia 30/06/2024.

O tópico abaixo tem mais detalhes a respeito.

Mas fica então o questionamento, o que muda?

Bem, antes de falar sobre isso, vamos responder a outra pergunta: Qual é a diferença entre o envio assíncrono e o envio síncrono?

De maneira bem simples, a diferença entre essas formas de envio é a quantidade de conexões que é feita para com o web service da Sefaz.

No envio assíncrono, primeiro sua aplicação envia o XML para o web service e recebe um número de recibo. Então, a aplicação faz uma nova requisição para o web service consultando o número de recibo para obter as rejeições ou em caso de sucesso o MDFe.

Já no envio síncrono, em uma só requisição é enviado para o web service e na resposta já vem as rejeições ou o MDFe quando em caso de sucesso.

Se você pensou:

Citar

"Mas eu faço o envio assíncrono e nunca precisei consultar, sempre veio o XML direto".

Isso se deve ao fato de que visando auxiliar os desenvolvedores que utilizam o componente, esse processo é automatizado, ou seja, a consulta já era feita automaticamente pela solução.

Entendi a diferença entre os modos de envio, mas o que eu preciso mudar na minha aplicação?

A primeira coisa que você deve se atentar é no comando que utiliza para fazer o envio do MDFe para o web service.

Veja quais são os parâmetros do método Enviar no comando nativo.

// Parâmetros do método Enviar:
// ALote = Número do Lote
// AImprimir = Se True imprime automaticamente o DAMDFE
// ASincrono = Se True o envio é no modo Síncrono, caso contrario Assíncrono.
ACBrMDFe.Enviar(Alote, AImprmir, ASincrono);

Estes parâmetros são refletidos também nos comandos tanto da Lib:

MDFE_Enviar(ALote, AImprimir, ASincrono, sResposta, esTamanho);

Quanto do Monitor:

MDFE.ENVIARMDFe(nXMLMDFe, [nLote], [nAssinar],[nImprimi],[nImpressora], [bAssincrono], [bEncerrado]  )

Parâmetros:
nXMLMDFe - Caminho do XML do MDF-e 
nLote - Número do Lote  (opcional)
nAssinar - Assinar o XML (opcional - informe 0 para não assinar)
nImprimi - Imprimir MDF-e (opcional - informe 1 para imprimir)
nImpressora - Nome da Impressora (opcional)
bAssincrono - Por padrão o envio é Assíncrono, informa "False" para envio Sincrono
bEncerrado - Imprimir Mensagem de "MDFe Encerrado", (opcional - informe 1 para imprimir)

Então, a partir de 30/06/2024, será preciso informar corretamente o parâmetro que define o modo de envio, para que o mesmo seja feito de forma síncrona.

No momento de ler o retorno, também serão necessárias mudanças.

Caso utilize o componente nativo para Delphi/Lazarus, a classe que vai ler as informações não é mais a Retorno e sim a Enviar.

//Ao invés de ler as informações de:
ACBrMDFe.WebServices.Retorno.XXXX

//Agora vai ler de:
ACBrMDFe.WebServices.Enviar.XXXX

Se você utiliza o Monitor ou a Lib, a principal diferença será no momento de ler as informações do MDFe.

No envio assíncrono elas ficavam contidas na seção [MDFe + Número do MDFe], no entanto, na resposta do envio síncrono elas ficam em [MDFe+ Chave de Acesso do MDFe].

Mas eu não tenho a Chave de Acesso ainda, como vou conseguir ler?

A chave de acesso de um documento fiscal deve ser montada seguindo uma regra estabelecida no MOC. Por isso, tanto a Lib quanto o Monitor possuem um método específico que se alimentado com as informações necessárias devolvem a chave de acesso montada.

São eles:

Portanto, fazendo uso deste método é possível obter a informação que é precisa para realizar a leitura da seção.

  • Curtir 9
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.