A identificação do tipo de evento errado nos eventos S-2400 e S-2410 causam problemas na geração/carga/assinatura/validação dos XMLs.
Explicação:
- Ao executar a função ACBreSocialEventos -> TEventos.LoadFromString é disparada a execução da função LoadFromString especifica referente ao grupo do evento do XML (pcesPeriodicos -> TPeriodicos.LoadFromString, pcesNaoPeriodicos -> TNaoPeriodicos.LoadFromString, pcesTabelas -> TTabelas.LoadFromString, pcesIniciais -> TIniciais.LoadFromString).
- As funções LoadFromString de cada grupo de eventos utilizam-se da função pcesConversaoeSocial -> StringXMLToTipoEvento para identificar o tipo do evento a partir da identificação contida dentro do XML.
- A função pcesConversaoeSocial -> StringXMLToTipoEvento utiliza um laço no array pcesConversaoeSocial -> TEventoString para localizar o enumerador pcesConversaoeSocial -> TTipoEvento.
Problema:
- O array pcesConversaoeSocial -> TEventoString e o enumerador pcesConversaoeSocial -> TTipoEvento não são equivalentes na quantidade e nem na ordem de ambos; causando assim retorno incorreto pela função pcesConversaoeSocial -> StringXMLToTipoEvento.
Solução:
- Buscando solucionar o problema acima mencionado, evitar maiores impactos em códigos legados e preparar um padrão que atenda aos antigos e novos eventos que estão por vir (S2500, S2501 e S5501 - v. S-1.0 - NDE 02/2021 - Processo Trabalhista) foram realizadas as seguintes alterações:
- a) Adição de item no enumerador pcesConversaoeSocial -> TeSocialSchema;
- b) Adição de itens no enumerador pcesConversaoeSocial -> TTipoEvento;
- c) Criação do enumerador pcesConversaoeSocial -> TMatrixEventoInfo;
- d) Criação do record pcesConversaoeSocial -> TRecMatrixEventoInfo;
- e) Criação da constante pcesConversaoeSocial -> __ARRAY_MATRIX_EVENTO_INFO;
- f) Criação da função pcesConversaoeSocial -> GetMatrixEventoInfo;
- g) Refatoração da função pcesConversaoeSocial -> StringINIToTipoEvento;
- h) Refatoração da função pcesConversaoeSocial -> StringXMLToTipoEvento;
- i) Refatoração da função pcesConversaoeSocial -> TipoEventoToStrEvento;
Observações:
- Todas as alterações foram realizadas na unit pcesConversaoeSocial;
- Todas as alterações estão identificadas e são facilmente localizadas através da palavra "[MSS", contida em comentário, que pode estar em apenas uma linha ou abrindo e fechando um bloco de alterações.
Estou disponibilizando o código para estudos, testes, uso e/ou eventual update no repositório do Projeto ACBr.
[]s,
Mário Soares Santos
pcesConversaoeSocial.pas