~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Timer de Notificação de Designações com Término Determinado ====== O Objetivo deste timer, é avisar com antecedência ao servidor responsável do Departamento de Administração de Pessoal e aos servidores designados, a proximidade do fim das designações cadastradas. ===== Descrição do Caso de Uso ===== Este caso de uso não é acessível através de links. É executado uma vez por dia, e trabalha da seguinte forma: São localizados as designações com término determinado que faltam a quantidade de dias definida no Parâmetro para o fim, com base na data atual, então é enviado um email para os servidor responsáveis do Departamento de Pessoal no seguinte formato: Assunto: Aviso de notificação a servidores com término de designação próximo Caro(a) <>, Os seguintes servidores foram notificados em relação a proximidade do fim de suas designações: <> Esta mensagem é automática e não deve ser respondida E um e-mail para cada servidor que tenha a designação com fim retornado na consulta. Assunto: Notificação de designação com término próximo Prezado Dirigente, Informamos que o mandato de <> do(a) <> encerra-se no dia <>. Solicitamos que sejam tomadas as providências necessárias à eleição do novo dirigente para a unidade, lembrando que o acesso às funcionalidades de chefia será encerrado na data acima mencionada. Estamos à disposição para qualquer esclarecimento. Atenciosamente, <> Chefia/Diretoria do(a) <> Esta mensagem foi gerada automaticamente pelo sistema e não deve ser respondida. o caso de uso é finalizado. ===== Principais Regras de Negócio ===== * **RN01** - O Parâmetro localizado em ParametrosGerais.PERIODO_PROXIMO_VIGENCIA indica a quantidade de dias de antecedência para o fim da designação do servidor. Caso seja encontrado algum servidor nessa situação, os e-mails são enviados. ==== Resoluções/Legislações Associadas ==== Não se Aplica. ===== Classes Persistentes e Tabelas Envolvidas ===== ^ Classe ^ Tabela | | br.ufrn.sigrh.funcional.timer.DesignacoesTerminoDeterminadoTimer | Comum.infra.registro_timer | | br.ufrn.sigrh.funcional.dominio.Designacao | Administrativo.rh.designacao | ====== Plano de Teste ====== Sistema: SIGPRH Módulo: - Link(s): - Usuário: - ===== Cenários de Teste ===== Para testar este timer, ajuste os parâmetros em comum.infra.registros_timer, para a execução deste timer e acompanhe se os emails para os servidores e para os responsáveis do DAP são enviados. ===== Dados para o Teste ===== * Caso a consulta por designações não retorne valores, realize o cadastro de uma nova designação, com fim compatível com a quantidade de dias presentes no parâmetro utilizado. [[desenvolvimento:especificacoes:sigrh:administracao_de_pessoal:casos_de_uso:cadastros:registros_para_o_servidor:designacao:cadastrar|Cadastrar Designação]] * A consulta SQL abaixo retorna o responsável da unidade com base no id da unidade e no nível de responsabilidade. SELECT RU.*, U.NOME AS NOME_UNIDADE, S.SIAPE AS MATRICULA,P.NOME AS NOME_SERVIDOR, P.ID_PESSOA, P.EMAIL AS EMAIL_PESSOA, LOT.ID_UNIDADE AS ID_UNIDADE_LOTACAO, LOT.NOME AS NOME_UNIDADE_LOTACAO FROM COMUM.RESPONSAVEL_UNIDADE RU JOIN COMUM.UNIDADE U ON U.ID_UNIDADE = RU.ID_UNIDADE JOIN RH.SERVIDOR S ON S.ID_SERVIDOR = RU.ID_SERVIDOR JOIN COMUM.PESSOA P ON S.ID_PESSOA = P.ID_PESSOA JOIN COMUM.UNIDADE LOT ON S.ID_UNIDADE = LOT.ID_UNIDADE WHERE RU.ID_UNIDADE = ? AND RU.ID_REGISTRO_ENTRADA_EXCLUSAO IS NULL AND RU.NIVEL_RESPONSABILIDADE = '?' AND RU.DATA_INICIO <= CURRENT_DATE AND (RU.DATA_FIM IS NULL OR RU.DATA_FIM >= CURRENT_DATE) AND RU.ID_UNIDADE = LOT.ID_UNIDADE ORDER BY RU.DATA_CADASTRO DESC * A consulta abaixo, retorna as designações com término de terminado que se encerram na data informada. SELECT d.inicio as inicio, d.fim as fim, p.nome as nomePessoa, p.email as emailpessoa, a.descricao as descatividade, u.nome as nomeunidade, r.nivel_responsabilidade as nivelresponsa, CAST(n.nivel AS VARCHAR) as nivel, gd.descricao as descgrupoivel FROM rh.designacao d left join funcional.nivel_designacao n on (d.id_nivel_designacao = n.id_nivel_designacao) left join funcional.grupo_nivel_designacao gd on (n.id_grupo_nivel_designacao = gd.id_grupo_nivel_designacao) inner join rh.atividade a on (d.id_atividade = a.id_atividade) inner join comum.unidade u on (d.id_unidade = u.id_unidade) inner join rh.servidor s on (d.id_servidor = s.id_servidor) inner join comum.pessoa p on (s.id_pessoa = p.id_pessoa) left join comum.responsavel_unidade r on (d.id_responsavel_unidade = r.id OR r.id_designacao = d.id_designacao ) WHERE 1=1 AND d.fim IS NOT NULL AND d.fim = '?'