Ir para conteúdo
  • Cadastre-se

dev botao

Retornar dados dos eventos Cancelamento e Carta de correção


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

Recommended Posts

Olá,

Por favor tenho uma dúvida, procurei no fórum e não achei a informação da maneira que preciso ou não entendi o que encontrei :). Ao fazer uma consulta de uma nota já transmitida e que a mesma tenha eventos (carta de correção e cancelamento), tenho como baixar o xml tanto da nota como dos eventos?

Para ajudar a ser mais específico, vamos imaginar que a carta de correção foi emitida em outro sistema (pelo contador por exemplo, pode parecer estranho mas incrivelmente isso acontece por aqui), daí tenho a intenção de ao consultar uma nota poder retornar todos estes dados e atualizar no meu banco de dados essas informações. Uma outra informação é que o Emissor gratuito consegue fazer isso, baixa do servidor da sefaz todos os dados atualizados da nota e os xml's que estão no servidor, tanto da nota quanto dos eventos.

PS.: Uso o Delphi 7 na implementação do sistema.

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Davila,

O componente ACBrNFe, já possui funcionalidades para baixar o xml da NFe com todas as informações e inclusive assinado, bem como a situação atual do mesmo, com a lista de eventos relacionados a uma determinada NFe.

Leia com muita atenção a NT que se refere a Manifestação do Destinatário, você vai encontrar informações sobre o Download da NFe, as suas restrições e requisitos.

E estude o programa Exemplo, nele contem botões que exemplificam essas funcionalidades.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Italo,

Cara, agradeço muito mesmo pela atenção a minha dúvida, inclusive segui as suas dicas e descobri algumas coisas importantes, a primeira é que a Manifestação do destinatário para minha região (RO) anda meio parada, então imagino que tenho ainda mais um tempo para implementar, e que sim, vou poder baixar o XML das notas confirmadas conforme suas orientações, obrigado novamente.

Mas o que gostaria de saber é se tenho como recuperar do webserver informações detalhadas das notas que eu mesmo emiti, pois se não entendi errado com a manifestação poderei baixar xml e dados das notas emitidas para meu cnpj e não as que eu emiti.

Ocorre assim, emito a nota, envio o xml por email tanto para o cliente quanto para o contador, daí ocorre em alguns casos que o contador que importou a nota para o sistema dele a partir do xml pode fazer alguns eventos como cancelamento ou carta de correção, a intenção é que ao consultar essa nota o meu sistema consiga recuperar estas informações do webserver e atualizar os banco de dados do sistema conforme o que foi retornado dos servidores da sefaz.

Fazendo a consulta dessa nota nos meus testes obtive várias informações sobre a nota inclusive a lista de eventos, mas não encontrei como atualizar o XML dos eventos e da nota. Se tiver essa implementação no componente poderia me mostrar onde encontrar essa funcionalidade e como usá-la?

Obrigado novamente,

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Davila,

O componente possui uma propriedade Chamada Salvar: Configuracoes\Gera\Salvar

Se o valor desta propriedade for TRUE após realizar a Consulta de uma NFe que anteriormente foi enviada para SEFAZ, será salvo um arquivo XML com o seguinte nome: -sit.xml

Este arquivo vai conter a situação atual da NFe (autorizada ou cancelada) e os eventos que por ventura estejam relacionados a mesma.

Para usar basta carregar o xml da NFe que se deseja consultar e executar o comando consultar.

Exemplo:

// Carrega no Componente a NFe salvo em Arquivo XML

// NomeArquivo contem o path + nome do arquivo XML

ACBrNFe.NotasFiscais.Clear;

ACBrNFe.NotasFiscais.LoadFromFile(NomeArquivo);

ACBrNFe.Consultar;

Espero ter ajudado.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Italo,

Mais uma vez camarada, muitíssimo obrigado a disponibilidade das respostas, já verifiquei as suas dicas e é exatamente isso que preciso, agora só mais uma pergunta, o componente tem algo pronto para ler esse xml me permitindo somente ler as suas propriedades ou assim como já achei no programa exemplo, terei de manipular diretamente as tags do xml para obter dele as informações que preciso?

Cordialmente,


D' Avila Junior

Grupo Centaurus | Qualidade em Desenvolvimento
Rua Soldado da Borracha, 275 - Jardim dos Migrantes | Ji-Paraná, RO
Fone: 69 3423 9491

Editado por davilajunior
Link para o comentário
Compartilhar em outros sites

  • Consultores

Davila,

Não tenho nenhum exemplo com relação a carta de correção, mas veja este pequeno fragmento de código:


     // Carrega no Componente a NFe salvo em Arquivo XML

     ACBrNFe.NotasFiscais.Clear;

     ACBrNFe.NotasFiscais.LoadFromFile(NomeArquivo);

     MemoStatus.Lines.Add('XML:');

     MemoStatus.Lines.Add(' Carregado');

     MemoStatus.Lines.Add(' NF-e: '+Copy(ACBrNFe.NotasFiscais.Items[i].NFe.inFNFe.ID,4,44));

Depois que você tem o XML carregado no componente, basta ler as propriedades para obter as informações. No exemplo acima, estou pegando a chave da NFe. Veja este outro fragmento:

     // se status = 100 a NFe foi autorizada

     if ACBrNFe.NotasFiscais.Items[i].NFe.procNFe.cStat = 100 

      then begin

       DM_VEN.IncAltDel.SQL.Clear;

       DM_VEN.IncAltDel.SQL.Add('Update Ven_Notas Set');

       DM_VEN.IncAltDel.SQL.Add('Enviado = :xEnviado,');

       DM_VEN.IncAltDel.SQL.Add('Protocolado = :xProtocolado,');

       DM_VEN.IncAltDel.SQL.Add('Protocolo = :xProtocolo,');

       DM_VEN.IncAltDel.SQL.Add('Impresso = :xImpresso');

       DM_VEN.IncAltDel.SQL.Add('Where Serie = :xSerie');

       DM_VEN.IncAltDel.SQL.Add('and Documento = :xNumero');

       DM_VEN.IncAltDel.Params[0].AsString:='S';

       DM_VEN.IncAltDel.Params[1].AsString:='S';

       DM_VEN.IncAltDel.Params[2].AsString:=ACBrNFe.NotasFiscais.Items[i].NFe.procNFe.nProt; // Numero do Protocolo

       DM_VEN.IncAltDel.Params[3].AsString:='S';

       DM_VEN.IncAltDel.Params[4].AsInteger:=StrToInt(lstChave3.Items.Strings[i]);

       DM_VEN.IncAltDel.Params[5].AsInteger:=StrToInt(lstChave4.Items.Strings[i]);

       DM_VEN.IncAltDel.ExecSQL;

      end;

Veja como obtenho o status e o numero do protocolo.

Espero ter ajudado.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • 2 meses depois ...

Amigo, voce consegue baixar o xml para a maquina local? Preciso consultar na sefaz, se o total da nota que está autorizada tem o mesmo valor do xml local. Preciso conseguir ler dentro do xml que está lá na sefaz. Aconteceu com um cliente meu de cancelar varias notas no sistema local, sem cancelar na sefaz. Agora preciso de fazer essa consulta para comparar com os dados locais para enviar o movimento para o contador. Trabalho com Delphi7. Obrigado por toda e qualquer ajuda.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde

você deve possuir todas as informações da nota certo?

se sim é só preencher o componente com os dados e efetuar a consulta junto ao sefaz ou dar ciência delas e pegar o xml!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3357 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.