| {{:projetos:ufopa:requisitos:sigaa:graduacao:administracao:processamento_de_matricula:logosig.png?50 }}SIG Software & Consultoria em Tecnologia da Informação LTDA  |
| Documento de Especificação de Requisitos                                                                                                                            |
| **Projeto:** Implantação Sistemas SIG                                                                                                                               |
| **Instituição:** Universidade Federal do Piauí                                                                                                                      |
| **Contrato:** 72/2011 |
====== Matricular Aluno ======
Matrícula é o ato que vincula o aluno, regular ou especial, a turmas de componentes curriculares em um determinado período letivo.
Este caso de uso permite que o coordenador da graduação matricule discentes em turmas.
===== Descrição do Caso de Uso =====
Este caso de uso inicia-se quando a opção //SIGAA -> Menu Graduação > Matrículas e Programas > Matrículas > Matricular Aluno// é acessada.
===Passo 1===
Ao ter acesso a funcionalidade são solicitados alguns dados para ser feita a busca por discentes:
  * **Matrícula**: Formato - 9999999999. Tipo - NUMÉRICO.
  * **CPF**: Formato - 99999999999. Tipo - NUMÉRICO.
  * **Nome do Discente**: Tipo - TEXTO.
Os parâmetros de busca podem ser combinados para refinar o resultado. Os resultados são mostrados em formato de tabela seguindo o modelo abaixo:
^ Matrícula ^ Aluno ^ Status |
^ NOME DO CURSO ^^^
| 9999999999 | NOME DO DISCENTE | STATUS |
| ------ | ------ | ------ | 
Os discente são agrupados por curso. Para cada discente encontrado é possível //Visualizar Detalhes// ou //Selecionar// o discente para matrícula.
===Passo 2===
Após selecionar o discente desejado, são exibidas algumas informações:
  * **__Discente__**: Formato - MATRÍCULA NOME DO DISCENTE. Tipo - TEXTO e NUMÉRICO. Possui opção de visualizar o Histórico do aluno.
  * **__Matriz Curricular__**: Formato - CURSO - MATRIZ - TURNO. Tipo - TEXTO.
  * **__Currículo__**: Tipo - NUMÉRICO.
Será apresentado ao usuário um formulário para busca de turma, e opções conforme explicadas abaixo:
  * Selecionar outro discente: permite buscar um novo discente para realização da matrícula.
  * Ver as turmas da Estrutura Curricular: visualiza as turmas criadas da estrutura curricular do discente.
  * Ver equivalentes a Est. Curricular: exibe todas as turmas abertas dos componentes curriculares da sua estrutura curricular
  * Ver as turmas selecionadas: visualiza as turmas que foram selecionadas para a matricula
