Ir para conteúdo
  • Cadastre-se

dev botao

XML de retorno do servidor IPM


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

Recommended Posts

Postado (editado)

Olá pessoal...

Estamos configurando o servidor IPM para Cascavel/PR mas não estou encontrando o XML da nota que o servidor retorna, tentei os caminhos abaixo mas nenhum tem o XML correto:

    ACBrNFSe.NotasFiscais.Items[0].XMLNFSe;
    ACBrNFSe.NotasFiscais.Items[0].XML;
    ACBrNFSe.NotasFiscais.Items[0].XMLAssinado;
    ACBrNFSe.NotasFiscais.Items[0].XMLOriginal;
    ACBrNFSe.NotasFiscais.Items[0].NFSe.XML;

Quando envio a nota vem um e-mail da IPM com a opção de baixar o XML e este tem mais informações, basicamente a mesma estrutura porém com informações da hora de envio, número e afins

O envio está funcionando corretamente, minha dúvida é onde consigo o XML de retorno

Obrigado

OBS. 1: o primeiro e o último caminho (XMLNFSe e NFSe.XML) ficam em branco. Em anexo o XML que aparece nos outros 3 caminhos (XML, XMLAssinado e XMLOriginal)
OBS. 2: está sendo enviado sem assinatura, pq pra Cascavel tem umas particularidades, o provedor mudou até a URL de homologação

XML.xml

Editado por tobexy
Postado
1 hora atrás, Juliomar Marchetti disse:

Verifica se esse provedor retorna ela já no envio do RPS ou se tu não precisa consultar para retornar a NFS-e gerada pelo RPS enviado posterior

Questionei eles, a princípio era pra retornar já no envio...
Eles me questionaram se a emissão é por Web Service ou por eletron?
Parece que estão verificando o servidor deles

Postado

Bom dia @tobexy.

segue o arquivo nfse.pas.

O arquivo nfse.pas é apenas um exemplo de como preencher o componente ACBrNFSe para o provedor IPM, quais comandos utilizar etc, um guia para com está começando a se familiarizar com as dificuldades deste provedor.

 

Outra coisa, a comunicação com o servidor da IPM é com HTTP POST, então, ao processar o envio, eles já irão responder com a NFS-e gerada com o HTML para impressão.

mas no arquivo de exemplo a impressão é feita de outra forma, faço abrir um link para impressão.

 

O xml de retorno é somente isso.

<?xml version='1.0' encoding='iso-8859-1'?>
  <retorno>
    <mensagem>
      <codigo>00001 - Sucesso</codigo>
    </mensagem>
    <numero_nfse>22</numero_nfse>
    <serie_nfse>1</serie_nfse>
    <data_nfse>15/06/2016</data_nfse>
    <hora_nfse>17:41:38</hora_nfse>
    <arquivo_gerador_nfse>22_0180450000040119.xml</arquivo_gerador_nfse>
    <nome_arquivo_gerado_eletron>22_0180450000040119.xml</nome_arquivo_gerado_eletron>
    <link_nfse>https://www.nfs-e.net/datacenter/include/nfw/nfw_imp_notas.php?codauten=0180450000040119</link_nfse>
    <cod_verificador_autenticidade>0180450000040119</cod_verificador_autenticidade>
    <codigo_html>Aqui retorna o HTML para impressão.</codigo_html>
  </retorno>

 

nfse.pas

  • Curtir 3
Postado (editado)

