~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Unificar Dados de Discentes ====== Este caso de uso permite ao usuário do DAE unificar os dados pessoais de dois discentes. É o caso de quando há dois registros pessoais, cada um associado à uma matrícula de discente distinta. Após a unificação, uma pessoa terá dois (ou mais) vínculos de discentes. ===== Descrição do Caso de Uso ===== O caso de uso inicia quando o usuário acessa o link //SIGAA -> Graduação -> Administração -> Operações Administrativas -> Unificar Dados de Discentes//. Ao iniciar, o usuário deverá realizar uma busca por discente com os seguintes parâmetros: * **Nível de Ensino**: Tipo - TEXTO. Caso o usuário seja ADMINISTRADOR SIGAA, poderá escolher o nível de ensino (**RN01**). * **Matrícula**: Formato - 9999999999. Tipo - NUMÉRICO. * **CPF**: Formato - 99999999999. Tipo - NUMÉRICO. * **Nome do Discente**: Tipo - TEXTO. * **Incluir na buscas outros vínculos além do vínculo de discente**: Tipo - BOOLEANO. Exibido apenas quando o usuário possui papel ADMINSTRADOR_SIGAA O resultado é exibido em formato de tabela, agrupados por registro pessoal, seguindo o modelo abaixo: ^ Matrícula ^ Nome ^ Curso ^ Status | ^ Discentes Vinculados ao Registro Pessoal ID: Tipo - NUMÉRICO ^^^^ | Tipo - NUMÉRICO | Tipo - TEXTO | Tipo - TEXTO | Tipo - TEXTO | Selecionando o discente, serão apresentados os discentes selecionados: ^ Matrícula ^ Nome ^ Curso ^ Status | | Tipo - NUMÉRICO | Tipo - TEXTO | Tipo - TEXTO | Tipo - TEXTO | Cada linha possui um menu onde o usuário poderá visualizar: * **__Ano/Período de Ingresso__** ou **__Ano de Ingresso__**: Tipo - NUMÉRICO. * **__Forma de Ingresso__**: Tipo - TEXTO, no caso de nível Graduação. * **__Orientador__**: Tipo - TEXTO, no caso de nível Stricto Sensu. * **__Matriz Curricular__**: Tipo - TEXTO, no caso de nível Graduação. * **__Área de Concentração__**: Tipo - TEXTO, no caso de nível Stricto Sensu. * **__Identidade__**: Tipo - NUMÉRICO * **__CPF__**: Tipo - NUMÉRICO * **__Data de Nascimento__**: Tipo - NUMÉRICO * **__Nome do Pai__**: Tipo - TEXTO * **__Nome da Mãe__**: Tipo - TEXTO O usuário deverá selecionar um dos discentes para o qual deseje utilizar os dados pessoais. Os demais discentes terão seus vínculos associados aos dados pessoais do discente selecionado. No passo seguinte, serão apresentados quais dados pessoais serão utilizados (resultante) e a listagem com os discentes que serão unificados: ^ Matrícula ^ Nome ^ Curso ^ Status | | Tipo - NUMÉRICO | Tipo - TEXTO | Tipo - TEXTO | Tipo - TEXTO | O usuário deverá informar a senha para confirmar a operação. O caso de uso é finalizado. ===== Principais Regras de Negócio ===== * **RN01** - Caso o usuário tenha papel ADMINISTRADOR_SIGAA, poderá escolher o nível de ensino. * **RN02** - O discente selecionado para ser o dado pessoal comum à todos deverá ter um CPF válido. * **RN03** - Os demais dados pessoais deverão ser invalidados (atributo //valido// == false) ==== Resoluções/Legislações Associadas ==== Não se aplica ===== Classes Persistentes e Tabelas Envolvidas ===== ^ Classe ^ Tabela | | br.ufrn.sigaa.pessoa.dominio.Discente | sigaa.public.discente | | br.com.jeebrasil.iproject.dominio.Pessoa | sigaa.comum.pessoa | | br.ufrn.sigaa.dominio.Usuario | sigaa.comum.usuario | | br.ufrn.sigaa.pessoa.dominio.LogMergeDiscente | sigaa.comum.log_merge_discente | ====== Plano de Teste ====== Sistema: SIGAA Módulo: Graduação Link(s): Administração -> Operações Administrativas -> Unificar Dados de Discentes Usuário: adelardo Papel que usuário deve ter: SigaaPapeis.ADMINISTRADOR_DAE, SigaaPapeis.ADMINISTRADOR_SIGAA ===== Cenários de Teste ===== Unificar os discentes e verificar se os dados pessoais são comuns aos dois utilizando o login do discente unificado. ===== Dados para o Teste ===== Pode-se utilizar a consulta abaixo para buscar por registros duplicados: select ad.matricula, a.nome, a.cpf_cnpj, a.data_nascimento, a.valido from comum.pessoa a inner join discente ad using (id_pessoa) inner join comum.pessoa b using (nome_ascii) inner join discente bd on (b.id_pessoa = bd.id_pessoa ) where a.id_pessoa < b.id_pessoa and ad.id_discente != bd.id_discente and ad.nivel = 'G' and ad.nivel = 'G' and a.nome is not null and a.nome != '' order by a.nome_ascii Para verificar se os dados foram unificados corretamente, utilize a consulta: select ad.matricula,a.id_pessoa, a.nome, a.cpf_cnpj, a.data_nascimento, a.valido from comum.pessoa a left join discente ad using (id_pessoa) where a.nome ilike '?' -- PONHA O NOME DO DISCENTE AQUI OBS: verifique o campo //valido//. Para verificar se o log com alterações foi devidamente registro, utilize a consulta abaixo: select * from comum.log_merge_discente order by 1