Tabela de conteúdos

~~ODT~~

Última atualização: 2017/04/03 18:22 (edição externa)

Meus Memorandos

Este caso de uso possibilita o acompanhamento dos Memorandos Eletrônicos enviados ou autenticados pelo usuário. Os chefes, vice-chefes, gerentes e secretários também poderão visualizar os memorandos originários da sua unidade.

Todos os servidores ativos da instituição que possuem acesso ao módulo de protocolo podem acessar esta funcionalidade.

Descrição do Caso de Uso

Este caso de uso inicia quando o usuário acessa a opção: SIPAC → Protocolo → Consultas/Relatórios → Memorandos → Meus Memorandos.

O caso de uso inicia exibindo uma série de opções para filtrar as buscas pelos processos enviados.

Os seguintes filtros podem ser utilizados:

São exibidas as seguintes informações sobre os memorandos consutlados:

E para cada memorando as seguintes opções:

Principais Regras de Negócio

Resoluções/Legislações Associadas

Não se Aplica.

Classes Persistentes e Tabelas Envolvidas

Classe Tabela
br.ufrn.sipac.protocolo.dominio.Documento administrativo.protocolo.documento
br.ufrn.sipac.protocolo.dominio.TipoDocumentoProtocolo administrativo.protocolo.tipoDocumento
br.ufrn.sipac.protocolo.dominio.LeituraDocumento administrativo.protocolo.leitura_documento
br.ufrn.sipac.protocolo.dominio.AutenticadorDocumento administrativo.protocolo.autenticador_documento

Plano de Teste

Sistema: SIPAC

Módulo: Protocolo

Link(s): Protocolo → Consultas/Relatórios → Memorandos → Meus Memorandos

Usuário: marcilia, jbb, paulinho.

Papel que usuário deve ter: Sem checagem de papéis.

Cenários de Teste

- Verificar se os memorandos nas quatro situações abaixo, seguindo as regras de negócio, estão sendo mostrados nesse caso de uso:

Dados para o Teste

SELECT u.id_unidade, u.sigla, u.codigo_unidade, u.nome 
FROM comum.unidade u
WHERE 1 = 1
AND u.id_unidade =           -- (Opcional)
AND u.sigla = ''             -- (Opcional)
AND u.codigo_unidade =       -- (Opcional)
AND u.nome LIKE ''           -- (Opcional)
SELECT r.id_servidor, us.id_usuario, us.login, p.id_pessoa, p.nome, r.id_unidade, u.nome   
FROM comum.responsavel_unidade r  
     INNER JOIN rh.servidor s ON s.id_servidor = r.id_servidor
     INNER JOIN comum.pessoa p ON p.id_pessoa = s.id_pessoa	
     INNER JOIN comum.unidade u ON u.id_unidade = r.id_unidade
     INNER JOIN comum.usuario us ON us.id_pessoa = p.id_pessoa   	
WHERE r.id_unidade = <IDENTIFICADOR DA UNIDADE> 
AND (r.data_fim >= CURRENT_TIMESTAMP OR r.data_fim IS NULL)  
AND r.nivel_responsabilidade IN  ( 'C','V','G','S' )     

Com os dados dos identificadores do usuário e do servidor, podemos consultar os dados do memorando a partir do seguintes códigos:

SELECT DISTINCT doc.iddocumento, doc.identificacao, doc.ano, unidade.sigla
FROM protocolo.documento doc 
     INNER JOIN protocolo.autenticador_documento aut ON doc.iddocumento = aut.id_documento
     INNER JOIN comum.unidade unidade ON doc.idunidade = unidade.id_unidade
     LEFT JOIN (SELECT COUNT(*) > 0 AS encaminhado, iddocumento, idusuarioorigem 
		FROM protocolo.movimento_documento m 
		WHERE encaminhamento = TRUE 
		AND idusuarioorigem = <IDENTIFICADOR DO USUÁRIO>
		GROUP BY iddocumento, idusuarioorigem) AS movimento ON (movimento.iddocumento = doc.iddocumento) 
     LEFT JOIN (SELECT COUNT(r.id_unidade) > 0 AS responsavel, r.id_unidade   
		FROM comum.responsavel_unidade r   	
		WHERE r.id_servidor = <IDENTIFICADOR DO SERVIDOR>
		AND (r.data_fim >= CURRENT_TIMESTAMP OR r.data_fim IS NULL)  
		AND r.nivel_responsabilidade IN  ( 'C','V','G','S' )     
		GROUP BY r.id_unidade) AS usuario_unidade ON (usuario_unidade.id_unidade = doc.idunidade)  
WHERE doc.idtipodocumento IN ( 976,980 ) 
AND doc.status IN  ( 1,2,4,5,6,7,8,9 ) 
AND doc.iddocumento_principal IS NULL 
ORDER BY doc.iddocumento DESC         

Usar:

AND ( doc.id_usuario = <IDENTIFICADOR DO USUÁRIO>
      OR (aut.id_autenticador = <IDENTIFICADOR DO SERVIDOR> AND aut.id_registro_inativacao IS NULL)
      OR movimento.encaminhado = TRUE 	    	   
      OR usuario_unidade.responsavel = TRUE)  	    	
AND doc.id_usuario = <IDENTIFICADOR DO USUÁRIO>
AND aut.id_autenticador = <IDENTIFICADOR DO SERVIDOR> 
AND aut.id_registro_inativacao IS NULL
AND movimento.encaminhado = TRUE 	    	
AND (doc.id_usuario != <IDENTIFICADOR DO USUÁRIO>                                                       --Não sendo o usuário que cadastrou
     AND (aut.id_autenticador != <IDENTIFICADOR DO SERVIDOR> OR aut.id_registro_inativacao IS NOT NULL) --Nem um dos autenticadores do memorando
     AND (movimento.encaminhado IS NULL OR movimento.encaminhado = FALSE)	                        --Nem o usuário que o encaminhou
     AND (usuario_unidade.responsavel = TRUE)                                                           --E sendo responsável pela unidade 
) IS TRUE  -- (FALSE para obter apenas os cadastrados/autenticados/encaminhados)