Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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

  • Consultores
Postado
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');

 

Postado

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);
  • Consultores
Postado
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.

Postado
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

  • Consultores
Postado

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.

Postado

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

  • Consultores
Postado

Boa tarde Adhelmar,

Desmarque o checkbox "Consultar lote após o envio", no programa de exemplo.

Envie uma nova NFSe e veja o retorno apenas com dados da emissão.

Debugue o ChecarResposta para entender os campos alimentados no trecho que comentei.

 

Postado

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

  • Consultores
Postado

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.

Postado
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

  • Consultores
Postado
1 hora atrás, Adhelmar Rondon disse:

Diz uma coisa o ACBrNFSeX, tem opção pegar esse PDF e salvar?

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

  • Curtir 1
Postado
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
  • Este tópico foi criado há 616 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.