Ir para conteúdo
  • Cadastre-se

dev botao

NFSe São José dos Campos


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

Recommended Posts

  • Consultores
Postado

Boa noite,

Cola o print do programa de exemplo com o retorno do envio.

Aparentemente este provedor devolve as mensagens na lista de erros, no campo descrição.

procedure TACBrNFSeProviderABRASFv1.ProcessarMensagemErros(RootNode: TACBrXmlNode;
  Response: TNFSeWebserviceResponse; const AListTag, AMessageTag: string);
 .
 .
 .
  for I := Low(ANodeArray) to High(ANodeArray) do
  begin
    Mensagem := ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Mensagem'), tcStr);

    if Mensagem <> '' then
    begin
      AErro := Response.Erros.New;
      AErro.Codigo := ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Codigo'), tcStr);
      AErro.Descricao := ACBrStr(Mensagem);
      AErro.Correcao := ACBrStr(ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Correcao'), tcStr));
    end;
  end;

 

  • Curtir 1
Postado
12 horas atrás, Renato Rubinho disse:

Boa noite,

Cola o print do programa de exemplo com o retorno do envio.

Aparentemente este provedor devolve as mensagens na lista de erros, no campo descrição.

procedure TACBrNFSeProviderABRASFv1.ProcessarMensagemErros(RootNode: TACBrXmlNode;
  Response: TNFSeWebserviceResponse; const AListTag, AMessageTag: string);
 .
 .
 .
  for I := Low(ANodeArray) to High(ANodeArray) do
  begin
    Mensagem := ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Mensagem'), tcStr);

    if Mensagem <> '' then
    begin
      AErro := Response.Erros.New;
      AErro.Codigo := ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Codigo'), tcStr);
      AErro.Descricao := ACBrStr(Mensagem);
      AErro.Correcao := ACBrStr(ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Correcao'), tcStr));
    end;
  end;

 

Rubinho, obrigado, consegui pelo exemplo a pegar o retornos de erro, eu queria apenas mostrar o ultimo retorno de erro, mais acho que não tem jeito né

Diz uma coisa esse provedor ele é bem lento e assim entra em idle e assim a tela de processamento some, não teria como manter ela, enquanto o provedor não retorna nenhum mensagem, o windows acha que não esta processando nada e fica com não respondendo

E uma outra coisa como que você trata retorno de lote em processamento, hoje fazendo testes as notas retornam tudo como lote em processamento

  • Consultores
Postado
2 horas atrás, Adhelmar Rondon disse:

queria apenas mostrar o ultimo retorno de erro, mais acho que não tem jeito né

Na minha opinião é melhor sempre mostrar todos os erros para o usuário corrigir de uma vez, claro que neste caso a descrição é a mesma, mas veja que o código veio diferente, deve ser uma falha do provedor.

2 horas atrás, Adhelmar Rondon disse:

enquanto o provedor não retorna nenhum mensagem, o windows acha que não esta processando nada e fica com não respondendo

É um comportamento do Windows, não teria muito o que fazer no componente, mas você pode ver de talvez enviar e consultar utilizando threads do seu lado se for tão demorado assim.

2 horas atrás, Adhelmar Rondon disse:

uma outra coisa como que você trata retorno de lote em processamento, hoje fazendo testes as notas retornam tudo como lote em processamento

Se for assíncrono, não tem jeito, tem que consultar o lote após o envio.

Postado
20 minutos atrás, Renato Rubinho disse:

Na minha opinião é melhor sempre mostrar todos os erros para o usuário corrigir de uma vez, claro que neste caso a descrição é a mesma, mas veja que o código veio diferente, deve ser uma falha do provedor.

É um comportamento do Windows, não teria muito o que fazer no componente, mas você pode ver de talvez enviar e consultar utilizando threads do seu lado se for tão demorado assim.

Se for assíncrono, não tem jeito, tem que consultar o lote após o envio.

Consulta o lote após o envio, mais percebi que servidor de homologação deles as vezes da problema

  • Curtir 2
  • 2 semanas depois ...
  • Solution
Postado
Em 21/03/2023 at 22:00, Renato Rubinho disse:

Boa noite,

Cola o print do programa de exemplo com o retorno do envio.

Aparentemente este provedor devolve as mensagens na lista de erros, no campo descrição.

procedure TACBrNFSeProviderABRASFv1.ProcessarMensagemErros(RootNode: TACBrXmlNode;
  Response: TNFSeWebserviceResponse; const AListTag, AMessageTag: string);
 .
 .
 .
  for I := Low(ANodeArray) to High(ANodeArray) do
  begin
    Mensagem := ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Mensagem'), tcStr);

    if Mensagem <> '' then
    begin
      AErro := Response.Erros.New;
      AErro.Codigo := ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Codigo'), tcStr);
      AErro.Descricao := ACBrStr(Mensagem);
      AErro.Correcao := ACBrStr(ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Correcao'), tcStr));
    end;
  end;

 

Bom dia, Rubinho

Então deve ser algum problema com homologação, apesar do suporte falar que não tem problema algum, fim de semana em homologação não da pra emitir, em produção o cliente esta usando normal

 

grato pela sua ajuda

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

The popup will be closed in 10 segundos...