====== Validação final e ocorrências ====== ===== 1. Objetivo ===== O objetivo da tarefa é consolidar, validar e apresentar as informações produzidas pelas etapas anteriores do processo de Aposentadoria Civil, tratar eventuais ocorrências e permitir ao usuário decidir se o preenchimento deve ser concluído ou retornar para correção. A tarefa divide essa responsabilidade em duas partes: ==== Etapa 1 ==== Apresentar uma visão consolidada das informações relevantes do processo para conferência. ==== Etapa 2 ==== Apresentar as ocorrências, permitir o preenchimento das respectivas justificativas e definir o encaminhamento: **Concluir preenchimento e enviar ao TCE** ou **Retornar nos formulários para alteração** Além disso, a tarefa utiliza uma integração de consulta das variáveis do vínculo BPM. Essa integração recupera as variáveis do fluxo e armazena a coleção na variável **todasVariaveis.** Na segunda etapa, a função: buscaVariaveisFluxo_e_enviarDados() percorre: model.todasVariaveis ===== 2. Regras de Negócio ===== **RN01 - A tarefa possui duas etapas** O JSON estabelece: steps = 2 A primeira etapa corresponde ao resumo/conferência e a segunda às ocorrências e decisão de encaminhamento. **RN02 - Etapa 1 é somente leitura** Todos os campos de negócio da primeira etapa estão com: readonly = true Assim, essa etapa é utilizada para visualização/conferência, não para alteração direta dos dados. **RN03 - Ocorrências são apresentadas em tabela** Na segunda etapa existe: **Variável da tabela**: tab_criticas5A2 **Título**: Ocorrências. Seus campos são: * Código; * Descrição; * Justificativa **RN04 - Código e descrição da ocorrência não são editáveis** **Os campos:** col_codigoCritica col_descCritica possuem readonly=true. **Já:** col_justificativa é editável. **RN05 - Encaminhamento é obrigatório** Na segunda etapa, o campo: bt_comoDesejaProsseguir é definido como: required = true (Terefa aberta) Portanto, o usuário deve indicar como deseja prosseguir. **RN06 - Existem dois possíveis encaminhamentos** ^Valor^Opção| |1|Concluir preenchimento e enviar ao TCE| |2|Retornar nos formulários para alteração| **RN07 - Retorno direcionado** O campo sel_etapaRetorno disponibiliza quatro destinos: ^Valor^Etapa| |1|Dados básicos| |2|Dados do fundamento jurídico| |3|Dados do histórico funcional| |4|Documentos de formalização| **RN08 - Ocorrências não podem ser adicionadas/removidas manualmente** A função: ocultaBotao_excluir_e_add_tab_criticas5A2() oculta os botões de remoção das linhas e também: add_tab_criticas5A2 Logo, a interface não permite ao usuário adicionar ou remover ocorrências manualmente por esses controles. ===== 3. Todas as variáveis ===== ==== 3.1 Etapa 1 - Identificação ==== ^Key^Campo/Título^Tipo^Cols^Obrig.^Readonly| |''nomeOrgao'' |Órgão/Entidade|input|12|Não|Sim| |''cpfServidor'' |CPF do servidor|input-cpf|4|Não|Sim| |''nomeServidor'' |Nome do servidor|input|8|Não|Sim| |''desc_motivoAposentadoria'' |Motivo da aposentadoria|input|6|Não|Sim| |''nomeCargoAposentadoria'' |Descrição completa do cargo da aposentadoria|input|6|Não|Sim| ==== 3.2 Etapa 1 - Fundamento jurídico ==== ^Key^Campo/Título^Tipo^Cols^Obrig.^Readonly^Rows| |''dispLegalSimplif'' |Regra aplicada|textarea|12|Não|Sim|4| |''descFundamLegalSimplif'' |Descrição resumida|textarea|12|Não|Sim|4| |''descFundamLegalCompleto'' |Detalhamento dos requisitos|textarea|12|Não|Sim|4| |''dispLegalCompletoAposent_op'' |Fundamentação legal consolidada|textarea|12|Não|Sim|4| ==== 3.3 Etapa 1 - Datas e tempos ==== ^Key^Título^Tipo^Cols^Readonly| |''dataEfetExercCargoInicial'' |Data do efetivo exercício no cargo de ingresso|input|6|Sim| |''dataFimTempoContribServico'' |Data do fim da apuração do tempo de contribuição/serviço|input|6|Sim| |''tempoCargoAposen'' |Tempo no cargo da aposentadoria|input|6|Sim| |''tempoCondicaoSegDeficienciaConversao'' |Tempo na condição de pessoa com deficiência após conversão|input|6|Sim| |''tempoCondicoesEspeciasConversao1'' |Tempo em atividades sob condições especiais após conversão|input|6|Sim| |''totalTempoServPublico'' |Total de tempo de serviço público|input|6|Sim| |''totalTempoContrbServ'' |Total de tempo de contribuição/serviço|input|6|Sim| Nenhum desses campos é obrigatório na configuração da etapa. **Regra condicional** Os campos: tempoCondicaoSegDeficienciaConversao tempoCondicoesEspeciasConversao1 são exibidos quando: model.cod_motivoAposentadoria == '5' ==== 3.4 Etapa 1 - Tabela de atos de concessão ==== ^Key^Título^Tipo^Cols^Obrig.^Readonly| |''tab_atoAposentadoria'' |Ato(s) de concessão da aposentadoria|table-editable|12|Não|Sim| |''col_numAto'' |Número/ano do ato|input|3|Não|Sim| |''col_dataAto'' |Data do ato|input-date|3|Não|Sim| |''col_dataPublicacao'' |Data da publicação|input-date|3|Não|Sim| ==== 3.5 Etapa 1 - Ato de fixação de proventos ==== ^Key^Título^Tipo^Cols^Obrig.^Readonly| |''tab_atoFixProventos'' |Ato de fixação de proventos|table-editable|12|Não|Sim| |''col_numAnoAto'' |Número/ano do ato|input|6|Não|Sim| ==== 3.6 Etapa 1 - Variáveis ocultas ==== ^Key^Utilização| |''proporcaoProventos'' |Proporção dos proventos| |''baseCalcProventos'' |Base de cálculo| |''padraoRemuneratorio'' |Padrão remuneratório| |''retornoServCriticas'' |Retorno relacionado às críticas| |''numMatricula'' |Matrícula| |''cod_motivoAposentadoria'' |Código do motivo| |''processo_cdVinculo'' |Vínculo BPM| |''todasVariaveis'' |Coleção das variáveis recuperadas do fluxo| Destaque: todasVariaveis Esta variável merece tratamento especial na documentação. A integração Busca todas variáveis do fluxo possui retorno:​‌ value = array name = todasVariaveis Na etapa 2, buscaVariaveisFluxo_e_enviarDados() percorre a coleção utilizando: model.todasVariaveis[r].name model.todasVariaveis[r].value para tratar as variáveis recuperadas durante a conclusão. ==== 3.7 Etapa 2 - Ocorrências ==== ^Key^Título^Tipo^Cols^Obrig.^Readonly^Observação| |''tab_criticas5A2'' |Ocorrências|table-editable|12|Não|Não|Tabela principal de ocorrências| |''col_codigoCritica'' |Código|input|2|Não|Sim|Código da ocorrência| |''col_descCritica'' |Descrição|textarea|6|Não|Sim|Descrição da ocorrência| |''col_justificativa'' |Justificativa|textarea|3|Não|**Não** |Campo editável pelo usuário| Mensagem quando não há ocorrência A etapa possui msg_ocorrecias, um componente paragraph, cuja mensagem informa explicitamente que nenhuma ocorrência foi identificada até o momento e que outras verificações ocorrerão posteriormente na fiscalização do TCE-GO. ==== 3.8 Etapa 2 - Decisão/encaminhamento ==== ^Key^Título^Tipo^Cols^Obrigatório^Readonly| |''bt_comoDesejaProsseguir'' |Como deseja prosseguir?|radios|4|**Sim** |Não| |''sel_etapaRetorno'' |Selecione a etapa para retorno|select|4|Não|Não| bt_comoDesejaProsseguir 1 = Concluir preenchimento e enviar ao TCE 2 = Retornar nos formulários para alteração sel_etapaRetorno 1 = Dados básico 2 = Dados do fundamento jurídico 3 = Dados do histórico funcional 4 = Documentos de formalização ==== 3.9 Etapa 2 - Variáveis auxiliares/PDF ==== ^Key^Tipo^Readonly^Observação| |''sel_etapaRetorno_pdf'' |input|Sim|Auxiliar de geração/exibição em PDF| |''tab_criticas5A2_pdf'' |input|Sim|Auxiliar de exibição das ocorrências no PDF| |''msg_ocorrecias_pdf'' |input|Sim|Auxiliar da mensagem de ausência de ocorrência| Esses campos são ocultados da tela e do próprio PDF por suas condições de exibição, funcionando como variáveis auxiliares de controle. ==== 3.10 Etapa 2 - Campos ocultos ==== O agrupador Campos Ocultos da segunda etapa contém: ^Key^Finalidade| |''dataHoraInfoSobreApostila'' |Data/hora vinculada às informações da apostila| |''nomeRespAssApostila'' |Nome do responsável relacionado à apostila| |''processoTceHub'' |Variável de processo relacionada ao TCE Hub| ===== 4. Integrações ===== Considerando as duas etapas, existem duas integrações distintas. ==== 4.1 Busca todas variáveis do fluxo ==== ^Propriedade^Valor| |Nome|Busca todas variáveis do fluxo| |Evento|''click'' | |Elemento|''cpfServidor'' | |Serviço|[[:pres:gerti:gestao_de_ativos:siap_2:solarbpm|SolarBPM]] - Consulta todas variáveis 2| |Operação|''GET_/bpm-server-adm/bindings/{cdVinculo}/variables'' | |Send Model|''false'' | **Finalidade correta** A finalidade principal dessa integração é recuperar as variáveis existentes na instância BPM e preencher todasVariaveis como array, além dos retornos individualmente mapeados. A segunda etapa possui a função: buscaVariaveisFluxo_e_enviarDados() Ela verifica a quantidade de registros em: model.todasVariaveis.length e percorre cada item através de: model.todasVariaveis[r].name model.todasVariaveis[r].value Portanto, a consulta de todasVariaveis participa da rotina de conclusão do formulário, e não deve ser documentada simplesmente como uma integração destinada a carregar visualmente os campos readonly da aba 1. ==== 4.2 Nome responsável apostila (no SIAP 2.0 a utilidade desta integração foi removida) ==== Esta integração pertence à segunda etapa. ^Propriedade^Valor| |Nome|Nome responsável apostila| |Evento|''load'' | |Serviço|''cpa-core-backend'' | |Operação|''POST_/s/integracao-fd/consulta-usuario-logado'' | |Send Model|''false'' | Entre os retornos configurados estão: * dataHoraInfoSobreApostila; * nomeRespAssApostila; * tab_criticas5A2; * bt_comoDesejaProsseguir; * sel_etapaRetorno; * variáveis auxiliares de PDF. O mapeamento explícito: nmUsuario → nomeRespAssApostila recupera o nome do usuário para nomeRespAssApostila. ===== 5. Botões ===== ==== Etapa 1 ==== Prosseguir para próxima aba ^Propriedade^Valor| |Key|''submit_1'' | |Tipo|submit| |Título|Prosseguir para próxima aba| |Função|''formFunctions.nextStep'' | Botão técnico de carregamento ^Propriedade^Valor| |Key|''btn_load'' | |Tipo|button| |Exibição|''false'' | |Função|''carregaDadosIniciais'' | ==== Etapa 2 ==== **Voltar para aba anterior** Key: btn_3 Função: formFunctions.previousStep Retorna para a primeira etapa. **Salvar** Key: btn_salvar Função: formFunctions.saveDraft **Concluir formulário** Key: submit_1 Tipo: submit Função: finalizarTarefa **Botão técnico btn_load** Key: btn_load Função: carregaDadosIniciais showCondition: false ===== 6. Principais Regras de Negócio ===== ==== RN-VFO-01 - Conferência antes da decisão ==== A tarefa separa a conferência dos dados, na etapa 1, da análise das ocorrências e decisão de encaminhamento, na etapa 2. ==== RN-VFO-02 - Ocorrências protegidas contra alteração estrutural ==== Código e descrição são readonly e a função ''ocultaBotao_excluir_e_add_tab_criticas5A2()'' remove da interface os controles para adicionar/remover ocorrências. ==== RN-VFO-03 - Justificativa é editável ==== A coluna ''col_justificativa'' é o campo editável da tabela de ocorrências. ==== RN-VFO-04 - Decisão obrigatória ==== ''bt_comoDesejaProsseguir'' possui ''required=true''. ==== RN-VFO-05 - Retorno selecionável ==== Caso o fluxo de decisão seja de retorno para alteração, o formulário disponibiliza ''sel_etapaRetorno'' com quatro destinos configurados. ==== RN-VFO-06 - Validação antes da conclusão ==== ''finalizarTarefa()'' executa ''Class_ocultaCampos()'' e interrompe o processamento quando identifica campos inválidos, exibindo alerta: Existem campos com valores inválidos. ==== RN-VFO-07 - Preparação para PDF ==== Antes da sequência de conclusão, ''finalizarTarefa()'' chama: pdf_decideMostrarOuNaoNoPDF(form, model, context); ===== 7. Principais funções JavaScript ===== ==== 7.1 Etapa 1 ==== A primeira etapa possui 5 funções. ^Função^Finalidade| |''concatenacao()'' |Acrescenta a unidade "anos" a ''tempoMinContribServ'' conforme condição implementada| |''carregaDadosIniciais()'' |Executa a inicialização| |''onLoadFuncao()'' |Inicializa ajustes de interface e botão técnico| |''ajustaTamanhoTabelas()'' |Realiza ajustes CSS de tabelas referenciadas| |''acionaIntegracaoBuscaTodasVariaveis()'' |Dispara o mecanismo associado à consulta das variáveis do fluxo| ---- ==== 7.2 Etapa 2 ==== A segunda etapa possui um conjunto mais amplo de funções, incluindo: ^Função^Finalidade| |''retornaForm1()'' |Rotina relacionada ao retorno de formulário| |''onLoadFuncao()'' |Inicialização da segunda etapa| |''carregaCriticas()'' |Tratamento/carregamento das ocorrências| |''limpaSelecaoEtapaRetorno()'' |Limpa seleção da etapa de retorno| |''Class_ocultaCampos()'' |Controla visibilidade/obrigatoriedade e validação de campos| |''ocultaShow_atencao()'' |Controla exibição do alerta| |''ocultaBotao_excluir_e_add_tab_criticas5A2()'' |Oculta controles de inclusão/exclusão da tabela de ocorrências| |''carregaDadosIniciais()'' |Realiza inicialização dos dados da aba| |''removerLinhas()'' |Rotina para remoção/tratamento de linhas| |''ocultaTabelaOcorrencias()'' |Controla visibilidade da tabela de ocorrências| |''finalizarTarefa()'' |Coordena validação e conclusão do formulário| |''pdf_decideMostrarOuNaoNoPDF()'' |Controla quais elementos serão apresentados no PDF| |''exibeAlerta()'' |Exibe mensagens de validação| |''escondeAlerta()'' |Oculta mensagens| |''dataFinalizacaoTarefa()'' |Rotina relacionada à data de finalização| |''variaveisParaBusca_NAO_USADO()'' |Implementação identificada explicitamente como não utilizada| |''buscaVariaveisFluxo_e_enviarDados_DESATIVADO()'' |Versão explicitamente identificada como desativada| |''variaveisParaBusca()'' |Prepara variáveis para o processamento| |''buscaVariaveisFluxo_e_enviarDados()'' |Percorre ''todasVariaveis'' e trata os valores recuperados para a sequência de conclusão| |''iniciaPropriedadesForm()'' |Inicializa propriedades e controles do formulário| ==== Função crítica: buscaVariaveisFluxo_e_enviarDados() ==== Essa é uma das funções centrais da segunda etapa. Ela utiliza: model.todasVariaveis.length e, para cada registro: model.todasVariaveis[r].name model.todasVariaveis[r].value O código trata diferentes variáveis do processo, incluindo estruturas tabulares, e monta objetos a partir dos valores recuperados. ===== 8. Fluxo funcional completo das duas etapas ===== {{:pres:gerti:gestao_de_ativos:siap_2:fluxofuncionalvalidacaofinaleocorrencias.png?nolink&321x755}} ===== 9. Pontos técnicos importantes ===== ==== todasVariaveis é central para a conclusão ==== A interpretação correta da arquitetura é: {{:pres:gerti:gestao_de_ativos:siap_2:pontostecnicosimportantesvalidfinaleocorrencias.png?nolink&254x338}} A variável ''todasVariaveis'' representa, portanto, uma estrutura intermediária importante para o processamento realizado na segunda etapa. ==== Controle dinâmico da interface ==== ''Class_ocultaCampos()'' contém lógica para mostrar/ocultar campos e tratar obrigatoriedade dinamicamente. A função também participa da validação executada por ''finalizarTarefa()''. ==== Ocorrências controladas ==== A tabela ''tab_criticas5A2'' não é livremente manipulável: o próprio [[:pres:gerti:gestao_de_ativos:siap_2:javascript|JavaScript]] oculta os controles de inclusão e exclusão, enquanto código e descrição permanecem readonly. ===== 10. Resumo Executivo ===== A tarefa **Validação final e ocorrências** é uma etapa de fechamento composta por **duas abas funcionalmente distintas**. A **primeira etapa** concentra a conferência das informações produzidas anteriormente no processo, exibindo em modo somente leitura a identificação do servidor, cargo, fundamento jurídico, datas, tempos previdenciários e atos de aposentadoria/fixação de proventos. A **segunda etapa** concentra o tratamento efetivo da validação: apresenta a tabela de **Ocorrências**, mantém código e descrição protegidos contra edição, permite registrar **Justificativa** e exige que o usuário escolha **Como deseja prosseguir?**. As opções são concluir o preenchimento e enviar ao TCE ou retornar aos formulários para alteração. Neste último caso, o usuário pode direcionar o retorno para Dados básicos, Dados do fundamento jurídico, Dados do histórico funcional ou Documentos de formalização. Do ponto de vista técnico, a integração **Busca todas variáveis do fluxo** deve ser entendida em conjunto com ''todasVariaveis''. A integração alimenta essa coleção com as variáveis da instância BPM e, na lógica da segunda etapa, ''buscaVariaveisFluxo_e_enviarDados()'' percorre os registros por ''name'' e ''value'' durante o processamento relacionado à conclusão. (Responsável por preencher a variável ''processoTceHub ''que é enviada no serviço de críticas dentro do fluxo) A tarefa ainda possui uma segunda integração, **Nome responsável apostila**, executada no carregamento da segunda etapa para obter, entre outros retornos, ''nomeRespAssApostila''. (Neste SIAP 2.0 a integração executa mas os dados de retorno não são utilizados nesta versão do SIAP) Por fim, embora a rotina de conclusão manipule informações recuperadas de ''todasVariaveis'', **a versão 29 não demonstra registro ativo de novos campos em''tab_relacoesInfoalteradas'' **, pois as referências observadas a ''preencheInformacoesAlteradas()'' estão comentadas. Por isso, a auditoria deve ser documentada como **não explicitamente implementada nesta tarefa**, evitando atribuir incorretamente os campos editáveis da etapa 2 à ''tab_relacoesInfoalteradas''. ===== 11. Tela do formulário e vídeos ===== ===== Tela aba 1 ===== {{:pres:gerti:gestao_de_ativos:siap_2:validacaofinaleocorrenciasaba1.png?nolink&1798x989}} ===== Tela aba 2 ===== {{:pres:gerti:gestao_de_ativos:siap_2:validacaofinaleocorrenciasaba2.png?nolink&1747x868}} ===== Vídeo demonstrativo =====