Ir para conteúdo
  • Cadastre-se

dev botao

Retorno em consulta de Nfe destinadas.


raosistemas
Ver Solução Respondido por raosistemas,
  • Este tópico foi criado há 413 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

     j := acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count - 1;

     for i := 0 to j do
      begin
       sSerie   := '';
       sNumero  := '';
       sCNPJ    := '';
       sNome    := '';
       sIEst    := '';
       sNSU     := '';
       sEmissao := '';
       sTipoNFe := '';
       Valor    := 0.0;
       Impresso := ' ';

       if acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.chDFe <> ''
        then begin
         // Conjunto de informações resumo da NF-e localizadas.
         // Este conjunto de informação será gerado quando a NF-e for autorizada ou denegada.

         sChave := acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resdFe.chdFe;

         sSerie  := Copy(sChave, 23, 3);
         sNumero := Copy(sChave, 26, 9);
         sCNPJ := acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resdFe.CNPJCPF;
         sNome := acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resdFe.xNome;
         sIEst := acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resdFe.IE;
         case acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resdFe.tpNF of
          tnEntrada: sTipoNFe := 'E';
          tnSaida:   sTipoNFe := 'S';
         end;
         sNSU  := acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].NSU;
         sEmissao := DateToStr(acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resdFe.dhEmi);
         Valor := acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resdFe.vNF;

         case acbrnfe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resdFe.cSitdFe of
          snAutorizado: Impresso := 'A';
          snDenegado:   Impresso := 'D';
          snCancelado:  Impresso := 'C';
         end;
        end;

        memoresp.lines.Add('Chave.........: '+schave+chr(13)+
                           'Numero........: '+snumero+chr(13)+
                           'CNPJ..........: '+scnpj+chr(13)+
                           'Razão.........: '+snome+chr(13)+
                           'Insc.Est......: '+siest+chr(13)+
                           'E/S...........: '+stiponfe+chr(13)+
                           'NSU...........: '+snsu+chr(13)+
                           'Emissão.......: '+semissao+chr(13)+
                           'Valor.........: R$ '+formatfloat('###,###,##0.00',valor)+chr(13)+
                           'Status........: '+impresso+chr(13)

        )

Estou realizando essa consulta por enquanto... estou colocando nsu = 0 pra fazer um teste ok?

e está retornando essa lista, porém alguns registros estão vindo em branco...

dessa forma, não entendi o pq.

Nesse caso os NSUs, 2041,2042,2043,2044,2045 e 2046 retornaram em branco, voltando a preencher no 2047.


 

Chave.........: 35200102369933000186550010001652441367536740
Numero........: 000165244
CNPJ..........: 02369933000186
Razão.........: ACP COMERCIO ATACADISTA DE COMPONENTES ELETRONICOS LTDA
Insc.Est......: 115416004118
E/S...........: S
NSU...........: 000000000002039
Emissão.......: 16/01/2020
Valor.........: R$ 729,75
Status........: A

Chave.........: 35200102658605000108550010001143971277121267
Numero........: 000114397
CNPJ..........: 02658605000108
Razão.........: DISPLAY MAX ELETRONICA LTDA
Insc.Est......: 115199680115
E/S...........: S
NSU...........: 000000000002040
Emissão.......: 16/01/2020
Valor.........: R$ 1.216,97
Status........: A

Chave.........: 35200102658605000108550010001143971277121267
Numero........:
CNPJ..........:
Razão.........:
Insc.Est......:
E/S...........:
NSU...........:
Emissão.......:
Valor.........: R$ 0,00
Status........:  

Chave.........: 35200102658605000108550010001143971277121267
Numero........:
CNPJ..........:
Razão.........:
Insc.Est......:
E/S...........:
NSU...........:
Emissão.......:
Valor.........: R$ 0,00
Status........: 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Os "em branco" podem ser eventos e não notas.

Você pode testar o tipo de documento retornado acessando a propriedade schema:

case ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].schema of
  schresNFe: ; // resumo de nfe
  schresEvento: ; // resumo de evento
  schprocNFe: ; // nfe completa
  schprocEventoNFe: ; // evento 
end;
  • Curtir 2
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

39 minutos atrás, BigWings disse:

Os "em branco" podem ser eventos e não notas.

Você pode testar o tipo de documento retornado acessando a propriedade schema:


case ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].schema of
  schresNFe: ; // resumo de nfe
  schresEvento: ; // resumo de evento
  schprocNFe: ; // nfe completa
  schprocEventoNFe: ; // evento 
end;

aparentemente, usei todos os tipos possíveis, mesmo assim retorna da mesma forma.

         case ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].schema of
            schresEvento:      stipodoc  := 'Resumo de Evento'; // resumo de evento
            schresNFe:         stipodoc  := 'Resumo NF-e';      // resumo de nfe
            schprocNFe:        stipodoc  := 'Nf-e Completa';    // nfe completa
            schprocEventoNFe:  stipodoc  := 'Evento NF-e';      // evento
            schresCTe:         stipodoc  := 'Resumo CT-e';      // resumo CTE
            schprocCTe:        stipodoc  := 'CT-e Completa';    // CT-e Completa
            schprocCTeOS:      stipodoc  := 'CT-e OS Completa'; // cteos completa
            schprocEventoCTe:  stipodoc  := 'Evento CT-e';      // evento
            schprocMDFe:       stipodoc  := 'MDF-e Completa';   // Manifesto completo
            schresMDFe:        stipodoc  := 'Resumo MDF-e';     // resumo do mdfe
            schprocEventoMDFe: stipodoc  := 'Evento MDF-e';     // evento
            schresBPe:         stipodoc  := 'Resumo BP-e';      // resumo bilhete de passagem
            schprocBPe:        stipodoc  := 'BP-e Completo';    // bilhete de passagem eletronico
            schprocEventoBPe:  stipodoc  := 'Evento BP-e';      // evento de bilhete de passagem
         end;

 