Olá pessoal
Só pra dar um retorno e talvez contribuir...
Consegui fazer o envio, porém foram necessárias algumas alterações no ACBr...

  1. Em ..\ACBr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe\pnfsNFSeW_IPM.pas tive que comentar a procedure GerarIdentificacaoHomologacao, pois com a tag nfse_teste no XML de envio, o servidor de Cascavel está retornando erro, sem ela o envio foi normal. O erro que aparece com ela é este:
    Citar

    EACBrDFeException with message '00285 - NFs-e valida para emissao.

  2. No mesmo arquivo, porém na procedure GerarIdentificacaoRPS as tags nro_recibo_provisorio serie_recibo_provisorio também geram erro, então alterei para que envie apenas em produção. Como o servidor de homologação que fizeram pra Cascavel tem ressalvas fiz isso na esperança que o servidor de produção seja igual é para as demais cidades. Como eles não liberaram e vão fazer isto na terça (04/08) só lá saberei se precisa remover tbm pro servidor de produção, lembrando que Cascavel eles fizeram um servidor diferente;
  3. Foi necessário alterar a URL de homologação no IPM.INI. O Italo já tinha alterado o Cidades.INI para Cascavel pegar o servidor de produção correto "sync-pr" e em homologação ficou o mesmo, porém em homologação eles mudaram pra um outro "demonstracao", com isso fiz a alteração no Cidades.INI pois em homologação pra funcionar precisa ser esta: 
    Citar

Não postei os arquivos aqui pq estas alterações podem comprometer o funcionamento das demais cidades e por algumas serem incógnitas ainda em produção, vou aguardar até entrar em vigor pra ver na prática o que acontece, aí abro um tópico com uma possível solução que atenda gregos e troianos

Obs.: @Filipe Natividade e @Juliomar Marchetti muito obrigado ajudou imensamente

 

Editado por tobexy
  • Curtir 3
Postado

@tobexy conseguiu chamar o "ConsultarNFSeporRps" ??

 

Aqui não funcionava...

Erro: A funcionalidade [Consultar NFSe por RPS] não foi disponibilizada pelo provedor: IPM

 

Então  alterei o IPM.INI nesta parte: (estava vazio as variáveis TEXTO)

[ConsNFSeRps]
IncluiEncodingCab=0
IncluiEncodingDados=0
TagGrupo=
TagElemento=
DocElemento=
InfElemento=
Texto1=<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Texto2=<S:Body>
Texto3=<ConsultarNfsePorRps xmlns="%NameSpace%">
Texto4=<cabecalho>%CabMsg%</cabecalho>
Texto5=<xml>%DadosMsg%</xml>
Texto6=</ConsultarNfsePorRps>
Texto7=</S:Body>
Texto8=</S:Envelope>

porem agora recebo outro erro:

Erro: Usuario ou senha invalido(s)

estranhamente o envio funciona, não diz que usuário e senha são inválidos.

 

 

-=Ma®©oS=-

Postado

Não cheguei a testar este método em produção ainda, assim que aparecer outro cliente verifico. Por enquanto o envio está funcionando normalmente com estas alterações

Postado

@-=Ma®©oS=-, com a IPM eu utilizo a seguinte forma.

Envio

NFSe.Gerar( NroRPS, 0, False );

//tratamentos

qryNFSePROTOCOLO.AsString := NFSe.NotasFiscais.Items[0].NFSe.Protocolo;

 

Consulta

NFSe.NotasFiscais.LoadFromFile( Diretorio +  NroRPS + SerieRps + '-Rps.xml' );

NFSe.ConsultarLoteRps( '', qryNFSePROTOCOLO.AsString );

apos consular o lote

 NFSe.ConsultarNFSeporRps( NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero,
                                                      NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie,
                                                      TipoRPSToStr(NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo ) );

 

não tive a necessidade de alterar o arquivo ini

Postado
21 horas atrás, Filipe Natividade disse:

não tive a necessidade de alterar o arquivo ini

Meu arquivo IPM.INI está igual ao do repositório e recebo a mensagem:

Erro: A funcionalidade [Consultar NFSe por RPS] não foi disponibilizada pelo provedor: IPM

Não entendo como pode estar funcionando ai sem alterar nada.

 

-=Ma®©oS=-

Postado
32 minutos atrás, Juliomar Marchetti disse:

Atualização do svn. dúvida está no trunk2 certo? já houve situações que estavamos a tentar resolver o problema mas descobrimos que a pessoa apontou pra uma tag no svn e dai não ia resolver

Exato, trunk2... atualizado:

Arquivo INI

image.png.6546762986e8c1eb22369ed0f192790a.png

 

Fontes:

