Ir para conteúdo
  • Cadastre-se

dev botao

Adequação das Exception da função GerarXML


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

Recommended Posts

Boa tarde galera..

Observei aqui que os eventos 2200 e 2206 na função GerarXML estão retornando uma exception diferente dos demais eventos..

Queria ver também com os colegas, se alguém tem alguma sugestão de como deixar a leitura dessas exception mais claras ao usuário..

Por exemplo, hoje ele retorna o seguinte..

1871 - Element '{http://www.esocial.gov.br/schema/evt/evtAdmissao/v02_04_01}dtBase': This element is not expected. Expected is ( {http://www.esocial.gov.br/schema/evt/evtAdmissao/v02_04_01}natAtividade ).

Hoje eu faço uma validação no meu sistema limpando essa string e deixando apenas os campos que eu preciso.. mas se um dia mudar uma vírgula, essa minha função deixará de funcionar corretamente..

Editado por Joceandro Perin
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

14 horas atrás, Joceandro Perin disse:

Boa tarde galera..

Observei aqui que os eventos 2200 e 2206 na função GerarXML estão retornando uma exception diferente dos demais eventos..

Queria ver também com os colegas, se alguém tem alguma sugestão de como deixar a leitura dessas exception mais claras ao usuário..

Por exemplo, hoje ele retorna o seguinte..

1871 - Element '{http://www.esocial.gov.br/schema/evt/evtAdmissao/v02_04_01}dtBase': This element is not expected. Expected is ( {http://www.esocial.gov.br/schema/evt/evtAdmissao/v02_04_01}natAtividade ).

Hoje eu faço uma validação no meu sistema limpando essa string e deixando apenas os campos que eu preciso.. mas se um dia mudar uma vírgula, essa minha função deixará de funcionar corretamente..

@Joceandro Perin

posta o exemplo para ver o que você fez

Link para o comentário
Compartilhar em outros sites

@EdmarFrazao na exception está concatenando o Self.ID, ou seja, quando dá erro, vc sabe o motivo e o evento que deu erro. 
Eu adicionei isso como sugestão no S-2206, no meu caso trabalho com lotes de 50 eventos e consigo identificar o erro sem problemas. 

Se encontrarem uma forma melhor esta valendo também. 

Link para o comentário
Compartilhar em outros sites

19 minutos atrás, Alisson Souza Pereira disse:

@EdmarFrazao na exception está concatenando o Self.ID, ou seja, quando dá erro, vc sabe o motivo e o evento que deu erro. 
Eu adicionei isso como sugestão no S-2206, no meu caso trabalho com lotes de 50 eventos e consigo identificar o erro sem problemas. 

Se encontrarem uma forma melhor esta valendo também. 

Bom dia Alisson, eu vi que ele retorna o ID no 2200 e 2206, mas no meu caso não resolve porque o problema é identificar qual campo está com inconsistência nessa exception que ele manda, pra nós desenvolvedores é fácil, mas na visão do usuário fica difícil para interpretar..

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, EdmarFrazao disse:

para este caso, Msg para o usuário, temos que validar todos os campos obrigatórios antes de gerar o xml

Seria o correto, mas como os clientes não preencheram corretamente os cadastros que já tem no sistema e com a correria pra implementar o esocial pra atender os prazos, essa validação vai ter que ficar pra um segundo momento, kkkk..

Editado por Joceandro Perin
Link para o comentário
Compartilhar em outros sites

2 horas atrás, EdmarFrazao disse:

@Joceandro Perin

posta o exemplo para ver o que você fez

Segue um exemplo do que eu fiz.. Tem servido como um "quebra galho" por enquanto..

function TrataErro(Msg: string): string;
var
  Tamanho, PosFin, PosIni: Integer;
begin
  try
    Result := Msg;
    Result := StringReplace(Result, Chr(09), '', [rfReplaceAll]); // Tab
    Result := StringReplace(Result, Chr(10), '', [rfReplaceAll]); // Line feed
    Result := StringReplace(Result, Chr(13), '', [rfReplaceAll]); // Carriage return
    Result := StringReplace(Result, Chr(39), '', [rfReplaceAll]); // Apostrophe
    Result := StringReplace(Result, '1824 - Element ', '', [rfReplaceAll]);
    Result := StringReplace(Result, ':  is not a valid value of the local atomic type.', '', [rfReplaceAll]);

    PosIni := Pos('{', Result);
    PosFin := Pos('}', Result);

    if (PosIni > 0) and (PosFin > 0) then
    begin
      Tamanho := PosFin - PosIni;
      System.Delete(Result, PosIni, Tamanho);
      Result := StringReplace(Result, '}', ' > ', [rfReplaceAll]);
    end;
  except
    Result := Msg;
  end;
end;

 

Link para o comentário
Compartilhar em outros sites

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