Ir para conteúdo
  • Cadastre-se

dev botao

Retorno da nota de Itupeva


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

Recommended Posts

Olá

fazendo testes com a nota de Itupeva, a nota esta sendo gerada e esta retornando os dados certinho, mais o tratamento de retorno esta trazendo os dados errado, no lugar do numero da nota esta colocando numero do rps, mais olhando o xml de retorno esta correto

em anexo estou enviando xml de retorno e o xml do rps

700027-lista-nfse-sinc.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Adhelmar,

Não compreendi muito bem, onde exatamente consta o numero do Rps em vez do numero da nota ao tratar o retorno?

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

Envio o RPS para o servidor, o servidor retorna nota fiscal, então eu até depurei, pega no retorno correto numero da nota, utilizo do mesmo jeito que no exemplo

 

ChecarResposta(tmRecepcionar)

ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Numero; retorna numero do rps

ACBrNFSeX1.NotasFiscais.Items[i].NFSe.CodigoVerificacao; não vem nada

e a nota também não é gerada na pasta

  for i := 0 to ACBrNFSeX1.NotasFiscais.Count -1 do
  begin
    Frm_Principal.CodigoVerificacao := ACBrNFSeX1.NotasFiscais.Items[i].NFSe.CodigoVerificacao;
    Frm_Principal.NumeroNFSE := ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Numero;

    Frm_Principal.memoLog.Add(' ');
    Frm_Principal.memoLog.Add('NFS-e Numero..: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Numero);
    Frm_Principal.memoLog.Add('Cod. Verificacao: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.CodigoVerificacao);
    Frm_Principal.memoLog.Add('Prestador....: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Prestador.RazaoSocial);
    Frm_Principal.memoLog.Add('Tomador.....: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Tomador.RazaoSocial);

    if ACBrNFSeX1.NotasFiscais.Items[i].NomeArq <> '' then
    begin
      Frm_Principal.XMLNFSE := ACBrNFSeX1.NotasFiscais.Items[i].NomeArq;
    end
    else
    begin
      Frm_Principal.XMLNFSE := '';
    end;

  end;

 

nessa rotina Sucesso fica como True, mais numero da nota fica o numero do RPS

Link para o comentário
Compartilhar em outros sites

  • Consultores
4 horas atrás, Adhelmar Rondon disse:

nota também não é gerada na pasta

Boa tarde,

Veja no XML de retorno, este provedor não devolve o XML da NFSe, com isso não será salvo na pasta.

4 horas atrás, Adhelmar Rondon disse:

nessa rotina Sucesso fica como True, mais numero da nota fica o numero do RPS

Segue o tratamento do retorno deste provedor para a emissão, coloque um ponto de parada nele para análise.

Entre outras coisas, preenche o número da nota recebido na propriedade NumeroNota do Response.

../trunk2/Fontes/ACBrDFe/ACBrNFSeX/Provedores/Siappa.Provider.pas

procedure TACBrNFSeProviderSiappa.TratarRetornoEmitir(Response: TNFSeEmiteResponse);
.
.
.
      if AuxNode <> nil then
      begin
        with Response do
        begin
          xSucesso := ObterConteudoTag(AuxNode.Childrens.FindAnyNs('ws_001_out_status_retorno'), tcStr);
          Sucesso := (xSucesso = 'S');
          NumeroNota := ObterConteudoTag(AuxNode.Childrens.FindAnyNs('ws_001_out_nfse_numero'), tcStr);
          Data := EncodeDataHora( ObterConteudoTag(AuxNode.Childrens.FindAnyNs('ws_001_out_nfse_data_hora'), tcStr),
                                  'DD/MM/YYYY HH:NN:SS' );
          CodigoVerificacao := ObterConteudoTag(AuxNode.Childrens.FindAnyNs('ws_001_out_nfse_cod_validacao'), tcStr);
          Link := ObterConteudoTag(AuxNode.Childrens.FindAnyNs('ws_001_out_nfse_url_emissao'), tcStr);
        end;
      end;

Veja no programa de exemplo como pegar essas informações.

procedure TfrmACBrNFSe.ChecarResposta(aMetodo: TMetodo);
.
.
.
  with ACBrNFSeX1.WebService do
  begin
    case aMetodo of
      tmRecepcionar,
      tmTeste:
        begin
          with Emite do
          begin
            memoLog.Lines.Add('M�todo Executado: ' + ModoEnvioToStr(ModoEnvio));
            memoLog.Lines.Add(' ');
            memoLog.Lines.Add('Par�metros de Envio');
            memoLog.Lines.Add('Numero do Lote: ' + NumeroLote);
            memoLog.Lines.Add(' ');
            memoLog.Lines.Add('Par�metros de Retorno');
            memoLog.Lines.Add('Data de Envio : ' + DateToStr(Data));
            memoLog.Lines.Add('Numero do Prot: ' + Protocolo);
            memoLog.Lines.Add('Numero da Nota: ' + NumeroNota);
            memoLog.Lines.Add('Link          : ' + Link);
            memoLog.Lines.Add('C�digo Verif. : ' + CodigoVerificacao);
            memoLog.Lines.Add('Sucesso       : ' + BoolToStr(Sucesso, True));
            LoadXML(XmlEnvio, WBXmlEnvio, 'temp1.xml');

 

Link para o comentário
Compartilhar em outros sites

Eu fiz debug nessa procedure e esta retornando numero da nota, mais na procedure checarresposta, tem essa rotina abaixo, mais esta retornando errado, esta vindo

ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Numero numero do rps

 

ACBrNFSeX1.NotasFiscais.Items[i].NomeArq esta vindo vazio

 

ACBrNFSeX1.NotasFiscais.Items[i].NFSe.CodigoVerificacao esta vindo vazio

 

mais a nota foi gerada

 

  for i := 0 to ACBrNFSeX1.NotasFiscais.Count -1 do
  begin
    memoLog.Lines.Add(' ');
    memoLog.Lines.Add('NFS-e Numero....: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Numero);
    memoLog.Lines.Add('Cod. Verificacao: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.CodigoVerificacao);
    memoLog.Lines.Add('Prestador.......: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Prestador.RazaoSocial);
    memoLog.Lines.Add('Tomador.........: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Tomador.RazaoSocial);

    if ACBrNFSeX1.NotasFiscais.Items[i].NFSe.SituacaoNfse = ACBrNFSeXConversao.snCancelado then
      memoLog.Lines.Add('A Nota encontra-se Cancelada.');

    if ACBrNFSeX1.NotasFiscais.Items[i].NomeArq <> '' then
    begin
      memoLog.Lines.Add('Nome do arquivo.: ' + ACBrNFSeX1.Configuracoes.Arquivos.GetPathNFSe() + '\' +
                                               ACBrNFSeX1.NotasFiscais.Items[i].NomeArq);
      if ACBrNFSeX1.Configuracoes.Arquivos.Salvar then
        memoLog.Lines.Add('==> Xml da nota salvo na pasta e com o nome informado acima.')
      else
        memoLog.Lines.Add('==> Xml da nota não salvo em disco.');

      // Na propriedade XmlNfse temos o XML da NFS-e
      LoadXML(ACBrNFSeX1.NotasFiscais.Items[i].XmlNfse, WBXmlNotas);
    end;
  end;

 

 

procedure TACBrNFSeProviderSiappa.TratarRetornoEmitir(Response: TNFSeEmiteResponse);
Link para o comentário
Compartilhar em outros sites

  • Consultores
13 horas atrás, Adhelmar Rondon disse:

for i := 0 to ACBrNFSeX1.NotasFiscais.Count -1 do
  begin
  

Não existe XML da NFSe neste provedor.

14 horas atrás, Renato Rubinho disse:

Veja no XML de retorno, este provedor não devolve o XML da NFSe, com isso não será salvo na pasta.

Como não tem XML de NFSe, os dados da NFSe não serão preenchidos.

Como você viu na procedure TratarRetornoEmitir, as propriedades preenchidas são outras, conforme o trecho que destaquei no post anterior.

O programa de exemplo serve para demonstrar um cenário geral de todos os provedores.

Alguns provedores devolvem os dados da NFSe, outros não, por isso esses dados estão em branco neste provedor.

Debugue novamente o programa de exemplo e veja o trecho que destaquei na ChecarResposta para entender os campos alimentados.

Link para o comentário
Compartilhar em outros sites

9 horas atrás, Renato Rubinho disse:

Não existe XML da NFSe neste provedor.

Como não tem XML de NFSe, os dados da NFSe não serão preenchidos.

Como você viu na procedure TratarRetornoEmitir, as propriedades preenchidas são outras, conforme o trecho que destaquei no post anterior.

O programa de exemplo serve para demonstrar um cenário geral de todos os provedores.

Alguns provedores devolvem os dados da NFSe, outros não, por isso esses dados estão em branco neste provedor.

Debugue novamente o programa de exemplo e veja o trecho que destaquei na ChecarResposta para entender os campos alimentados.

Bom dia, Rubinho

testei pelo exemplo e o que acontece gera a nota e retorna true, só que ao fazer o método consultar o lote, não retorna e assim fica como false e com isso coloca numero do rps na nota, estou enviando um print da tela, com o componente não gera a nota, o que pode ser?

tela.thumb.png.dc5d1b10d8097f0bb7f45528466d35b5.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Adhelmar,

Vamos lá, não sei se eu não estou entendendo sua dúvida ou você não está entendendo minha explicação.

Mais uma coisa, este provedor não possui o método para consultar o lote.

Veja os métodos existentes.

TACBrNFSeXWebserviceSiappa = class(TACBrNFSeXWebserviceSoap11)
  public
    function RecepcionarSincrono(ACabecalho, AMSG: String): string; override;
    function ConsultarNFSe(ACabecalho, AMSG: String): string; override;
    function Cancelar(ACabecalho, AMSG: String): string; override;
    function GerarToken(ACabecalho, AMSG: String): string; override;
    function TratarXmlRetornado(const aXML: string): string; override;
  end;

1. Caso necessário, tente usar o método ConsultarNFSe para buscar os dados que não armazenou no envio.

* Em tese isso não é necessário, pois o retorno da emissão já possui as mesmas informações.

2. No retorno do seu envio está trazendo os dados que este provedor retorna: número da nota, data, link e código de verificação.

* O provedor não devolve mais nenhuma informação, nem XML da NFSe.

Screenshot_20230319-082451_Chrome.jpg

 

3. Não pegue os dados das propriedades a seguir no retorno da emissão para este provedor:

ACBrNFSeX1.NotasFiscais.Items[i].NFSe

e

for i := 0 to ACBrNFSeX1.NotasFiscais.Count -1 do

3.1. Debugue o ChecarResposta no trecho a seguir para entender como pegar as informações possíveis deste provedor, que destaquei no print do item 2 deste post e a seguir no fonte que alimenta as propriedades.

16 horas atrás, Renato Rubinho disse:

Veja no programa de exemplo como pegar essas informações.

procedure TfrmACBrNFSe.ChecarResposta(aMetodo: TMetodo);
.
.
.
  with ACBrNFSeX1.WebService do
  begin
    case aMetodo of
      tmRecepcionar,
      tmTeste:
        begin
          with Emite do
          begin
            memoLog.Lines.Add('M�todo Executado: ' + ModoEnvioToStr(ModoEnvio));
            memoLog.Lines.Add(' ');
            memoLog.Lines.Add('Par�metros de Envio');
            memoLog.Lines.Add('Numero do Lote: ' + NumeroLote);
            memoLog.Lines.Add(' ');
            memoLog.Lines.Add('Par�metros de Retorno');
            memoLog.Lines.Add('Data de Envio : ' + DateToStr(Data));
            memoLog.Lines.Add('Numero do Prot: ' + Protocolo);
            memoLog.Lines.Add('Numero da Nota: ' + NumeroNota);
            memoLog.Lines.Add('Link          : ' + Link);
            memoLog.Lines.Add('C�digo Verif. : ' + CodigoVerificacao);
            memoLog.Lines.Add('Sucesso       : ' + BoolToStr(Sucesso, True));
            LoadXML(XmlEnvio, WBXmlEnvio, 'temp1.xml');

 

Obs: apaguei o XML de envio, do seu primeiro post, pois continha dados sensíveis de autenticação no provedor.

Link para o comentário
Compartilhar em outros sites

Bom dia, Rubinho

Então por ele não ter consultar o lote, então acho que não é depois que a nota é retornada, ela é lida e gravada na pasta, então por isso não consegui entender como o componente pega a nota, como faz com os outros provedores, tentei diversas consulta mais não sei porque não retorna nada, ele deve ser bem fora do padrão esse provedor né.

vou tentar mais uma vez, se não der certo vou dizer para o meu cliente que não estou conseguindo gerar nota para Itupeva, quer dizer a nota é gerada, só não consigo pegar o retorno

 

grato

Link para o comentário
Compartilhar em outros sites

Sei que estou te alugando muito, desculpe, eu fiz isso, o que eu percebi que a nota fiscal não é carregada com os dados depois do retorno, assim eu olhando provedor geisweb, na rotina que trata o retorno, carrega os dados retornados no xml da nota e salva esse provedor não tem isso, então isso que não entendi, eu analisando, sei que vocês entende 100.000 vezes melhor que eu

Link para o comentário
Compartilhar em outros sites

  • Consultores

Abra o XML que você anexou no primeiro post que vai ficar mais claro.

Este provedor não devolve o XML da NFSe, somente essas poucas informações que constam no XML.

O componente não gera XML da NFSe, o provedor que tem que devolver.

Alguns provedores não devolvem o XML, como é o caso deste, com isso, não tem XML para o componente.

Veja que ele disponibiliza o link para o PDF do DANFSe, você pega esse link e abre ou armazena para seu cliente emitir quando quiser.

Link para o comentário
Compartilhar em outros sites

17 minutos atrás, Renato Rubinho disse:

Abra o XML que você anexou no primeiro post que vai ficar mais claro.

Este provedor não devolve o XML da NFSe, somente essas poucas informações que constam no XML.

O componente não gera XML da NFSe, o provedor que tem que devolver.

Alguns provedores não devolvem o XML, como é o caso deste, com isso, não tem XML para o componente.

Veja que ele disponibiliza o link para o PDF do DANFSe, você pega esse link e abre ou armazena para seu cliente emitir quando quiser.

Desculpe pela minha burrice rsrs

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Renato Rubinho disse:

Não tem como.

O link é um acesso ao documento emitido pelo provedor.

Acesse o link recebido para ver como ele é disponibilizado.

Screenshot_20230320-181559_Chrome.jpg

Mais uma vez grato Rubinho, me ajudou muito

Fiz rotina para fazer download, assim facilita para o usuário

 

 

Gratidão!

Deus abençoe, essa grande equipe ACBr

 

 

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

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