image.png.1f74872ef5958f96635dfac2cca525c2.png

Só que aqui

  • Curtir 1

-=Ma®©oS=-

Postado

Problema que o município de Santa Helena/PR mudou de Equiplano para IPM, alguma coisa deve estar diferente dos demais municípios

P.S. Cascavel/PR tambem mudou, entrou em produção ontem (04/08)

 

-=Ma®©oS=-

Postado (editado)

Boa tarde, realmente existe o problema.

tente executar o seguinte teste

no procedimento:

procedure TNFSeConsultarNfseRPS.DefinirDadosMsg;

no final

  if (FPDadosMsg = '') or (FDadosEnvelope = '') then
    GerarException(ACBrStr('A funcionalidade [Consultar NFSe por RPS] não foi disponibilizada pelo provedor: ' +
     FPConfiguracoesNFSe.Geral.xProvedor));

Altere o valor da variável: FDadosEnvelope para ' ', para poder passar pela validação, e em seguida, volte o valor para ''

pois para o provedor IPM não pode ter envelope. 

 

 

pois na procedure:

procedure TNFSeGerarNFSe.DefinirDadosMsg;

a validação é realizada da seguinte forma:

    if not (FProvedor in [proIPM]) then
      GerarException(ACBrStr('A funcionalidade [Gerar NFSe] não foi disponibilizada pelo provedor: ' +
       FPConfiguracoesNFSe.Geral.xProvedor));

Editado por Filipe Natividade
Postado
5 minutos atrás, Filipe Natividade disse:

Boa tarde, realmente existe o problema.

tente executar o seguinte teste

no procedimento:

procedure TNFSeConsultarNfseRPS.DefinirDadosMsg;

no final

  if (FPDadosMsg = '') or (FDadosEnvelope = '') then
    GerarException(ACBrStr('A funcionalidade [Consultar NFSe por RPS] não foi disponibilizada pelo provedor: ' +
     FPConfiguracoesNFSe.Geral.xProvedor));

Altere o valor da variável: FDadosEnvelope para ' ', para poder passar pela validação, e em seguida, volte o valor para ''

pois para o provedor IPM não pode ter envelope. 

Ai volta o caso do  " Erro: Usuario ou senha invalido(s)"

 

-=Ma®©oS=-

Postado
1 minuto atrás, -=Ma®©oS=- disse:

Ai volta o caso do  " Erro: Usuario ou senha invalido(s)"

 

Certo, mas o envelope deve ficar em branco, não pode conter nem "espaços". exemplo: FDadosEnvelope = ' '; < não pode, deve ser: FDadosEnvelope = '';

Postado
4 minutos atrás, Filipe Natividade disse:

Certo, mas o envelope deve ficar em branco, não pode conter nem "espaços". exemplo: FDadosEnvelope = ' '; < não pode, deve ser: FDadosEnvelope = '';

Certo, havia esquecido de remover o espaço em branco depois de passar pela validação, mas sem sucesso, mudou o erro agora é: "Erro na estrutura do arquivo XML enviado. Verifique a estrutura da tag NFSE"

-=Ma®©oS=-

Postado

Fiz um teste agora, e o XML de consulta foi esse:

<?xml version="1.0" encoding="UTF-8"?><nfse><pesquisa><codigo_autenticidade>0180450009868880</codigo_autenticidade><numero/><serie/><cadastro/></pesquisa></nfse>

e o de resposta foi esse:

<?xml version="1.0" encoding="UTF-8"?><retorno><mensagem><codigo>00001 - Sucesso</codigo></mensagem><numero_nfse>1227</numero_nfse><serie_nfse>1</serie_nfse><situacao_codigo_nfse>1</situacao_codigo_nfse><situacao_descricao_nfse>Emitida</situacao_descricao_nfse><data_nfse>05/08/2020</data_nfse><hora_nfse>09:13:19</hora_nfse><arquivo_gerador_nfse>4988-ger-nfse.xml_186_20_13_09_0000000000.xml</arquivo_gerador_nfse><nome_arquivo_gerado_eletron></nome_arquivo_gerado_eletron><link_nfse>http://sync.nfs-e.net/datacenter/include/nfw/nfw_imp_notas.php?codauten=0180450009868880</link_nfse><cod_verificador_autenticidade>0180450009868880</cod_verificador_autenticidade><codigo_html>HTML de impressão, removi pq é muito grande.</codigo_html></retorno>

 

