Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

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


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

Edited by Joceandro Perin
  • Thanks 1
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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..

Edited by Joceandro Perin
Link to comment
Share on other 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.