~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Lista de Alunos Laureados ====== O usuário da Pro Reitoria de Graduação, PROGRAD, semestralmente, organiza as cerimônias de colação de grau e, para tanto, faz-se necessário saber quais discentes estão aptos a receber a medalha de mérito estudantil. A medalha de mérito estudantil é entregue aos alunos de cada curso que obtiverem o maior Índice de Eficiência Acadêmica Normalizado (IEAN), dentre os alunos aptos a colação de grau em um determinado período letivo regular. Este relatório lista os discentes que estão com o status [[desenvolvimento:especificacoes:sigaa:graduacao:casos_de_uso:administracao:operacoes_administrativas:alterar_status_de_aluno|GRADUANDO]] ou [[desenvolvimento:especificacoes:sigaa:graduacao:casos_de_uso:administracao:operacoes_administrativas:alterar_status_de_aluno|CONCLUÍDO]], que podem colar grau e serem indicados como alunos laureados. ===== Descrição do Caso de Uso ===== Este caso de uso inicia quando o usuário acessa a opção: //SIGAA -> Graduação -> Relatórios - DACA -> Alunos -> Concluintes e Egressos -> Concluintes e Egressos -> Lista de Alunos Laureados//. Para gerar o relatório, o usuário deve escolher o ano e período dos discentes à colarem grau e o índice acadêmico que será utilizado para gerar o relatório. O índice acadêmico a ser considerado neste relatório via de regra deve ser o IEAN, porém o usuário tem a opção de selecionar que o relatório seja gerado a partir do IRA para contemplar casos antigos, aonde existia apenas o IRA e este era o índice considerado para listagem dos laureados. O IRA deixou de ser o índice padrão para cálculo de laureados na UFRN a partir de 2010.2. O usuário tem como opção: * **Ano-Período**: Tipo - NUMÉRICO. Formato - 9999.9 * **Índice Acadêmico**: Tipo - TEXTO. Com as opções: ''IRA, IEAN''. O relatório listará os discentes graduandos e concluídos, agrupados por curso, sendo listado: * **__Curso__**: Tipo - TEXTO. Curso do discente laureado. * **__Discente__**: Tipo - TEXTO. Matrícula e nome do discente. * **__IEAN__** [[desenvolvimento:especificacoes:sigaa:graduacao:casos_de_uso:alunos:documentos:emitir_historico|Índice de Eficiência Acadêmica Normalizado]] ou **__IRA__**: Tipo - NUMÉRICO. Será, ainda, apresentado uma tabela semelhante contendo uma Lista dos Cursos de Discentes com IEAN menor que 600, mas que tiveram maior IEAN do curso. ===== Principais Regras de Negócio ===== * **RN01** - A concessão da medalha de mérito estudantil só ocorrerá caso o IEAN do discente seja igual ou superior a 600(seiscentos). Caso a lista de laureados seja gerada com base no IRA o valor mínimo a ser considerado é 8.5. * **RN02** - Ocorrendo casos de alunos com o mesmo IEAN, considerando-se o valor inteiro arredondando, cada aluno será indicado com laureado. * **RN03** - A ordenação da listagem deve ser pelo nome do curso, sigla da unidade e nome do discente. * **RN04** - Para os cursos em que nenhum aluno atingiu o valor mínimo de IEAN, será relacionado (com destaque em vermelho) aquele discente que tenha atingido a maior pontuação (mesmo que inferior a 600). * **RN05** - Um mesmo curso (Unidade/Curso/Cidade) não pode aparecer em ambas listagens. ==== Resoluções/Legislações Associadas ==== Quando não houver, informar com texto "Não se Aplica". ===== Classes Persistentes e Tabelas Envolvidas ===== ^ Classe ^ Tabela | | br.ufrn.sigaa.pessoa.dominio.Discente | sigaa.public.discente | | br.ufrn.sigaa.ensino.graduacao.dominio.DiscenteGraduacao | sigaa.graduacao.discente_graduacao | | br.ufrn.sigaa.dominio.Curso | sigaa.public.curso | | br.ufrn.sigaa.ensino.dominio.MatriculaComponente | sigaa.ensino.matricula_componente | | br.ufrn.sigaa.ensino.dominio.IndiceAcademicoDiscente | sigaa.graduacao.indice_academico_discente | ====== Plano de Teste ====== Sistema: SIGAA Módulo: Graduação Link(s): SIGAA -> Graduação -> Relatórios - DACA -> Alunos -> Concluintes e Egressos -> Concluintes e Egressos -> Lista de Alunos Laureados Usuário: lins, mirza Papel que usuário deve ter: SigaaPapeis.DAE ===== Cenários de Teste ===== Pode-se comparar os status dos discentes em [[desenvolvimento:especificacoes:sigaa:graduacao:casos_de_uso:alunos:dados_do_discente:consultar_dados_do_aluno | Consultar Dados do Aluno]]. ===== Dados para o Teste ===== SQL da Lista de Laureados: select u.sigla as centro, c.id_curso, c.nome as curso_nome, d.matricula, p.nome as discente_nome, round(iad.valor) as IEAN, m.id_municipio, m.nome as municipio_nome, sd.descricao as status_discente from comum.unidade u INNER JOIN curso c ON u.id_unidade = c.id_unidade INNER JOIN discente d ON c.id_curso= d.id_curso INNER JOIN graduacao.discente_graduacao dgd ON d.id_discente = dgd.id_discente_graduacao INNER JOIN comum.pessoa p ON d.id_pessoa = p.id_pessoa INNER JOIN comum.municipio m ON c.id_municipio = m.id_municipio INNER JOIN status_discente sd ON d.status = sd.status INNER JOIN ensino.indice_academico_discente iad ON iad.id_discente = d.id_discente INNER JOIN (select cur.id_unidade, cur.id_curso, max(round(iadis.valor)) as iean_max from graduacao.discente_graduacao dg INNER JOIN discente dis ON dis.id_discente = dg.id_discente_graduacao INNER JOIN curso cur ON dis.id_curso = cur.id_curso INNER JOIN ensino.indice_academico_discente iadis ON iadis.id_discente = dis.id_discente where iadis.id_indice_academico = 7 and iadis.valor >= 600 and dis.status in ( 3,9 ) and exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=1 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) and not exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=2 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) group by cur.id_unidade, cur.id_curso ) as maxiean ON maxiean.id_curso = c.id_curso AND maxiean.id_unidade = c.id_unidade where iad.id_indice_academico = 7 and maxiean.iean_max = round(iad.valor) and iad.valor >= 600 and d.status in ( 3,9 ) and exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=1 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) and not exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=2 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) order by c.nome, u.sigla, m.nome, p.nome SQL da Lista dos Discentes que não atingiram o IEAN mínimo: select u.sigla as centro, c.id_curso, c.nome as curso_nome, d.matricula, p.nome as discente_nome, round(iad.valor) as IEAN, m.id_municipio, m.nome as municipio_nome, sd.descricao as status_discente from comum.unidade u INNER JOIN curso c ON u.id_unidade = c.id_unidade INNER JOIN discente d ON c.id_curso= d.id_curso INNER JOIN graduacao.discente_graduacao dgd ON d.id_discente = dgd.id_discente_graduacao INNER JOIN comum.pessoa p ON d.id_pessoa = p.id_pessoa INNER JOIN comum.municipio m ON c.id_municipio = m.id_municipio INNER JOIN status_discente sd ON d.status = sd.status INNER JOIN ensino.indice_academico_discente iad ON iad.id_discente = d.id_discente INNER JOIN (select cur.id_unidade, cur.id_curso, max(round(iadis.valor)) as iean_max from graduacao.discente_graduacao dg INNER JOIN discente dis ON dis.id_discente = dg.id_discente_graduacao INNER JOIN curso cur ON dis.id_curso = cur.id_curso INNER JOIN ensino.indice_academico_discente iadis ON iadis.id_discente = dis.id_discente where iadis.id_indice_academico = 7 and dis.status in ( 3,9 ) and exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=1 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) and not exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=2 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) group by cur.id_unidade, cur.id_curso ) as maxiean ON maxiean.id_curso = c.id_curso AND maxiean.id_unidade = c.id_unidade where iad.id_indice_academico = 7 and maxiean.iean_max = round(iad.valor) and d.status in ( 3,9 ) and exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=1 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) and not exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=2 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) and c.id_curso NOT IN( select c.id_curso from comum.unidade u INNER JOIN curso c ON u.id_unidade = c.id_unidade INNER JOIN discente d ON c.id_curso= d.id_curso INNER JOIN graduacao.discente_graduacao dgd ON d.id_discente = dgd.id_discente_graduacao INNER JOIN comum.pessoa p ON d.id_pessoa = p.id_pessoa INNER JOIN comum.municipio m ON c.id_municipio = m.id_municipio INNER JOIN status_discente sd ON d.status = sd.status INNER JOIN ensino.indice_academico_discente iad ON iad.id_discente = d.id_discente INNER JOIN (select cur.id_unidade, cur.id_curso, max(round(iadis.valor)) as iean_max from graduacao.discente_graduacao dg INNER JOIN discente dis ON dis.id_discente = dg.id_discente_graduacao INNER JOIN curso cur ON dis.id_curso = cur.id_curso INNER JOIN ensino.indice_academico_discente iadis ON iadis.id_discente = dis.id_discente where iadis.id_indice_academico = 7 and iadis.valor >= 600 and dis.status in ( 3,9 ) and exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=1 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) and not exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=2 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) group by cur.id_unidade, cur.id_curso ) as maxiean ON maxiean.id_curso = c.id_curso AND maxiean.id_unidade = c.id_unidade where iad.id_indice_academico = 7 and maxiean.iean_max = round(iad.valor) and iad.valor >= 600 and d.status in ( 3,9 ) and exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=1 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) and not exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=2 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) ) order by c.nome, u.sigla, m.nome, p.nome