utiliza a consulta assim:

NFSe.NotasFiscais.LoadFromFile( Diretorio +  NroRPS + SerieRps + '-Rps.xml' );

NFSe.ConsultarLoteRps( '', qryNFSePROTOCOLO.AsString );

apos consular o lote

 NFSe.ConsultarNFSeporRps( NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero,
                                                      NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie,
                                                      TipoRPSToStr(NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo ) );

eu acho que somente a consulta do lote já vai ser suficiente, da uma verificada ai.

Postado
3 horas atrás, Filipe Natividade disse:

Fiz um teste agora, e o XML de consulta foi esse:


<?xml version="1.0" encoding="UTF-8"?><nfse><pesquisa><codigo_autenticidade>0180450009868880</codigo_autenticidade><numero/><serie/><cadastro/></pesquisa></nfse>

e o de resposta foi esse:


<?xml version="1.0" encoding="UTF-8"?><retorno><mensagem><codigo>00001 - Sucesso</codigo></mensagem><numero_nfse>1227</numero_nfse><serie_nfse>1</serie_nfse><situacao_codigo_nfse>1</situacao_codigo_nfse><situacao_descricao_nfse>Emitida</situacao_descricao_nfse><data_nfse>05/08/2020</data_nfse><hora_nfse>09:13:19</hora_nfse><arquivo_gerador_nfse>4988-ger-nfse.xml_186_20_13_09_0000000000.xml</arquivo_gerador_nfse><nome_arquivo_gerado_eletron></nome_arquivo_gerado_eletron><link_nfse>http://sync.nfs-e.net/datacenter/include/nfw/nfw_imp_notas.php?codauten=0180450009868880</link_nfse><cod_verificador_autenticidade>0180450009868880</cod_verificador_autenticidade><codigo_html>HTML de impressão, removi pq é muito grande.</codigo_html></retorno>

 

utiliza a consulta assim:

NFSe.NotasFiscais.LoadFromFile( Diretorio +  NroRPS + SerieRps + '-Rps.xml' );

NFSe.ConsultarLoteRps( '', qryNFSePROTOCOLO.AsString );

apos consular o lote

 NFSe.ConsultarNFSeporRps( NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero,
                                                      NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie,
                                                      TipoRPSToStr(NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo ) );

eu acho que somente a consulta do lote já vai ser suficiente, da uma verificada ai.

Somente a consulta do lote, não retorna o XML da NFS-e.

-=Ma®©oS=-

Postado (editado)

Boa tarde.

verifiquei meu código novamente e tinha esquecido de informar que para o provedor IPM é utilizado somente o comando: NFSe.ConsultarLoteRps( '', qryNFSePROTOCOLO.AsString );

pois para esse provedor não é utilizado o comando: NFSe.ConsultarNFSeporRps.

