~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Notificação de Relatórios Pendentes ====== Este caso de uso notifica um coordenador de ação de extensão caso o mesmo esteja pendente quanto ao envio de relatórios parciais ou finais. Um coordenador de ação de extensão é considerado pendente quanto ao envio de relatório parcial quando a ação de extensão está na metade e ainda não foi enviado o relatório parcial. Para o cálculo da metade da ação de extensão são consideradas as datas inicial e final da ação de extensão. Este caso de uso tenta impedir que um coordenador fique pendente quanto ao envio de relatório parcial notificando o coordenador 10 dias antes de completar metade da ação de extensão. O coordenador ao logar irá receber esta notificação. O sistema também o notificará quanto ao envio do relatório parcial durante 10 dias após a metada da ação, caso a pendência não tenha sido resolvida. Um coordenador é considerado pendente quanto ao envio de relatório final quando ultrapassou o tempo de execução da ação e não enviou o relatório final. Em outras palavras, o coordenador ainda não enviou o relatório final e a data final da ação já foi ultrapassada. Em ambos os casos não basta preencher os relatórios e salvar. Para se livrar da pendência o coordenador deve enviar o relatório em questão. E ainda, se o mesmo enviou o relatório e tal relatório tenha sido reprovado pelo departamento ou pela proex, o coordenador volta a ser pendente. ===== Descrição do Caso de Uso ===== O caso de uso inicia assim que o usuário realiza o login no sistema, mas somente se estiver com atraso no envio dos seus relatórios. Ao iniciar o caso de uso o coordenador pode visualizar a mensagem sobre a notificação em questão do atraso dos relatórios e verificar a listagem dos projetos que necessitam dos relatórios: * **__Tipo Relatório__** * **__Código__**: Tipo - TEXTO. * **__Título__**: Tipo - TEXTO. * **__Início__**: Tipo - DATA. * **__Fim__**: Tipo - DATA. * **__Situação__**: Tipo - TEXTO. * **__Data de Envio__**: Tipo - DATA. * **__Validado Depto.__**: Tipo - DATA. * **__Justificativa Depto.__**: Tipo - TEXTO. * **__Validado PROEx__**: Tipo - DATA. * **__Justificativa Proex__**: Tipo - TEXTO. Para cada projeto o coordenador pode realizar as seguintes operações: * //Cadastrar Relatório Parcial//, onde são apresentados e exigidos os seguintes dados do projeto: * **__Código__**: Tipo - TEXTO. * **__Título__**: Tipo - TEXTO. * **__Unidade proponente__**: Tipo - TEXTO. * **__Fontes de financiamento__**: Tipo - TEXTO. * **__Nº de Discentes envolvidos__**: Tipo - NUMÉRICO. * **Esta Ação foi realizada***: Tipo - LÓGICO. * **Atividades realizadas***: Tipo - TEXTO. * **Resultados obtidos: qualitativos***: Tipo - TEXTO. * **Resultados obtidos: quantitativos***: Tipo - TEXTO. * **Dificuldades encontradas***: Tipo - TEXTO. * **Ajustes realizados durante a execução da ação de extensão***: Tipo - TEXTO. * **__Público estimado__**: Tipo - NUMÉRICO. * **Público real atingido***: Tipo - NUMÉRICO. * **__Detalhamento de utilização dos recursos financeiros__**: Tipo - TEXTO. * **__Anexar Arquivo com outros detalhes da execução da ação__** * **Descrição***: Tipo - TEXTO. * **Arquivo**: Tipo - ARQUIVO. * **__Descrição do Arquivo__**: Tipo - TEXTO. * //Cadastrar Relatório Final//: segue a mesma estrutura de campos do relatório parcial. * //Editar/Enviar Relatório//: realiza a edição do relatório parcial/final cadastrado. * //Remover Relatório//: remove o relatório cadastrado. * //Ver Relatório//: visualiza o relatório cadastrado mostrando os campos fornecidos durante o cadastro dos mesmos. O usuário possui as opções de salvar um rascunho do relatório ou envia-los para análise dos gestores de extensão. O caso de uso é finalizado. ===== Principais Regras de Negócio ===== Não se aplica. ==== Resoluções/Legislações Associadas ==== Não se aplica. ===== Classes Persistentes e Tabelas Envolvidas ===== ^ Classe ^ Tabela ^ | br.ufrn.sigaa.extensao.dominio.AtividadeExtensao.java | extensao.atividade | | br.ufrn.sigaa.extensao.relatorio.dominio.RelatorioAcaoExtensao.java | extensao.relatorio_acao_extensao | | br.ufrn.sigaa.projetos.dominio.Projeto.java | projetos.projeto | | br.ufrn.sigaa.extensao.relatorio.dominio.TipoRelatorioExtensao.java | extensao.tipo_relatorio | ====== Plano de Teste ====== Sistema: SIGAA Módulo: Extensão Link(s): Logo após o login Usuários: Qualquer coordenador pendente quanto ao envio de relatórios. Papel que usuário deve ter: Deve ser coordenador de ação de extensão. ===== Cenários de Teste ===== Buscar coordenadores de ações de extensão pendentes quanto ao envio de relatório parcial ou final e, após isso, efetuar o login com tal coordenador. ===== Dados para o Teste ===== Utilizar o sequinte sql para buscar coordenadores pendentes quanto ao envio de relatórios. SELECT usuario.login, projeto1_.titulo, projeto1_.data_inicio, projeto1_.data_fim FROM extensao.atividade atividadee0_ INNER JOIN projetos.projeto projeto1_ ON atividadee0_.id_projeto=projeto1_.id_projeto INNER JOIN projetos.tipo_situacao_projeto tiposituac3_ ON projeto1_.id_tipo_situacao_projeto=tiposituac3_.id_tipo_situacao_projeto INNER JOIN projetos.membro_projeto membroproj4_ ON projeto1_.id_coordenador=membroproj4_.id_membro_projeto INNER JOIN comum.pessoa pessoa5_ ON membroproj4_.id_pessoa=pessoa5_.id_pessoa INNER JOIN comum.usuario AS usuario ON usuario.id_pessoa = pessoa5_.id_pessoa INNER JOIN extensao.tipo_atividade_extensao tipoativid2_ ON atividadee0_.id_tipo_atividade_extensao=tipoativid2_.id_tipo_atividade_extensao LEFT OUTER JOIN extensao.relatorio_acao_extensao relatorios6_ ON atividadee0_.id_atividade=relatorios6_.id_atividade LEFT OUTER JOIN extensao.tipo_relatorio tiporelato7_ ON relatorios6_.id_tipo_relatorio=tiporelato7_.id_tipo_relatorio WHERE (tiposituac3_.id_tipo_situacao_projeto IN (103 , 105, 117)) AND projeto1_.id_tipo_projeto=3 AND ( (cast(now() AS date) BETWEEN (cast(projeto1_.data_fim AS date)-cast(projeto1_.data_inicio AS date))/2+cast (projeto1_.data_inicio AS date)-10 AND (cast(projeto1_.data_fim AS date)-cast (projeto1_.data_inicio AS date))/2+cast(projeto1_.data_inicio AS date)+10) AND (atividadee0_.id_atividade NOT IN (SELECT atividadee9_.id_atividade FROM extensao.relatorio_acao_extensao relatorioa8_ INNER JOIN extensao.atividade atividadee9_ ON relatorioa8_.id_atividade=atividadee9_.id_atividade INNER JOIN extensao.tipo_relatorio tiporelato10_ ON relatorioa8_.id_tipo_relatorio=tiporelato10_.id_tipo_relatorio WHERE (relatorioa8_.data_envio IS NOT NULL) AND tiporelato10_.id_tipo_relatorio=1)) OR ( cast(now() AS date)>=cast(projeto1_.data_fim AS date) AND (atividadee0_.id_atividade NOT IN (SELECT atividadee12_.id_atividade FROM extensao.relatorio_acao_extensao relatorioa11_ INNER JOIN extensao.atividade atividadee12_ ON relatorioa11_.id_atividade=atividadee12_.id_atividade INNER JOIN extensao.tipo_relatorio tiporelato13_ ON relatorioa11_.id_tipo_relatorio=tiporelato13_.id_tipo_relatorio WHERE (relatorioa11_.data_envio IS NOT NULL) AND tiporelato13_.id_tipo_relatorio=2)) ) )