~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Transferência Automática (entre turmas) ====== Este caso de uso permite que funcionários do DAE (Departamento de Administração Escolar) realizem transferências de alunos matriculados e solicitações de matrícula entre turmas dentro da instituição. ===== Descrição do Caso de Uso ===== Este caso de uso inicia-se quando a opção //SIGAA -> Graduação -> Alunos -> Transferência de Aluno entre Turmas -> Transferência Automática// é acessada. === Passo 1 === Primeiramente é solicitado para buscar o componente curricular que se deseja realizar a busca: * **Ano-Período**: Formato - AAAA.9. Tipo - NUMÉRICO. * **Centro**: Tipo - TEXTO. Centro ao qual o departamento está vinculado. * **Unidade**: Tipo - TEXTO. Unidade a qual o componente está vinculado. * **Componente Curricular***: Tipo - TEXTO. Componente que se deseja realizar transferências de alunos. === Passo 2 === São listadas todas as turmas do componente escolhido, o resultado em formato de tabela segue o modelo abaixo: ^ Turma ^ Docentes ^ Ano/Período ^ Horário ^ Matriculados ^ Solicitações ^ Capacidade | | 99 | NOME DO DOCENTE | 9999.9 | 99X99 | 99 | 99 | 99 | | ------ | ------ | ------ | ------ | ------ | ------ | ------ | Deve-se então selecionar a turma que deseja ser a origem da transferência. * Caso o usuário atenda a regra de negócio [[#principais_regras_de_negócio|RN07]], poderá selecionar a turma para transferência entre turmas de componentes curriculares diferentes, para isso será necessário selecionar a opção // Selecionar Turma de Componente Diferente//. Seguindo o passo 3b. === Passo 3 === São apresentados os dados relacionados a turma escolhida e novamente é exibida uma tabela com as informações sobre as turmas, sem a turma de origem. * **__Turma__**: Tipo - TEXTO. * **__Docente(s)__**: Tipo - TEXTO. * **__Horário__**: Tipo - TEXTO. * **__Capacidade da Turma__**: Tipo - NUMÉRICO. * **__Alunos Matriculados__**: Tipo - NUMÉRICO. * **__Solicitações__**: Tipo - NUMÉRICO. Deve-se agora escolher a turma de destino, seguindo para o passo 4. === Passo 3b === São apresentados os dados relacionados a turma de origem escolhida. Será solicitado para buscar o componente curricular que se deseja realizar a busca da turma de destino: * **Ano-Período**: Formato - AAAA.9. Tipo - DATA e NUMÉRICO. * **Centro**: Tipo - TEXTO. Centro ao qual o departamento está vinculado. * **Unidade**: Tipo - TEXTO. Unidade a qual o componente está vinculado. * **Componente Curricular***: Tipo - TEXTO. Componente que se deseja realizar transferências de alunos. São listadas todas as turmas do componente escolhido, o resultado em formato de tabela segue o modelo abaixo: ^ Turma ^ Docentes ^ Ano/Período ^ Horário ^ Matriculados ^ Solicitações ^ Capacidade | | 99 | NOME DO DOCENTE | 9999.9 | 99X99 | 99 | 99 | 99 | | ------ | ------ | ------ | ------ | ------ | ------ | ------ | Deve-se então selecionar a turma que deseja ser o destino da transferência, dando continuidade no passo 4. === Passo 4 === São exibidos os dados das turmas de origem e destino, deve-se então definir quantos alunos deverão ser transferidos ([[#principais_regras_de_negócio|RN01]], [[#principais_regras_de_negócio|RN02]], [[#principais_regras_de_negócio|RN03]]). * **__Turma de Origem__** * **__Nome__**: Tipo - TEXTO. * **__Docente(s)__**: Tipo - Texto. * **__Período__**: Tipo - NUMÉRICO. * **__Horário__**: Tipo - TEXTO. * **__Matriculados__**: Tipo - NUMÉRICO. * **__Solicitações__**: Tipo - NUMÉRICO. * **__Capacidade__**: Tipo - NUMÉRICO. * **__Turma de Destino__** * * **__Nome__**: Tipo - TEXTO. * **__Docente(s)__**: Tipo - Texto. * **__Período__**: Tipo - NUMÉRICO. * **__Horário__**: Tipo - TEXTO. * **__Matriculados__**: Tipo - NUMÉRICO. * **__Solicitações__**: Tipo - NUMÉRICO. * **__Capacidade__**: Tipo - NUMÉRICO. * **Número de alunos matriculados a transferir***: Tipo - NUMÉRICO. === Passo 5 === Após a transferência, são mostrados os alunos que foram transferidos, informado //matrícula// e //nome// juntamente com os dados mostrados no passo anterior. * **__Turma de Origem__** * **__Nome__**: Tipo - TEXTO. * **__Docente(s)__**: Tipo - Texto. * **__Período__**: Tipo - NUMÉRICO. * **__Horário__**: Tipo - TEXTO. * **__Matriculados__**: Tipo - NUMÉRICO. * **__Solicitações__**: Tipo - NUMÉRICO. * **__Capacidade__**: Tipo - NUMÉRICO. * **__Turma de Destino__** * * **__Nome__**: Tipo - TEXTO. * **__Docente(s)__**: Tipo - Texto. * **__Período__**: Tipo - NUMÉRICO. * **__Horário__**: Tipo - TEXTO. * **__Matriculados__**: Tipo - NUMÉRICO. * **__Solicitações__**: Tipo - NUMÉRICO. * **__Capacidade__**: Tipo - NUMÉRICO. * **__Alunos Transferidos__** * **__Discente(s)__**: Formato - MATRICULA - NOME DO DISCENTE. Tipo - TEXTO. Os discentes que foram transferidos receberão um e-mail informando-lhes da transferência, caso tenham e-mail cadastrado no sistema. O caso de uso é finalizado. ===== Principais Regras de Negócio ===== * **RN01** - O número de alunos a serem transferidos não pode ser maior do que a quantidade de alunos matriculados na turma de origem. * **RN02** - A quantidade de alunos a transferir deve ser maior que zero. * **RN03** - Somente os discentes que não possuam choque de horário com a turma de destino podem ser transferidos. * **RN04** - Os usuários do DAE podem realizar a transferência de alunos entre turmas abertas para qualquer ano/período, podendo realizar tal operação mesmo fora do período de ajustes. * **RN05** - Caso o parâmetro TIPO_ESTRATEGIA_TRANSF_TURMA possua o valor igual a "PRIO", os discentes serão selecionados de acordo com as prioridades da matrícula, em ordem inversa: - Aluno pagando componente eletivo (E). - Aluno adiantado (A) - Aluno em recuperação (R) - Aluno formando (F) - Aluno nivelado (N) - Aluno recém ingresso através de vestibular (V) * **RN06** - Caso o parâmetro TIPO_ESTRATEGIA_TRANSF_TURMA possua o valor igual a "RAND", os discentes serão selecionados de forma aleatória. * **RN07** - Usuários com permissão de ADMINISTRADOR do DAE, poderá realizar a alteração entre turmas de componentes diferentes. * **RN08** - Será enviado um e-mail para os discentes transferidos informando-lhes da transferência, caso tenham e-mail cadastrado no sistema. ==== 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.ensino.dominio.Turma | sigaa.ensino.turma | | br.ufrn.sigaa.ensino.dominio.MatriculaComponente | sigaa.ensino.matricula_componente | | br.ufrn.sigaa.ensino.graduacao.dominio.SolicitacaoMatricula | sigaa.graduacao.solicitacao_matricula | ====== Plano de Teste ====== Sistema: SIGAA Módulo: Graduação Link(s): Alunos -> Transferência de Aluno entre Turmas -> Transferência Automática Usuário: vanessa, mittelbach [DAE], dressamp [ADMINISTRADOR_DAE] Papel que usuário deve ter: SigaaPapeis.DAE, SigaaPapeis.ADMINISTRADOR_DAE ===== Cenários de Teste ===== Realizar a busca de turmas aptas a sofrerem transferência, ao selecionar o Centro verificar se as Coordenações de Curso são listadas, assim como os departamentos. Realizar a transferência de alunos verificando se de fato ocorreram e obedeceram as regras de negócio. Após realizar a transferência de alunos entre turmas, verificar se a quantidade de alunos matriculados, para cada turma, corresponde com a operação da transferência realizada anteriomente, para tal verificação pode utilizar a operação de [[desenvolvimento:especificacoes:sigaa:graduacao:casos_de_uso:consultas:consultas_gerais:turmas | consulta de turmas]]. - Existem Atividades que formam turmas, essas atividades pertencem a coordenação de curso ou ao departamento, podendo também fazer transferência de alunos entre essas. Efetuar testes utilizando essas atividades (ver como encontrar essas turmas nos Dados para o Teste). ===== Dados para o Teste ===== Para realizar testes com turmas do tipo Atividades especiais coletivas, pode-se utilizar a seguinte consulta em banco de dados, que retorna as turmas do tipo Atividade, com forma de participação Especial Coletiva e com situação Aberta. select pai.nome as Centro, filho.nome as Departamento, cc.codigo from ensino.turma t inner join ensino.componente_curricular cc using(id_disciplina) inner join comum.unidade filho ON filho.id_unidade = cc.id_unidade inner join comum.unidade pai ON pai.id_unidade = filho.unidade_responsavel where t.id_situacao_turma = 1 -- Turmas Abertas and cc.id_tipo_componente = 1 -- Turmas do tipo Atividade and cc.id_forma_participacao = 3 -- Turmas com forma de participação Especial Coletiva Para realizar os testes da regra de negócio RN06, pode-se utilizar o seguinte script para retornar os alunos de acordo com a prioridade de matrícula: Onde o valor idTurma refere-se a identificador da turma (turma.id_turma). (Neste script está sendo utilizado o id_turma = 1162057, referente a turma de código 01 do componente DIM0040) select distinct d.id_discente as id_discente, mc.id_matricula_componente as id_matricula_componente, (select valor from ensino.indice_academico_discente where id_indice_academico = 6 and id_discente = d.id_discente) as iea, d.id_matriz_curricular, d.matricula, d.curso, d.nome, coalesce((d.periodo_atual = cc.semestre_oferta), falseValue()) as nivelado, coalesce(d.possivel_formando, falseValue()) as formando, coalesce((d.periodo_atual > cc.semestre_oferta), falseValue()) as recuperacao, coalesce((d.periodo_atual < cc.semestre_oferta), falseValue()) as adiantado, cc.semestre_oferta is null as eletivo, (select distinct mc1.id_matricula_componente from ensino.matricula_componente mc1 join graduacao.confirmacao_matricula_ferias cmf on cmf.id_matricula_gerada = mc1.id_matricula_componente join graduacao.turma_solicitacao_turma tst on (tst.id_turma = mc1.id_turma) join graduacao.discentes_solicitacao ds on( ds.id_solicitacao_turma = tst.id_solicitacao ) join graduacao.solicitacao_ensino_individual sei on (sei.id_solicitacao_turma = tst.id_solicitacao) where mc1.ano = 2011 and mc1.periodo = 1 and id_situacao_matricula = 1 and confirmou = true and mc1.id_matricula_componente = mc.id_matricula_componente) is not null as vestibular from ensino.matricula_componente mc, (select d.id_discente, d.id_curriculo, d.id_forma_ingresso, d.matricula, c.nome as curso, p.nome, (select valor from ensino.indice_academico_discente where id_indice_academico = 6 and id_discente = d.id_discente) as iea, dg.possivel_formando, dg.id_matriz_curricular, greatest((2011 - d.ano_ingresso) * 2 + (1 - d.periodo_ingresso + 1) - (select count(*) from ensino.movimentacao_aluno where ativo = trueValue() and id_tipo_movimentacao_aluno = 101 and id_discente = d.id_discente), 0) + dg.perfil_inicial as periodo_atual from discente d left outer join curso c on (c.id_curso = d.id_curso), graduacao.discente_graduacao dg, ensino.matricula_componente mc, ensino.turma t, comum.pessoa p where d.id_discente = dg.id_discente_graduacao and mc.id_discente = d.id_discente and mc.id_turma = t.id_turma and d.id_pessoa = p.id_pessoa and t.id_turma = 1162057 and d.status in (1, 2, 8)) as d left join graduacao.curriculo c on (d.id_curriculo = c.id_curriculo) left join ((select * from ensino.turma t, graduacao.curriculo_componente cc where t.id_disciplina = cc.id_componente_curricular and t.id_turma = 1162057) union (select t.*, cuc.* from ensino.turma t, graduacao.curriculo_componente cuc, ensino.componente_curricular cc where t.id_disciplina = cc.id_disciplina and cc.id_bloco_subunidade = cuc.id_componente_curricular and t.id_turma = 1162057) ) as cc on (c.id_curriculo = cc.id_curriculo) where mc.id_turma = 1162057 and mc.id_discente = d.id_discente and mc.id_situacao_matricula = 2 order by eletivo desc, adiantado desc, recuperacao desc, formando desc, nivelado desc , vestibular desc , iea asc;