Código que utilizo:

      if( NFSe.Configuracoes.Geral.Provedor = proIPM )then
        begin
          NFSe.NotasFiscais.LoadFromFile( PATH +
                                          qryNFSeID.AsString +
                                          qryNFSeSERIE.AsString + '-Rps.xml' );

          NFSe.ConsultarLoteRps( '', qryNFSePROTOCOLO.AsString );
        end
      else
      begin
        try
          if( NFSe.Configuracoes.Geral.Provedor = proISSJoinville )then
            begin
              NFSe.NotasFiscais.LoadFromFile( PATH +
                                              qryNFSeID.AsString +
                                              qryNFSeSERIE.AsString + '-Rps.xml' );

              NFSe.ConsultarLoteRps( '', qryNFSePROTOCOLO.AsString )
            end
          else
          begin
            NFSe.ConsultarSituacao(qryNFSePROTOCOLO.AsString);

            if( NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.Situacao <> SituacaoLoteRPSToStr( slrProcessadoSucesso ) )then
              raise Exception.Create( '' );
          end;
        except
          on e:Exception do
          begin
            if( NFSe.Configuracoes.Geral.Provedor in [ proSimplISS, proPublica, proISSJoinville ] )then
            begin
              TrataSituacaoLote( NFSe.WebServices.ConsSitLoteRPS );

              if( NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Count = 0 )then
                MsgErro := NFSe.WebServices.ConsSitLoteRPS.Msg + sLineBreak;
            end;

            for I := 0 to NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Count -1 do
            begin
              MsgErro := IfThen( MsgErro <> '', MsgErro + sLineBreak ) +
                         'Código   : ' + NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Items[I].Codigo + sLineBreak +
                         'Mensagem : ' + NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Items[I].Mensagem + sLineBreak +
                         'Correção : ' + NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Items[I].Correcao + sLineBreak;

              if( ( NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Items[I].Codigo <> 'E92' ) and
                  ( ( qryNFSePROTOCOLO.AsString <> '' ) or ( qryNFSeLOTE_RPS.AsString <> '' ) ) )then
              begin
                qryNFSe.Edit;
                qryNFSePROTOCOLO.AsString := '';
                qryNFSeLOTE_RPS.AsString  := '';
                qryNFSe.Post;
                fin.conexao.Commit;
              end;
            end;

            ShowMessage( IfThen( MsgErro <> '', MsgErro, e.Message ) );
            Exit;
          end;
        end;

        NFSe.NotasFiscais.LoadFromFile( PATH +
                                        qryNFSeID.AsString +
                                        qryNFSeSERIE.AsString +
                                        '-Rps.xml' );

        try
          NFSe.ConsultarNFSeporRps( NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero,
                                    NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie,
                                    TipoRPSToStr(NFSe.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo ) );

          if StrToIntDef( GetNroNFSePorProvedor, 0 ) = 0 then
            raise Exception.Create( 'NFS-e não foi Autorizada, por favor, tente fazer a transmissão novamente.' );
        except
          on e: Exception do
          begin
            fin.conexao.Rollback;

            for I := 0 to NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Count -1 do
            begin
              MsgErro := IfThen( MsgErro <> '', MsgErro + sLineBreak ) +
                         'Código   : ' + NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Items[I].Codigo +
                         'Mensagem : ' + NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Items[I].Mensagem +
                         'Correção : ' + NFSe.WebServices.ConsSitLoteRPS.RetSitLote.InfSit.MsgRetorno.Items[I].Correcao;
            end;

            ShowMessage( 'Erro na consulta da NFS-e.' + sLineBreak + IfThen( MsgErro <> '', MsgErro, e.Message ) );
            Exit;
          end;
        end;
      end;

 

3 minutos atrás, -=Ma®©oS=- disse:

Somente a consulta do lote, não retorna o XML da NFS-e.

Não existe XML da NFS-e o único que o provedor retorna é:

<?xml version="1.0" encoding="UTF-8"?><retorno><mensagem><codigo>00001 - Sucesso</codigo></mensagem><numero_nfse>1227</numero_nfse><serie_nfse>1</serie_nfse><situacao_codigo_nfse>1</situacao_codigo_nfse><situacao_descricao_nfse>Emitida</situacao_descricao_nfse><data_nfse>05/08/2020</data_nfse><hora_nfse>09:13:19</hora_nfse><arquivo_gerador_nfse>4988-ger-nfse.xml_186_20_13_09_0000000000.xml</arquivo_gerador_nfse><nome_arquivo_gerado_eletron></nome_arquivo_gerado_eletron><link_nfse>http://sync.nfs-e.net/datacenter/include/nfw/nfw_imp_notas.php?codauten=0180450009868880</link_nfse><cod_verificador_autenticidade>0180450009868880</cod_verificador_autenticidade><codigo_html>HTML de impressão, removi pq é muito grande.</codigo_html></retorno>

 

Editado por Filipe Natividade
  • Este tópico foi criado há 744 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.