Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Prezados, boa noite,

Com a ajuda obtida aqui no Fórum e os exemplos do ACBr, consegui montar uma rotina para solicitar as notas emitidas contra um CNPJ e fazer o manifesto, porém, enquanto as notas estão vindo para o grid, eu percebo que as vezes não vem nenhuma informação de nota, fica a linha em branco, porém a contagem do NSU segue na sequência correta, como na imagem anexada, por exemplo, veio 5 notas, o NSU da quinta nota era 150, e logo abaixo ficaram 10 linhas em branco e depois voltou a aparecer dados de notas, e o NSU é 160, o que pode estar ocorrendo ? Deixo uma imagem e o fonte para solicitar um auxílio, obrigado.

   lblMensagem.Caption := 'Consultando Notas na SEFAZ, aguarde...';

   k := 0;

   repeat
     inc(k);

     ACBrNFe1.DistribuicaoDFePorUltNSU(UF_Autor, CNPJ, Ult_NSU);

     sStat   := IntToStr(ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat);
     sMotivo := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.xMotivo;

     if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 then
       bTemMais := False
     else
       bTemMais := True;

     sUltimoNSU := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU;

     Ult_NSU := sUltimoNSU;

     if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then
       begin
          lblRetorno.Caption := 'Foram encontradas notas na SEFAZ para baixar...';

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

          for i := 0 to j do
            begin

               fiChave    := '';
               fiCNPJ     := '';
               fiNome     := '';
               fiIE       := '';
               fiDataEmi  := '';
               fiTpNF     := '';
               fiValor    := 0.0;
               fiNumProt  := '';
               fiNSUantes := '';

               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
                    }
                    fiChave    := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.chDFe;
                    fiCNPJ     := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.CNPJCPF;
                    fiNome     := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.xNome;
                    fiIE       := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.IE;
                    fiDataEmi  := DateToStr(ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.dhEmi);
                    fiValor    := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.vNF;
                    fiNSUantes := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].NSU;
                 end;
                 // gravar na tabela : resumo_xml
                 //------------------------------
                 Conexao.BeginTrans;
                 qrNotasProcessadas.Append;

                 qrNotasProcessadas.FieldByName('chave').AsString         := fiChave;
                 qrNotasProcessadas.FieldByName('cnpj').AsString          := fiCNPJ;
                 qrNotasProcessadas.FieldByName('nome').AsString          := fiNome;
                 qrNotasProcessadas.FieldByName('ie').AsString            := fiIE;
                 qrNotasProcessadas.FieldByName('data_emi').AsString      := fiDataEmi;
                 qrNotasProcessadas.FieldByName('tp_nf').AsString         := '-';
                 qrNotasProcessadas.FieldByName('valor').AsCurrency       := fiValor;
                 qrNotasProcessadas.FieldByName('num_protocolo').AsString := '-';
                 qrNotasProcessadas.FieldByName('nsu_antes').AsString     := fiNSUantes;

                 qrNotasProcessadas.Post;
                 Conexao.CommitTrans;

                 DBGrid_notas.Refresh;
            end; // Fim do For
       end
     else
       begin // Nenhum Documento Localizado para o Destinatário
         if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 then
           begin
              lblRetorno.Caption := 'Não existem mais documentos para baixar da SEFAZ...';
           end
         else
           begin
              lblRetorno.Caption := 'Falha ao realizar a consulta : '+sStat + ' ' +sMotivo ;
           end;
     end;

     Application.ProcessMessages;

   until not bTemMais;

   ACBrNFe1.Free;

 

exemplo_grid.png

  • Consultores
Postado

Bom dia Marcelo,

lembre-se que o DistribuicaoDFe pode retornar: Resumo de Notas, Notas Completas, Resumo de Eventos e Eventos Completos.

Esse buraco pode ser referente a resumo de eventos ou eventos completos.

  • Curtir 1
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Obrigado pela dica Italo, só não estou conseguindo saber o que alterar no código para que não haja esse intervalo em branco.

A rotina é essa :

