Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Erro.png

Esta funcionando blz, para todas as prefeituras. Apenas para Sete Lagoas não estou conseguindo ler o retorno...

Editado por ALA
  • Respostas 83
  • Created
  • Última resposta

Top Posters In This Topic

Postado (editado)

Estou testando no Demo do ACBRNFSe e acontece a mesma coisa. Não consigo pegar as informações que estão no xml de retorno...

image.thumb.png.bfd979a9a7e63bfed448bb9518a9138b.png

 

image.thumb.png.d24bc2bf7adf40249687cafbf2da9725.png

 

 

 

Editado por ALA
  • Consultores
Postado

Boa noite ALA,

Pelas suas imagens estou entendendo que você esta carregando o XML do RPS para realizar a consulta, até ai tudo OK.

Coloque um break point na linha 1323 (Nivel := 0;) da unit pnfsNFSeR.pas para dar inicio ao debug, note que algumas linhas abaixo são as responsáveis por ler o XML as informações que você deseja.

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

  • 2 semanas depois ...
Postado

Italo, não encontrei problema na linha que vc mencionou. Mas para resolver o problema estou procurando o Codigo Verificacao no indice 1. Quando utilizou indice 0, o codigo de verificacao esta vazio.  Nfe.ACBrNFSe.NotasFiscais.Items[1].NFSe.CodigoVerificacao

           // Sete Lagoas //
          if ( Trim( utst_Prefeitura ) = Trim( utco_Codigo_PSA_IBGE )) or     // Sete Lagoas  - MG -  //
             ( Trim( utst_Prefeitura ) = Trim( utco_Codigo_PCU_IBGE )) or     // Curvelo = MG //
             ( Trim( utst_Prefeitura ) = Trim( utco_Codigo_PVE_IBGE )) then   // Vespasiano - MG //
          begin
                 Nfe.ACBrNFSe.ConsultarNFSeporRps( Nfe.ACBrNFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero,
                                                   Nfe.ACBrNFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie,
                                                   TipoRPSToStr( Nfe.ACBrNFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo));
                 mem_Retorno.Lines.Text   := UTF8Encode(Nfe.ACBrNFSe.WebServices.ConsNfseRps.RetWS);
                 mem_RetornoWS.Lines.Text := UTF8Encode(Nfe.ACBrNFSe.WebServices.ConsNfseRps.RetWS);

                 // ala 12/06/2018 if Trim( Nfe.ACBrNFSe.NotasFiscais.Items[0].NFSe.CodigoVerificacao ) <> EmptyStr then
                 if Trim( Nfe.ACBrNFSe.NotasFiscais.Items[1].NFSe.CodigoVerificacao ) <> EmptyStr then
                 begin
                       if fMostrarMsg then
                       begin
                          //ShowMessage( 'Código de Verificação: ' + Nfe.ACBrNFSe.NotasFiscais.Items[0].NFSe.CodigoVerificacao );
                          ShowMessage( 'Código de Verificação: ' + Nfe.ACBrNFSe.NotasFiscais.Items[1].NFSe.CodigoVerificacao );
                       end;
                       lcst_Arquivo := nfe.ACBrNFSe.NotasFiscais.Items[0].NomeArq;
                       if not FileExists( lcst_Arquivo ) then
                       begin
                          lcst_Arquivo := nfe.ACBrNFSe.NotasFiscais.Items[1].NomeArq;
                          if not FileExists( lcst_Arquivo ) then
                             lcst_Arquivo  := NFe.ACBrNFSe.Configuracoes.Arquivos.PathNFSe + '\' + FormatDateTime( 'yyyymm', Date ) + '\NFSe\' + Nfe.ACBrNFSe.NotasFiscais.Items[0].NFSe.Numero + '-nfse.xml';
                       end;

                      { // GRAVAR O PROTOCOLO NO BD }
                       NFe.ACBrNFSe.NotasFiscais.Clear;
                       NFe.ACBrNFSe.NotasFiscais.LoadFromFile( lcst_Arquivo );
                       // GERAR PDF //
                       NFe.AcbrNFSe.NotasFiscais.ImprimirPDF;

                       // SE A DATA DE EMISSÃO DO RPS DIFERENTE DA DATA RETORNADA PELO WS, //
                       // UTILIZA A DATA DE EMISSÃO DO RPS GRAVADO NO BD ... ///
                       if lcdt_Data_RPs = 0 then
                       begin
                          //lcdt_Data_RPs := NFe.ACBrNFSe.NotasFiscais.Items[0].NFSe.DataEmissaoRps
                          lcdt_Data_RPs := NFe.ACBrNFSe.NotasFiscais.Items[0].NFSe.DataEmissaoRps
                       end;


                       // BUSCA O XML DA NFE E GRAVA OS DADOS ABAIXO //     ACBrNFSe.WebServices.ConsSitLoteRPS.Protocolo
                       if DM_GERALNFE.AtualizarNotaFiscal( NFe.ACBrNFSe.NotasFiscais.Items[0].NFSe.Numero,     // numero da nfe gerado pela prefeitura
                                                           EmptyStr, // não retorna o numero do protocoloNFe.ACBrNFSe.NotasFiscais.Items[0].NFSe.Protocolo,  //NFe.ACBrNFSe.WebServices.ConsSitLoteRPS.Protocolo, // ala 16/06/2019  EmptyStr,  // numero/ protocolo
                                                           EmptyStr,  // pk
                                                           NFe.ACBrNFSe.NotasFiscais.Items[0].XML,
                                                           utco_ArquivoGerado,
                                                           EmptyStr,
                                                           EmptyStr,
                                                           NFe.ACBrNFSe.NotasFiscais.Items[0].NFSe.CodigoVerificacao,
                                                           utco_NFe_Autorizada,
                                                           lcst_Arquivo,
                                                           lcdt_Data_RPs,                                          // alaterado em 11/06/2018, NFe.ACBrNFSe.NotasFiscais.Items[0].NFSe.DataEmissaoRps, // data de emissao da nfe do Dygnus
                                                           lcst_Numero_RPS,                                        // número da NF no Dygnus
                                                           EmptyStr,                                               // Protocolo EPEC
                                                           EmptyStr,                                               // Codigo do Tipo de Cancelametno da NFSe
                                                           NFe.ACBrNFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie,
                                                           0,
                                                           NFe.ACBrNFSe.NotasFiscais.items[ 0 ].NomeArqRps,
                                                           DS_EMPRESA.DataSet.FieldByName( 'EMP_CODIGO_EMPRESAMASTER' ).AsString,
                                                           DS_EMPRESA.DataSet.FieldByName( 'EMP_codigo'               ).AsString, '' ) then
                       begin
                          if fMostrarMsg then
                          begin
                              if Application.MessageBox( PChar( 'A Nota Fiscal ' + LeftZeroFill( StrToInt64( NFe.ACBrNFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero) , 6 ) +' foi atualizada com sucesso. Deseja Imprimir o DANFE ?' ) ,'Confirmação', MB_YESNO+MB_ICONQUESTION ) = idYes then
                              begin
                                 NFe.ACBrNFSe.NotasFiscais.Clear;
                                 NFe.ACBrNFSe.NotasFiscais.LoadFromFile( lcst_Arquivo );
                                 if FileExists( lcst_Arquivo ) then
                                    Imprimir_DANFSe( False )
                                 else
                                    ShowMessage( 'Arquivo não encontrado para impressão do DANFSe: ' + lcst_Arquivo );
                              end;
                          end
                          else
                          begin
                             NFe.ACBrNFSe.NotasFiscais.Clear;
                             NFe.ACBrNFSe.NotasFiscais.LoadFromFile( lcst_Arquivo );
                             if FileExists( lcst_Arquivo ) then
                                Imprimir_DANFSe( False )
                             else
                                ShowMessage( 'Arquivo não encontrado para impressão do DANFSe: ' + lcst_Arquivo );
                          end;
                          pc_Principal.ActivePageIndex  := 0;
                       end;
                       // ***** //
                       Result := True;
                 end; // if
          end // SETE LAGOAS //
 

  • Consultores
Postado

Bom dia ALA,

Se os dados da nota estão no índice 1 em vez de zero isso significa que esta faltando alguma informação no XML de retorno que faz com que ele não encontre o RPS que já esta na lista (índice zero) e acaba ADD mais um item na lista e coloca os dados nesse novo índice.

Normalmente no XML da NFS-e tem que constar o Numero e Série do RPS para que seja possível fazer a comparação com o RPS carregado ao realizar a consulta.

Se no XML da NFS-e não for retornado por exemplo a Série do RPS, ao procurar na lista não vai achar e consequentemente vai colocar os dados da nota em um novo elemento, dai o motivo de você esta encontrando as informações desejadas no índice 1.

Favor anexar o XML do RPS a ser consultado e o XML de retorno da consulta.

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

Italo. Verificadno o XML do RPs e o XML do NFSe não encontrei diferenca entre os dados do Rps enviados e os retornados  pela prefeitura

image.thumb.png.9be7a95c3b0f17676d851bb8b16b8a3d.png

  • Consultores
Postado

Bom dia ALA,

É preciso checar o valor da seguinte linha que se encontra em ACBrNFSeWebService:

 CondicaoNovoRetorno :=

(StrToInt64Def(FNotasFiscais.Items[ l ].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items[ i ].NFSe.IdentificacaoRps.Numero, 0)) and
              (FNotasFiscais.Items[ l ].NFSe.IdentificacaoRps.Serie = FRetornoNFSe.ListaNFSe.CompNFSe.Items[ i ].NFSe.IdentificacaoRps.Serie) and
              ((FNotasFiscais.Items[ l ].NFSe.IdentificacaoRps.Tipo = FRetornoNFSe.ListaNFSe.CompNFSe.Items[ i ].NFSe.IdentificacaoRps.Tipo) or
              (FNotasFiscais.Items[ l ].NFSe.InfID.ID = FRetornoNFSe.ListaNFSe.CompNFSe.Items[ i ].NFSe.InfID.ID));

Se o valor de CondicaoNovoRetorno for False será criado um novo item na lista.

Condições para o teste:

Enviar o RPS, não limpar o componente ao realizar a consulta ao Lote.
 

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

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