Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2957 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Bom dia a todos!

 

Temos um rede supermercados e estamos desenvolvendo o nosso próprio sistema de PDV.

Atualmente utilizamos um sistema de terceiros no PDV que não envia diretamente o xml para a SEFAZ iremos desenvolver o nosso sistema seguindo esse modelo.

O PDV gera o XML e irá disponibilizar este arquivo em um pasta específica no servidor de rede.

Temos uma aplicação chamada de MENSAGERIA que monitora os xmls desta pasta.

A MENSAGERIA pega o XML gerado pelo PDV, assina e envia para a SEFAZ autorizar.

Quando a SEFAZ retorna o resultado para a mensageria a mesma deve gerar um arquivo de retorno XML para o PDV em uma pasta chamado RETORNO.

O PDV deverá ler o conteúdo desse arquivo e se autorizado deverá imprimir o DANFE do cliente, caso contrário será gerado um XML de contingência.

 

O meu problema está sendo na leitura do arquivo de retorno gerado pela MENSAGERIA.

Não estou conseguindo obter/ler o retorno do XML utilizando o ACBrNFe.

Eu sei que para carregar um NFCe por inteiro devo utilizar

ACBrNfe1.NotasFiscais.LoadFromFile(vArquivoXML)

Já para ler só o XML de retorno (que contem apenas o retorno) não estou sabendo como fazer.

 

Quando eu gero o XML no PDV as informações ficam carregadas no componente ACBrNFe. Porém não estou utilizando o evento de envio para autorizar na SEFAZ diretamente pelo PDV o qual apenas gera um arquivo XML e passa para a MENSAGERIA fazer o envio para SEFAZ.

Sendo assim o PDV fica aguardando o retorno via arquivo XML.

 

O que eu preciso fazer que não estou conseguindo é carregar o conteúdo do arquivo retorno XML no componente ACBrNFe.

Este arquivo possui apenas este conteúdo abaixo que pode variar de acordo com a resposta da SEFAZ:

PDV -> Gera arquivo XML -> MENSAGERIA -> Envia XML -> SEFAZ -> Envia Retorno -> MENSAGERIA -> Envia arquivo XML de Retorno -> PDV

 

Resumindo eu preciso obter o retorno do XML no PDV diretamente pelo arquivo de retorno gerado pela MENSAGERIA.

 

 

 

 

 

 

 

 

 

LGDUNI2000001003.000005863_env.xml

xml.PNG

Editado por ti_smig
Faltou anexar arquivos.
Postado

Pelo que entendi você vai responder em um layout próprio e gostaria apenas de saber como ler as informações da autorização? 

Se for isso, após a autorização basta ler as propriedades de: 

ACBrNFe.NotasFiscais.Items[0].NFe.procNFe

Estarão todas preenchidas.

Não sei se foi exatamente isso que queria saber... espero ter ajudado.

Postado

Boa tarde meu nobre! Obrigado por tentar me ajudar!

É quase isso.

A MENSAGERIA que é o meu autorizador está com esta informação preenchida, porém o PDV nem sabe que a nota foi autorizada.

O PDV é uma aplicação que somente gera um arquivo e entrega para a MENSAGERIA. A MENSAGERIA tem a resposta da SEFAZ e ela (a MENSAGERIA) gera um arquivo resposta para o PDV.

O único informação que o PDV tem sobre a autorização da nota é esse arquivo. O PDV não está utilizando o serviço de envio de nota para a SEFAZ, quem o faz é a MENSAGERIA.

 

Preciso que o PDV leia o XML de resposta gerado pela MENSAGERIA.

 

Estou estudando a possibilidade de fazer da seguinte forma:

Faria a aplicação do PDV carregar o arquivo XML para WebServices Retorno e varreria o conteudo do arquivo alimentando os valores/propriedades.

Porém não queria refazer algo que talvez já exista no ACBr.

//-----------------------------------------------------------

ACBrNfe1.WebServices.Retorno.NFeRetorno.Leitor.Arquivo := ParseTex(arquivo_XML_Retorno);

With ACBrNfe1.WebServices.Retorno.NFeRetorno do

begin

  i := 0;

   while (Leitor.rExtrai(1, 'nfce', '', i + 1) <> '') do 

   begin

        ProtNFe.Add;

        if Leitor.rExtrai(2, 'nfce' ) <> '' then

         begin

                ProtNFe.tpAmb    := StrToTpAmb(ok, Leitor.rCampo(tcStr, 'tpAmb'));
                ProtNFe.verAplic := Leitor.rCampo(tcStr, 'verAplic');
                ProtNFe.chNFe    := Leitor.rCampo(tcStr, 'id');
                ProtNFe.dhRecbto := Leitor.rCampo(tcDatHor, 'dhRecbto');
                ProtNFe.nProt    := Leitor.rCampo(tcStr, 'nProt1');
                ProtNFe.digVal   := Leitor.rCampo(tcStr, 'digVal');
                ProtNFe.cStat    := Leitor.rCampo(tcInt, 'codigo');
                ProtNFe.xMotivo  := Leitor.rCampo(tcStr, 'descricao');

         end;

   end;

end;

 

//-----------------------------------------------------------

 

Eu não sei se o layout desse arquivo é próprio ou se é uma convenção adotada por algumas empresas.

 

 

 

Postado

Olá ti_smig,

A sistema MENSAGEIRA, que é seu autorizador, tem todas as informações que você precisa assim que autorizar nas propriedades de ACBrNFe.NotasFiscais.Items[0].NFe.procNFe. Até aí tudo bem, então à partir daí você escolhe a melhor forma para responder para o seu PDV.

Tenho algo muito parecido com a sua arquitetura, mas não preciso fazer nada na unha, utilizo o componente ACBrNFe para ler as propriedades com o uso de loadfromfile, por exemplo, caso você prefira, bastaria o sistema MENSAGEIRA responder ao seu PDV que a nota foi autorizada com o XML completo, então no PDV você utiliza o ACBrNFe.NotasFiscais.LoadFromFile(...); e pronto, você teria acesso a todas as propriedades da autorização em ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.

No meu caso ainda, utilizo o componente ACBrNFe no PDV só para preencher todas as propriedades e então gero um XML sem assinatura, apenas para servir de layout, então no que seria minha MENSAGEIRA, dou loadfromfile, e efetuo o envio da nota (onde será assinada e enviada), então ao ser autorizada, respondo ao PDV com ok, e então o PDV dá um loadfromfile para pegar os dados da autorização. Assim não tenho preocupação com layout e trabalhando sempre com o componente.

Então é isso... espero não ter bagunçado a sua cabeça... a intenção era ajudar. :-)

  • Curtir 1
Postado

Obrigado novamente meu nobre!

Acredito que vou ter que ir por esse caminho ai mesmo que você falou.

Eu estava tentando fazer algo parecido com o sistema atual que é terceirizado para não precisar mexer na minha MENSAGEIRA .

Estou convicto que será menos custoso fazer essa alteração na MENSAGEIRA para me retornar o XML completo autorizado e utilizar o componente ACBrNFe nas duas pontas de uma forma mais correta.

Ao menos esta tentativa inicial valeu como experiência.

Agradeço novamente pela ajuda!

  • Este tópico foi criado há 2957 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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