procedure TfrmMain.Button1Click(Sender: TObject);
var
   CNPJ, Impresso, sChave, sEmissao, sCNPJ, sNome, sNumero, sSerie,
   sIEst, sNSU, sTipoNFe, sStat, sMotivo, sUltimoNSU: String;
   Valor: Double;
   i, j, k: integer;
   bTemMais: Boolean;
   UF_Autor: Integer;
   Ult_NSU: String;
   tnEntrada: String;
   tnSaida: String;
   snAutorizado: String;
   snDenegado: String;
   snCancelado: String;
   Qtd_Cons: Integer;
   fiChave: string;
   fiCNPJ: string;
   fiNome: string;
   fiIE: string;
   fiDataEmi: string;
   fiTpNF: string;
   fiValor: currency;
   fiNumProt: string;
   fiNSUantes: string;
   ArquivoINI: TIniFile;
   Mensagem: string;
   vUfAutor: string;
   vUltimoNSU: string;
begin
   {
      recuperar do arquivo INI informações
   }
   ArquivoINI := TIniFile.Create('c:\certificados\config.ini');
   vUfAutor   := ArquivoINI.ReadString('manifesto', 'uf_autor', 'Erro ao ler o valor');
   vUltimoNSU := ArquivoINI.ReadString('manifesto', 'ultimo_nsu', 'Erro ao ler o valor');
   ArquivoINI.Free;

   CNPJ := Trim(labelCnpj.Caption);
   UF_Autor := StrToInt(vUfAutor);
   Ult_NSU := Trim(vUltimoNSU);
   Qtd_Cons := 9999;

   lblMensagem.Caption := 'Consultando Notas na SEFAZ, aguarde...';

   k := 0;

   repeat
     inc(k);

     ACBrNFe1.DistribuicaoDFePorUltNSU(UF_Autor, CNPJ, Ult_NSU);

     sStat   := IntToStr(ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat);
     sMotivo := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.xMotivo;

     if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 then
       bTemMais := False
     else
       bTemMais := True;

     sUltimoNSU := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU;

     Ult_NSU := sUltimoNSU;

     if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then
       begin
          lblRetorno.Caption := 'Foram encontradas notas na SEFAZ para baixar...';

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

          for i := 0 to j do
            begin

               fiChave    := '';
               fiCNPJ     := '';
               fiNome     := '';
               fiIE       := '';
               fiDataEmi  := '';
               fiTpNF     := '';
               fiValor    := 0.0;
               fiNumProt  := '';
               fiNSUantes := '';

               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
                    }
                    fiChave    := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.chDFe;
                    fiCNPJ     := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.CNPJCPF;
                    fiNome     := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.xNome;
                    fiIE       := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.IE;
                    fiDataEmi  := DateToStr(ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.dhEmi);
                    fiValor    := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.vNF;
                    fiNSUantes := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].NSU;
                 end;
                 // gravar na tabela : resumo_xml
                 //------------------------------
                 Conexao.BeginTrans;
                 qrNotasProcessadas.Append;

                 qrNotasProcessadas.FieldByName('chave').AsString         := fiChave;
                 qrNotasProcessadas.FieldByName('cnpj').AsString          := fiCNPJ;
                 qrNotasProcessadas.FieldByName('nome').AsString          := fiNome;
                 qrNotasProcessadas.FieldByName('ie').AsString            := fiIE;
                 qrNotasProcessadas.FieldByName('data_emi').AsString      := fiDataEmi;
                 qrNotasProcessadas.FieldByName('tp_nf').AsString         := '-';
                 qrNotasProcessadas.FieldByName('valor').AsCurrency       := fiValor;
                 qrNotasProcessadas.FieldByName('num_protocolo').AsString := '-';
                 qrNotasProcessadas.FieldByName('nsu_antes').AsString     := fiNSUantes;

                 qrNotasProcessadas.Post;
                 Conexao.CommitTrans;

                 DBGrid_notas.Refresh;
            end; // Fim do For
       end
     else
       begin // Nenhum Documento Localizado para o Destinatário
         if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 then
           begin
              lblRetorno.Caption := 'Não existem mais documentos para baixar da SEFAZ...';
           end
         else
           begin
              lblRetorno.Caption := 'Falha ao realizar a consulta : '+sStat + ' ' +sMotivo ;
           end;
     end;

     Application.ProcessMessages;

   until not bTemMais;

   ACBrNFe1.Free;
end;

Agradeço qualquer ajuda, obrigado.

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