====== Especificação Funcional: Finalização do período letivo por curso ======
===== Resumo =====
Esta funcionalidade permite ao usuário finalizar todos os dados do período letivo, para cada curso cadastrado no sistema e que possua alunos matriculados.
===== Descrição =====
A finalização de um período letivo por curso faz com que todos os alunos e turmas sejam finalizados, sendo dessa forma, gerados automaticamente pelo sistema todos os históricos e atas de resultados finais do curso.
==== Finalização do período letivo ====
Ao acessar o módulo de Ferramentas / Finalizar período letivo..., o sistema deve exibir a tela de finalização do período letivo do curso selecionado.
Ao acessar o módulo de Cursos, o sistema deve exibir uma lista com os cursos cadastrados. Para finalizar o período letivo de um curso, basta selecionar o curso na lista e acessar a funcionalidade “Finalizar período letivo” na opção Ferramentas, no clique do botão direito do mouse na linha do curso na listagem ou utilizar as teclas de atalho Ctrl+Z, na visão Padrão; o sistema deverá então exibir a tela de finalização do período letivo do curso.
Ao clicar no botão Avançar, o sistema deve exibir outra tela ao usuário, a qual permitirá acompanhar todo o processo de finalização, onde cada ação descrita no processo deve ser cumprida e seguir a ordem em que são apresentadas na lista. À medida que o sistema executa cada ação, é exibida uma imagem na cor verde (como um confere) para identificar ao usuário que foi realizada com sucesso, caso alguma das ações apresente algum erro e não consiga ser executada, o sistema exibirá uma outra imagem na cor vermelha (como um X) para identificar ao usuário que a ação não foi realizada, e neste caso, o processo de finalização é interrompido e deve ser cancelado pelo usuário.
Após o processo de finalização, caso ele seja todo concluído com sucesso, o sistema irá finalizar o período letivo de todos os alunos matriculados para o curso informado.
==== Dados da Finalização do período letivo ====
Na finalização do período letivo deve existir os seguintes campos:
|< 100% 29% 50% 7% 7% 7%>|
^ Campo ^ Descrição ^ Tipo ^ Tamanho ^ Obrigatório? ^
|Curso |Nome do curso que deseja finalizar | Texto | - | Sim |
|Excluir históricos existentes do curso |Indica se serão excluídos os históricos existentes do curso na finalização do ano letivo ou não | - | - | Não |
|Calendário escolar (atual) |Calendário escolar atual do curso que será finalizado | Texto | - | Sim |
|Calendário escolar (próximo) |Próximo calendário escolar do curso que será finalizado | Texto | - | Sim |
|**__Opções de rematrícula para alunos com pré-matrícula/rematrícula__** |||||
|Matricular/rematricular alunos automaticamente ao finalizar o ano letivo |Indica se os alunos serão rematriculados automaticamente ou não | - | - | Não |
|Matricular alunos cadastrados automaticamente ao finalizar o ano letivo |Indica se os alunos cadastrados serão matriculados automaticamente ou não | - | - | Não |
|Utilizar a data da pré-matrícula como data da matrícula |Indica se será utilizada a data da pré-matrícula como data da matrícula ou não | - | - | Não |
|Data da matrícula |Data da rematrícula dos alunos para o próximo ano letivo (Caso a opção de Utilizar a data da pré-matrícula não for marcada) | - | - | Não |
==== Dados dos alunos nas atas de resultados finais finalizadas ====
Ao finalizar o período letivo e gerar as atas de resultados finais das turmas do curso, o sistema deve salvar os seguintes dados dos alunos no banco de dados, na tabela de alunos nas atas (TabAlunoAta):
|< 100% 25% 75%>|
^ Campo ^ Origem ^
|CODIGOINSTALACAOELETRICA | Campo CODIGOINSTALACAOELETRICA da tabela TabAluno. |
|BAIRRO | Campo BAIRRO da tabela TabAluno. |
|ZONARESIDENCIA | Campo ZONARESIDENCIA da tabela TabAluno. |
|UTILIZATRANSPORTE | Campo UTILIZATRANSPORTE da tabela TabAluno. |
|TRANSPORTEPUBLICO | Campo TRANSPORTEPUBLICO da tabela TabAluno. |
|TRANSPORTEMUNICIPAL | Campo TRANSPORTEMUNICIPAL da tabela TabAluno. |
|LOCALIDADETRANSPORTE | Campo LOCALIDADETRANSPORTE da tabela TabAluno. |
|NOMETRANSPORTADOR | Campo NOMETRANSPORTADOR da tabela TabAluno. |
|ROTA | Campo ROTA da tabela TabAluno. |
|BOLSAFAMILIA | Campo BOLSAFAMILIA da tabela TabAluno. |
|POSSUIDEFICIENCIA | Campo POSSUIDEFICIENCIA da tabela TabAluno. |
|ENVIADOCENSO | Valor recuperado de acordo com os dados dos alunos nas turmas, tabela TabAlunosTurmas, em relação à data de referência do censo. |
|ENVIADOCENSOFINAL | Valor recuperado de acordo com o campo EnviadoCenso e o campo PeriodoLetivo da tabela TabCalendarios (Anos letivos de 2º semestre não são enviados ao censo final) |
===== Configurações e preferências do usuário =====
Não se aplica.
===== Pontos de verificação =====
==== Na tela inicial ====
* Todos os campos obrigatórios devem ser preenchidos;
* O sistema deve exibir o campo Curso preenchido com o nome do curso selecionado para realizar a finalização; o campo deve estar sempre desabilitado;
* De acordo com o curso, o sistema deve:
* Exibir habilitada a opção "Excluir históricos existentes do curso", apenas se o curso possuir o campo "Gerar históricos automaticamente" desmarcado;
* Exibir o título do calendário atual do curso, no campo "Atual" da guia "Calendários escolares"; este campo deve estar sempre desabilitado;
* O sistema deve exibir habilitado o botão "Localizar um calendário", para que através dele, seja exibida a tela "Localizar calendário", contendo a lista de todos os calendários escolares cadastrados no sistema;
* Ao marcar a opção "Rematricular alunos automaticamente ao finalizar o ano letivo", o campo "Data da rematrícula" deve tornar-ser habilitado e obrigatório;
* A data da rematrícula não pode ser menor que a data de início ou ser maior que a data de término do próximo ano letivo;
* Quando a opção "Rematricular alunos automaticamente ao finalizar o ano letivo" estiver marcada:
* O sistema deverá rematricular todos os alunos matriculados no curso;
* O sistema deve habilitar as opções "Matricular alunos cadastrados automaticamente ao finalizar o ano letivo", "Utilizar a data da pré-matrícula como data da matrícula" e "Data da rematrícula";
* Quando a opção "Rematricular alunos automaticamente ao finalizar o ano letivo" estiver desmarcada:
* O sistema deve desabilitar as opções "Matricular alunos cadastrados automaticamente ao finalizar o ano letivo", "Utilizar a data da pré-matrícula como data da matrícula" e "Data da rematrícula";
* Quando a opção "Matricular alunos cadastrados automaticamente ao finalizar o ano letivo" estiver marcada:
* O sistema deve matricular todos os alunos cadastrados, que possuam pré-matrícula cadastrada no curso que está sendo finalizado;
* Quando a opção "Utilizar a data da pré-matrícula como data da matrícula" estiver marcada:
* O sistema deve utilizar a data da pré-matrícula de cada aluno, como a data da matrícula para o próximo ano letivo;
* O sistema deve desabilitar o campo "Data da rematrícula";
* Quando a opção "Utilizar a data da pré-matrícula como data da matrícula" estiver desmarcada:
* O sistema deve habilitar o campo "Data da rematrícula" e obrigar seu preenchimento;
* O sistema deve utilizar o valor do campo "Data da rematrícula", como a data da matrícula para todos os alunos que serão rematriculados para o próximo ano letivo;
* O botão "Avançar" deve manter-se desabilitado até que todos os campos obrigatórios estejam preenchidos; Ao clicá-lo, o sistema deve exibir a tela seguinte, a qual conclui o processo de finalização do ano letivo;
==== Na tela final ====
* A tela deve ser exibida contendo uma lista de ações que serão executadas durante o processo de finalização do período letivo, todas com as imagens em branco;
* O botão "Concluir" deve ser exibido habilitado, para que o usuário possa dar início ao processo;
* Após clicado no botão, o sistema deverá verificar se existe algum aluno matriculado e sem pré-matrícula cadastrada, e dessa forma então, avisar ao usuário que os alunos sem pré-matrícula não serão rematriculados e perguntar se deseja continuar a finalização. Caso o usuário clique em Sim, o sistema continuará o processo e de fato manterá esses alunos sem matrícula realizada (estará excluindo a matrícula dos alunos), mas com a pré-matrícula ainda cadastrada; caso clique em Não, o sistema deve cancelar a operação e desabilitar o botão "Concluir";
* Caso a ação seja executada com sucesso, sua imagem deve ser alterada para verde; Caso alguma ação não consiga ser executada, sua imagem deve ser alterada para um X na cor vermelha e o sistema deve interromper o processo, alertando ao usuário que cancele a operação;
* Após concluir todas as ações com sucesso, o sistema deve exibir uma mensagem ao usuário que o ano letivo foi finalizado;
* Segue abaixo cada ação que o sistema deverá executar durante a finalização do período letivo (deve existir pelo menos 1 aluno matriculado):
=== Verifica se o curso está liberado ===
* O sistema deve verificar se todos os alunos matriculados no curso estão com resultado final gerado, ou seja, diferente de Cursando;
* Caso exista um ou mais alunos matriculados no curso, com resultado final igual a Cursando, o sistema deve cancelar a finalização do ano letivo, marcando a ação com a imagem (X - vermelho) e informar que o curso possui alunos pendentes;
* Caso todos os alunos matriculados no curso possuam resultado gerado, o sistema deve então verificar se todos os alunos matriculados no curso possuem histórico. Essa verificação só deve ocorrer caso o curso gere históricos;
* Caso um ou mais alunos não possuam histórico do curso, o sistema deve cancelar a finalização do ano letivo, marcando a ação com a imagem (X - vermelho) e informar que o curso possui alunos sem históricos cadastrados;
* Caso o curso não gere históricos ou gere históricos e todos os alunos possuam históricos, o sistema deve liberar a ação marcando-a com a imagem (Confere - Verde);
=== Gera o backup dos dados ===
* O sistema deve gerar uma cópia do arquivo do banco de dados e armazená-lo no mesmo caminho do banco de dados, que é salvo no campo CaminhoBanco nas configurações do sistema;
* O arquivo deve ser nomeado da seguinte forma: "School Backup" + data + "_" + hora;
=== Inclui o período letivo 'xxxx' na tabela de anos letivos ===
* O sistema deve verificar se o próximo ano letivo já foi incluído realmente no banco;
* Caso o próximo período letivo não tenha sido incluído ainda, o sistema deve cancelar a finalização do período letivo, marcando a ação com a imagem (X - vermelho) e informar que não foi possível incluir o período letivo (selecionado pelo usuário, como próximo período letivo);
* Caso o próximo período letivo tenha sido incluído, o sistema deve liberar a ação marcando-a com a imagem (Confere - Verde);
=== Atualiza a série cursada nos históricos dos alunos matriculados ===
* Para os cursos que geram históricos:
* O sistema deve finalizar a série cursada nos históricos de todos os alunos matriculados no curso. Todos os dados da série no histórico devem ser atualizados, incluindo as disciplinas e o resultado dos alunos em cada uma (notas, aulas dadas, faltas...);
* Os alunos que tiverem sido: Evadido, Desistente, Transferido ou Falecido no final do ano letivo, não possuirão suas séries nos históricos atualizadas e sim excluídas;
* Esse processo deve ser todo realizado diretamente no banco de dados, através do procedimento: ProcGerarHistoricos; e caso algum erro ou exceção ocorra durante a execução desse processo, o sistema deve cancelar a finalização do ano letivo, marcando a ação com a imagem (X - vermelho) e informar que não possível atualizar os históricos dos alunos matriculados;
* Caso todos os históricos tenham sido atualizados, o sistema deve liberar a ação marcando-a com a imagem (Confere - Verde);
* Para os cursos que não geram históricos:
* Se a opção "Excluir históricos existentes do curso" estiver marcada, o sistema deve excluir todos os históricos existentes para o curso;
* Se a opção "Excluir históricos existentes do curso" estiver desmarcada, o sistema deve excluir as séries cursadas de todos os históricos existentes para o curso;
* Caso algum erro ou exceção ocorra durante a execução desse processo, o sistema deve cancelar a finalização do ano letivo, marcando a ação com a imagem (X - vermelho) e informar respectivamente que: não foi possível excluir os históricos existentes do curso ou excluir as séries cursadas nos históricos;
* Caso todos os históricos ou séries sejam excluídas, o sistema deve liberar a ação marcando-a com a imagem (Confere - Verde);
=== Gera as atas de resultados finais das turmas ===
* O sistema deve gerar e finalizar todas as atas de resultados finais para todas as turmas do curso;
* Esse processo deve ser todo realizado diretamente no banco de dados, através do procedimento: ProcGerarAtas; e caso algum erro ou exceção ocorra durante a execução desse processo, o sistema deve cancelar a finalização do ano letivo, marcando a ação com a imagem (X - vermelho) e informar que não possível gerar as atas de resultados finais das turmas;
* Caso todas as atas sejam geradas, o sistema deve liberar a ação marcando-a com a imagem (Confere - Verde);
=== Atualiza a situação do ano anterior de todos os alunos ===
* O sistema deve atualizar para todos os alunos matriculados:
* O campo "Ano anterior" deve receber o valor do campo Resultado final atual do aluno;
* No campo "Observações" deve ser adicionado a data de matrícula do aluno do ano letivo que está sendo finalizado;
* O sistema deve atualizar para todos os alunos cadastrados:
* O campo "Ano anterior" deve receber o valor "NÃO FREQUENTOU";
* O sistema deve atualizar para todos os alunos matriculados, o campo "Ano anterior" com o mesmo valor do campo "Resultado final" do aluno na ata, exceto quando o campo "Tipo resultado" do cadastro de aluno ata, for igual a: Avançado, Classificado, Reclassificado ou Remanejado;
* Caso algum erro ou exceção ocorra durante a execução desse processo, o sistema deve cancelar a finalização do ano letivo, marcando a ação com a imagem (X - vermelho) e informar que não foi possível atualizar a situação do ano anterior dos alunos;
* Caso todos os alunos matriculados e cadastrados sejam atualizados, o sistema deve liberar a ação marcando-a com a imagem (Confere - Verde);
=== Limpa os dados para inclusão de outros do novo ano letivo ===
* O sistema deve limpar todos os dados no banco de dados, referentes ao ano letivo letivo e curso que estão sendo finalizados;
* Os dados que devem ser excluídos são os seguintes:
* Todos os dados das tabelas TabNota, TabSubNota, TabMedia, TabAlunosDesempenhos, TabAlunosDesempFinais, TabAlunosTurmas, TabAulaDada e TabTurmaProfessor;
* Os campos CodigoServidor e Aulas Dadas da tabela TabTurma_Disciplina_Professor;
* Os campos CargaHoraria e Situacao (deve receber o valor "EM ABERTA") da tabela TabTurma;
* Esse processo deve ser todo realizado diretamente no banco de dados, através do procedimento: ProcLimparDadosPeriodoLetivo; e caso algum erro ou exceção ocorra durante a execução desse processo, o sistema deve cancelar a finalização do ano letivo, marcando a ação com a imagem (X - vermelho) e informar que não possível limpar os dados;
* Caso todos os dados sejam limpos, o sistema deve liberar a ação marcando-a com a imagem (Confere - Verde);
=== Rematricula ou desvincula os alunos das turmas ===
* Se a opção "Rematricular alunos automaticamente ao finalizar o ano letivo" estiver marcada:
* O sistema deve habilitar todos os campos referentes à opção na tela;
* O sistema deve desmatricular todos os alunos matriculados que estiverem sem pré-matrícula;
* O sistema deve gerar a rematrícula de todos os alunos matriculados que possuem pré-matrícula cadastrada, independente do resultado final do aluno: Aprovado, Promovido, Reprovado, Retido, Transferido, Evadido e Desistente;
* O sistema deve gerar a rematrícula com base nos dados informados na pré-matrícula de cada aluno, sem nenhuma verificação de escola, curso, série ou turma; ou seja, o que estiver informado, será realizado no momento da rematrícula na finalização do ano letivo;
* Ao realizar a matrícula do aluno (com base nos dados da pré-matrícula), o campo "Protocolo de pré-matrícula web" da matrícula é atualizado com o valor do mesmo campo informado na pré-matrícula. Como os dados da pré-matrícula são apagados após a realização da matrícula, o valor desse campo também é removido, mantendo-o apenas na matrícula;
* O sistema deve criar os históricos dos alunos que ainda não possuem o documento, para o curso no qual estão sendo rematriculados. Por exemplo, ao finalizar o curso de Educação infantil: para os alunos das turmas de 5 anos (que é a série final do curso) que foram pré-matriculados no ensino fundamental, o sistema deve criar os históricos do curso de Ensino fundamental (caso esteja marcada a opção "Gerar históricos automaticamente" no curso) no momento da finalização do curso de Educação infantil; o sistema deve criar também a série da rematrícula ou matrícula nos históricos de todos os alunos;
* O sistema não deve gerar a rematrícula apenas para os alunos Falecidos, para esses alunos, os dados da pré-matrícula também deverão ser apagados;
* Se a opção "Matricular alunos cadastrados automaticamente ao finalizar o ano letivo" estiver marcada:
* O sistema deve gerar a matrícula de todos os alunos cadastrados que possuem pré-matricula cadastrada;
* Se a opção "Matricular alunos cadastrados automaticamente ao finalizar o ano letivo" estiver desmarcada:
* O sistema não deve gerar matrícula para nenhum aluno cadastrado que possuir pré-matrícula cadastrada;
* Se a opção "Utilizar a data da pré-matrícula como data da matrícula" estiver marcada:
* O sistema deve desabilitar o campo "Data da rematrícula";
* O sistema deve utilizar a data informada na pré-matrícula de cada aluno, como a data da matrícula;
* Se a opção "Utilizar a data da pré-matrícula como data da matrícula" estiver desmarcada:
* O sistema deve habilitar o campo "Data da rematrícula" e obrigar seu preenchimento;
* O sistema deve utilizar a data da rematrícula informada no campo, para todos os alunos que serão rematriculados, como a data da matrícula;
* Se a opção "Rematricular alunos automaticamente ao finalizar o ano letivo" estiver desmarcada:
* O sistema deve desabilitar todos os campos referentes à opção na tela;
* O sistema deve desmatricular todos os alunos matriculados;
==== Após a finalização ====
* Após finalizado o ano letivo, todos os alunos que não foram rematriculados, mas que possuíam pré-matrículas cadastradas, são listados no módulo de Alunos na visão "Pré-matrículas"; e devem possuir valor igual a "SIM" para o campo "Pré-matriculado" da listagem de alunos; para os demais alunos que foram rematriculados, estes devem possuir valor igual a "NÃO" para o campo "Pré-matriculado", pois durante a finalização do ano letivo, o sistema deve limpar os dados da pré-matrícula para todos os alunos que são rematriculados pelo sistema;
* Se o curso gerar históricos automaticamente, todos os alunos matriculados devem ter seus históricos finalizados para o ano letivo, contendo suas séries cursadas com seus respectivos resultados, somente se o aluno atingiu resultados finais como: Aprovado, Promovido, Reprovado, Retido ou Avançado; para os demais resultados, não deve existir a série no histórico para o ano letivo finalizado;
* Todas as atas de resultados finais devem ser geradas pelo sistema, contendo todos os alunos matriculados em suas respectivas turmas;
* No cadastro do curso finalizado, o período letivo deve estar conforme o próximo ano letivo informado durante a finalização;
* Todos os dados dos alunos e turmas para o novo ano letivo devem estar limpos;
===== Observações =====
~~DISCUSSION|Sugira mudanças, aponte falhas ou contribua de alguma forma aqui:~~