=== Ver as turmas da Estrutura Curricular ===
**Quando o regime curricular do discente for o de bloco**
Exibe as turmas criadas para os componentes curriculares da estrutura curricular do curso até o período atual do discente. As turmas são agrupadas pelo período correspondente ao nível ao qual o componente curricular foi cadastrado na  [[http://www.info.ufrn.br/wikisistemas/doku.php?id=desenvolvimento:especificacoes:sigaa:graduacao:casos_de_uso:cdp:estrutura_curricular:cadastrar|Estrutura Curricular]], com a opção de poder selecionar todos os componentes ofertados. Caso haja mais de uma turma criada para o componente curricular, ao utilizar esta opção, o sistema deverá selecionar a primeira turma ofertada. Quando para um determinado componente curricular só existir uma turma, está virá selecionada e não será permitido desmarcá-la.
**Quando o regime curricular do discente for o de crédito**
Exibe as turmas criadas para os componentes curriculares de toda a estrutura curricular do curso do discente. As turmas são agrupadas pelo período correspondente ao nível ao qual o componente curricular foi cadastrado na  [[http://www.info.ufrn.br/wikisistemas/doku.php?id=desenvolvimento:especificacoes:sigaa:graduacao:casos_de_uso:cdp:estrutura_curricular:cadastrar|Estrutura Curricular]], com a opção de poder selecionar todos os componentes ofertados. Caso haja mais de uma turma criada para o componente curricular, ao utilizar esta opção, o sistema deverá selecionar a primeira turma ofertada.
Em cada grupo por nível, é exibido uma lista de componentes curriculares, com as respectivas turmas criadas, detalhando código da turma, os docente(s) o horário e o local onde será ministrado a aula. É dada a opção de listar turmas criadas para componentes curriculares equivalentes ou, no caso do discente não poder se matricular, os pré-requisitos necessários. 
Para cada componente listado, é mostrado se é //permitida a matrícula do discente// ou se //não é permitida a matrícula do discente//, para as turmas, é exibido se a //turma possui vagas para seu curso// (no caso, o curso do discente). Também é possível //visualizar os detalhes// de cada turma listada, acessando essa opção, são exibidos:
  * **Dados da Turma**
    * **Ano/Período**: Formato - AAAA.9. Tipo - NUMÉRICO.
    * **Componente e Turma**: Formato - CÓDIGO - NOME DO COMPONENTE - TURMA 99. Tipo - TEXTO e NUMÉRICO.
    * **Tipo do	Componente**: Tipo - TEXTO.
    * **Créditos / Carga Horária**: Formato - 99 CR/99 Horas. Tipo - TEXTO e NUMÉRICO.
    * **Tipo da Turma**: Tipo - TEXTO.
    * **Local e	Horário**: Formato - LOCAL/HORÁRIO (9X9/99X99). Tipo - TEXTO e NUMÉRICO.
    * **Capacidade**: Formato - 99 alunos. Tipo - TEXTO e NUMÉRICO.
    * **Totais**: Formato - 99 solicitações de matrícula. Tipo - TEXTO e NUMÉRICO.
  * **Professores**: professores que irão ministrar a disciplina.
  * **Vagas Reservadas**: número de vagas reservadas para determinado curso.
Da lista, quando permitido, o usuário poderá marcar as turmas que deseja matricular o discente e ao escolher a opção em "Adicionar Turmas", uma vez validada a seleção ([[#principais_regras_de_negócio|RN04]],[[#principais_regras_de_negócio|RN05]],[[#principais_regras_de_negócio|RN06]] e [[#principais_regras_de_negócio|RN07]]), será exibido formulário de turmas selecionadas, detalhado mais a frente.
=== Ver equivalentes a Estrutura Curricular ===
É similar à [[#Ver as turmas da Estrutura Curricular|Ver as turmas da Estrutura Curricular]], porém serão listadas as turmas criadas para os componentes curriculares equivalentes aos componentes da estrutura curricular que o discente está cursando. Em cada componente curricular, será detalhado a expressão de equivalência definida no [[http://www.info.ufrn.br/wikisistemas/doku.php?id=desenvolvimento:especificacoes:sigaa:graduacao:casos_de_uso:cdp:componentes_curriculares:cadastrar|cadastro do componente curricular]].
=== Buscar Turmas Abertas ===
Similar à [[#Ver as turmas da Estrutura Curricular|Ver as turmas da Estrutura Curricular]], mas com a diferença que as turmas não são listadas automaticamente. O discente, neste caso, utilizará um formulário para buscar por turmas ofertadas informando pelo menos um dos seguintes parâmetros:
  * **Código do Componente**: Formato - AAA9999. Tipo - TEXTO. Código do componente curricular.
  * **Nome do Componente**: Tipo - TEXTO. Nome, ou parte do nome, do componente curricular.
  * **Horário**: Tipo - TEXTO e NUMÉRICO. Horário da turma, utilizando o formato abreviado (M - Manhã; T - Tarde; N - Noite; de 1 à 6 - horário da aula. Ex.: 5M12).
  * **Nome do Docente**: Tipo - TEXTO. Nome do docente da turma.
  * **Unidade Responsável**: Tipo - TEXTO. Unidade responsável pela criação da turma.
A lista com o resultado da busca apresentará as turmas encontradas, com a opção de selecioná-la. A verificação de pré-requisitos, co-requisitos, ou choques de horários serão realizadas quando a opção "Adicionar Turmas" for selecionada ([[#principais_regras_de_negócio|RN09]]), ([[#principais_regras_de_negócio|RN10]]) e ([[#principais_regras_de_negócio|RN11]]).
=== Ver as Turmas Selecionadas ===
Ao adicionar uma turma para a matrícula, será dado ao usuário a possibilidade de ver as turmas selecionadas
No formulário será exibida as opções:
  * **Selecionar outro discente**: seleciona outro discente para efetuar a matrícula.
  * **Ver as turmas da Estrutura Curricular**: lista as turmas criadas para os componentes curriculares da estrutura curricular do curso do discente.
  * **Ver equivalentes a Estrutura Curricular**: lista as turmas criadas para os componentes curriculares equivalentes aos da estrutura curricular do curso do discente.
  * **Buscar Turmas Abertas**: busca por turmas abertas para componentes de outros currículos.
  * **Matricular Discente**: confirma a solicitação de matrícula.
  * **Sair sem salvar**: cancela a operação de solicitação de matrícula.
Em seguida, será exibido os detalhes do discente, com uma opção para gerar o histórico. 
De forma resumida serão exibidos:
  * **Turmas selecionadas**: exibe uma lista com as turmas selecionadas pelo usuário para matrícula. São detalhadas o código da turma, o componente curricular ([[#principais_regras_de_negócio|RN07]]), a carga horária/créditos, o docente e o local onde será ministrada a aula ([[#principais_regras_de_negócio|RN06]]). Ao final da listagem, será exibido o total de horas aula e créditos correspondentes.
  * **Horários das turmas selecionadas**: na forma tabular de calendário semanal, com os dias de segunda à sábado na parte superior e horários na parte lateral, a célula correspondente ao dia/hora de aula da turma é preenchida com o código do componente curricular correspondente, conforme o exemplo abaixo. 
|      ^  Seg  ^  Ter  ^  Qua  ^  Qui  ^  Sex  ^  Sab |
|  M1  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |
|  M2  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |
|  M3  |  ---  |  FIS0313  |  ---  |  FIS0313  |  ---  |  ---  |
|  M4  |  ---  |  FIS0313  |  ---  |  FIS0313  |  ---  |  ---  |
|  M5  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |
|  M6  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |
| |||||||
|  T1  |  DIM0109.1  |  ---  |  ---  |  ---  |  ---  |  ---  |
|  T2  |  DIM0109.1  |  ---  |  ---  |  ---  |  ---  |  ---  |
|  T3  |  ---  |  DIM0109.0  |  ---  |  DIM0109.0  |  ---  |  ---  |
|  T4  |  ---  |  DIM0109.0  |  ---  |  DIM0109.0  |  ---  |  ---  |
|  T5  |  ---  |  DIM0422  |  ---  |  DIM0422  |  ---  |  ---  |
|  T6  |  ---  |  DIM0422  |  ---  |  DIM0422  |  ---  |  ---  |
| |||||||
|  N1  |  MAT0312  |  ---  |  MAT0312  |  ---  |  MAT0312  |  ---  |
|  N2  |  MAT0312  |  ---  |  MAT0312  |  ---  |  MAT0312  |  ---  |
|  N3  |  FIS0701  |  ---  |  FIS0701  |  ---  |  FIS0701  |  ---  |
|  N4  |  FIS0701  |  ---  |  FIS0701  |  ---  |  FIS0701  |  ---  |
Neste passo será permitido ao Coord. de Graduação a alteração da matrícula do discente caso já tenha sido realizada alguma. As alterações realizadas pelo coordenador são registradas.
===Passo 3===
=== Matricular Discente ===
Ao confirmar as solicitações de matrículas nas turmas, será apresentado ao usuário um resumo da solicitação, com um número de solicitação de matrícula, informações ao usuário, e a lista de turmas selecionadas. A lista turmas detalha o código da turma, o código e nome do componente curricular, números de créditos, local de aulas e horário.
Em conformidade com as informações, o usuário confirma a operação em "Matricular Discente" ([[#principais_regras_de_negócio|RN12]], [[#principais_regras_de_negócio|RN13]] e [[#principais_regras_de_negócio|RN14]]), onde será dado ao usuário a confirmação da operação com a opção de imprimir o comprovante de solicitação de matrícula. Neste comprovante exibirá as informações do discente, a lista de turmas e horário conforme descrito em [[#Ver as turmas da Estrutura Curricular|Ver as turmas da Estrutura Curricular]].
Durante esse procedimento serão realizadas as devidas validações para o regime curricular do discente.
Como se trata de um comprovante, deverá exibir um [[http://www.info.ufrn.br/wikisistemas/doku.php?id=desenvolvimento:arquitetura:documentacao_desenvolvimento#autentica%C3%A7%C3%A3o_de_documentos|código de autenticação]].
O caso de uso é finalizado.
===== Principais Regras de Negócio =====
  * **RN01** - A matrícula só poderá ser realizada se os dados pessoais do discente estiverem atualizados. Os dados pessoais serão considerados desatualizados se até o início do período de matrículas não tenham sido atualizados.
  * **RN02** - Não é permitido extrapolar o limite de créditos mínimos e máximos por semestre definido no currículo do discente. A exceção é quando o discente foi especialmente autorizado pela coordenação de seu curso para tal.
  * **RN03** - Validações referentes às matrículas duplicadas em um mesmo componente
    - Caso um aluno tenha sido aprovado em uma componente pertencente a um bloco mas não no bloco todo, ele poderá se matricular novamente, mesmo que tenha sido aprovado
    - Caso o aluno tenha cumprido um componente através de uma equivalência ele não poderá se matricular nele.
  * **RN04** - Os co-requisitos do componente das turmas deverão ser respeitados
  * **RN05** - Os pré-requisitos do componente das turmas deverão estar integralizados (cumpridos previamente)
    * **OBS.**: O aluno pode ter cumprido um pré-requisito através de um ou mais componentes equivalentes.
  * **RN06** - Não é permitida a matrícula em turmas que tenha choque de horários
  * **RN07** - Não é permitida a matrícula em turmas oferecidas por unidades localizadas em municípios diferentes daquele do curso do aluno.
  * **RN08** - Caso um aluno se matricule em uma subunidade de um agrupamento, deverá se matricular em todas as outras
  * **RN09** - Não é permitido ao aluno matricular-se em mais de 16 créditos (parâmetro atual) de disciplinas que não pertençam ao seu currículo atual.
  * **RN10** - Somente componentes curriculares que possuem a propriedade ''MATRÍCULA ONLINE'' ativada poderão aparecer para o discente.
  * **RN11** - O discente não poderá realizar a matrícula on-line se antes não tiver finalizado a Avaliação Institucional.
  * **RN12** - O discente não poderá realizar a matrícula on-line se antes não tiver finalizado a Avaliação Institucional da Docência Assistida, se for o caso.
  * **RN11** - Caso a turma selecionada pelo discente já tenha tido a sua capacidade de alunos superada, a matrícula do discente está condicionada a desistência de outros, seja na seleção inicial da turma ou durante o processamento da matrícula.
  * **RN14** - Alunos de cursos a distância só realizam matrícula on-line caso o parametro ALUNO_EAD_FAZ_MATRICULA_ONLINE (2_10500_53) esteja configurado como TRUE.
  * **RN15** - Alunos de cursos a distância devem definir o horário da tutoria presencial antes de realizar a matrícula on-line através do menu SIGAA -> Portal Discente -> Ensino -> Definir horário de tutoria presencial.
  * **RN12** Quando o regime do curriculo do discente for o de bloco 
    - É mandatório realizar matricula em todas as disciplinas obrigatórias do nível atual.
    - Poderá optar por se matricular ou não nas optativas do seu currículo, respeitando os pré-requisitos e devendo cumpri-las de acordo com a carga horária mínima exigida desse tipo de componente.
    - Não poderá se matricular em disciplinas de níveis mais a frente ao que ele se encontra.
    - Não poderá optar pelas disciplinas obrigatório a serem cursadas, salvo os casos em que houver disciplinas em dependência de períodos passados.
    - Poderá optar pelo turno da turma, caso haja disponível mais de uma turma com reserva de vaga para determinada disciplina do seu nível.
    - Poderá se matricular nas disciplinas do período, mesmo tendo sido reprovado em todas do período anterior, respeitando a validação dos pré-requisitos para as disciplinas do semestre.
  * **RN13** Quando o regime do curriculo do discente for o de créditos
    - Poderá optar por se matricular ou não nas obrigatórias do seu período.
    - Poderá se matricular em disciplinas de níveis mais a frente ao que ele se encontra.
  * **RN14** - Em qualquer regime curricular o discente só poderá se matricular em componentes curriculares vinculadas ao currículo do seu curso. Caso seja uma disciplina equivalente a uma de seu currículo ele poderá pagar também.
  * **RN15** - O discente só poderá acessar a área de turmas abertas de componentes fora do seu currículo quando:
    - seu currículo tiver CH eletiva ("CH Máxima de Componentes Eletivos" maior que zero, ou o total da carga horária de Atividades Complementares Eletivas do currículo for maior que zero)
    - e se ainda não extrapolou o limite essa CH eletiva do seu currículo 
  * **RN16** - O discente só poderá se matricular em turmas de componentes do seu currículo que tiver reserva para sua matriz curricular ou nenhuma reserva para nenhuma matriz
  * **RN17** - Caso uma turma seja de um convênio específico e ela seja exclusiva para esse convênio (campo //Permitir alunos fora do convênio// no cadastro de turma), o discente só poderá matricular-se nela se ele também for desse convênio.
===== Classes Persistentes e Tabelas Envolvidas =====
^ Classe ^ Tabela |
| br.ufrn.sigaa.ensino.dominio.MatriculaComponente | sigaa.ensino.matricula_componente |
| br.ufrn.sigaa.ensino.dominio.Turma | sigaa.ensino.turma |
| br.ufrn.sigaa.ensino.dominio.ComponenteCurricular | sigaa.ensino.componente_curricular |
| br.ufrn.sigaa.ensino.dominio.DocenteTurma | sigaa.ensino.docente_turma |
| br.ufpi.sigaa.ensino.graduacao.dominio.AlteracaoMatriculaCoordenador | sigaa.graduacao.alteracao_matricula_coordenador |
| br.ufrn.sigaa.ensino.dominio.SituacaoMatricula | sigaa.ensino.situacao_matricula|
====== Plano de Teste ======
Sistema: SIGAA
Módulo: Graduação
Link(s): Matrículas e Programas -> Matrículas -> Matricular Aluno
Usuário: 
Papel que usuário deve ter: Possui a designação de coordenador de graduação. Isso pode ser realizado no Módulo Graduação > Administração > Coordenadores de Curso > Identificar Coordenador
===== Cenários de Teste =====
   - Tentar matricular em diversas turmas do currículo
   - Remover uma turma selecionada de um componente curricular obrigatório (quando o regime do currículo do discente for o de bloco) e tentar realizar a matrícula
   - Remover uma turma previamente cadastrada (alteração das matrículas do discente) de um componente obrigatório e do período corrente do discente
   - Selecionar turmas de outros currículos e que não sejam equivalentes a algum componente do currículo
   - Tentar matricular um aluno numa turma cujo componente curricular possua um pré-requisito que o aluno considerado tenha cumprido através de um outro componente curricular equivalente.
===== Dados para o Teste =====
   * Ajustar o período de matrículas on-line no calendário acadêmico para que seja permitida a realização dos testes
   * Cadastrar um curso e sua estrutura curricular
   * Criar as turmas para os componentes curriculares do curso
   * Cadastrar um discente regular vinculado ao curso cadastrado e criar o seu acesso através do cadastro na página inicial do SIGAA
   * Acessar o sistema com o discente cadastrado
   * Tentar realizar a matrícula verificando as regras de negócio
-- Encontrando uma pessoa para testar a verificação dos dados atualizados
select * from comum.pessoa where nome ilike 'nome do aluno que se deseja encontrar%'
-- Atualiza o campo 'ultima_atualizacao'
update comum.pessoa set
 ultima_atualizacao = 'data anterior ao dia em q se está testando. No formato: 2012-03-08 10:07:33.728' 
where id_pessoa = [id da pessoa encontrada na consulta acima]
-- Após a execução das cláusulas SQL, tentar acessar a matrícula com o discente que teve seus dados alterados acima.