e estou mostrando essa variavel stipodoc no meu memo também... mas aparece em branco.

schema="procEventoNFe_v1.00.xsd esse é o evento das que não aparecem.

Link para o comentário
Compartilhar em outros sites

configurei o path do download no ACBRNFE, mas como vem tudo o sistema não distingue o tipo de xml, posso fazer alguma coisa antes de tentar carregar o xml, por ex, se eu tentar carregar um xml de evento dá "ARGUMENT OUT OF RANGE", mesmo dentro de um bloco try... except...

quando carrego um xml vai normal.

como consigo testar o xml antes?

Link para o comentário
Compartilhar em outros sites

  • Moderadores
14 minutos atrás, raosistemas disse:

configurei o path do download no ACBRNFE, mas como vem tudo o sistema não distingue o tipo de xml, posso fazer alguma coisa antes de tentar carregar o xml, por ex, se eu tentar carregar um xml de evento dá "ARGUMENT OUT OF RANGE", mesmo dentro de um bloco try... except...

Provavelmente tem algo errado no código e está tentando acessar um item que não existe.

Se estiver usando for..do aninhados verifique as variáveis de controle.

16 minutos atrás, raosistemas disse:

quando carrego um xml vai normal.

como consigo testar o xml antes?

Não entendi essa parte.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Voltando ao assunto @BigWings, a questão é que o meu sistema faz uma varredura na pasta downloads (documentos baixados automaticamente pelo acbnfe1) e quando não é nfe dá o erro acima.

a procedure de leitura do arquivo é a seguinte:

begin
   try
    ACBrNFe1.NotasFiscais.Clear;
    ACBrNFe1.NotasFiscais.Add;
    NFeRTXT := TNFeRTXT.Create(ACBrNFe1.NotasFiscais.Items[0].NFe);
    NFeRTXT.CarregarArquivo(arquivo);
    if NFeRTXT.LerTxt then
       NFeRTXT.Free
    else
    begin
       NFeRTXT.Free;
       ACBrNFe1.NotasFiscais.Clear;
       try
          ACBrNFe1.NotasFiscais.LoadFromFile(arquivo);
          StatusBar1.Panels[2].text:='Arquivo NFe Carregado!!!';
       except
          showmessage('1');
          StatusBar1.Panels[2].text:='Arquivo NFe Inválido';
          label_aviso.Caption:='Inválido';
          exit;
       end;
    end;
   except
          StatusBar1.Panels[2].text:='Arquivo NFe Inválido';
          label_aviso.Caption:='Inválido';
          exit;
   end;

erro ocorre na função carregar arquivo!

Link para o comentário
Compartilhar em outros sites

  • Moderadores
2 minutos atrás, raosistemas disse:

Voltando ao assunto @BigWings, a questão é que o meu sistema faz uma varredura na pasta downloads (documentos baixados automaticamente pelo acbnfe1) e quando não é nfe dá o erro acima.

Que saiba o ACBrNFe pelo método DistribuicaoDFe não salva os arquivos em TXT.

Isso me parece outro assunto, talvez você deva abrir outro tópico.

Eu não trabalho nem tenho conhecimento do formato em TXT.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Solution
12 minutos atrás, BigWings disse:

Que saiba o ACBrNFe pelo método DistribuicaoDFe não salva os arquivos em TXT.

Isso me parece outro assunto, talvez você deva abrir outro tópico.

Eu não trabalho nem tenho conhecimento do formato em TXT.

Consegui aqui, o esquema era o seguinte... na importacao de arquivos do proprio demo... ele tenta ler o txt e depois o xml... mas já contornei aqui, obrigado.

no download automatico dos DFes tem como eu selecionar só arquivos de nota para baixar?

Link para o comentário
Compartilhar em outros sites

  • Moderadores
40 minutos atrás, raosistemas disse:

Consegui aqui, o esquema era o seguinte... na importacao de arquivos do proprio demo... ele tenta ler o txt e depois o xml... mas já contornei aqui, obrigado.

no download automatico dos DFes tem como eu selecionar só arquivos de nota para baixar?

Não, mas você pode desativar a gravação automática pelo componente e salvar manualmente de acordo com o schema.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Oi @BigWings, pode me mostrar como fazer isso? existe um método para testar o schema ou faço pelo fim do nome do arquivo? e como salvo manualmente?

Agora, raosistemas disse:

Oi @BigWings, pode me mostrar como fazer isso? existe um método para testar o schema ou faço pelo fim do nome do arquivo? e como salvo manualmente?

Desculpe, já vi como testar, só preciso saber como salvar... muito obrigado.

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...
  • Consultores

Veja no programa de exemplo como ler um XML, no botão Distribuição por último NSU.

Caso tenha novas dúvidas, favor abrir um novo tópico, fechando este e o outro antigos com a mesma dúvida.

3.1 - Não faça flooding - Inundar o fórum com posts repetidos, com a mesma dúvida ou as mesmas palavras é chamado de flooding. Isso é proibido. Apenas um post feito no lugar certo é suficiente. Pesquise antes de postar, talvez sua dúvida já está respondida em outro post. Favor leia as regras do fórum.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 413 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.