~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Listar Memorandos Enviados ====== Este caso de uso possibilita o acompanhamento dos Memorandos Eletrônicos [[desenvolvimento:especificacoes:sipac:protocolo:casos_de_uso:memorandos:cadastro:cadastrar_memorando | enviados]] ou [[desenvolvimento:especificacoes:sipac:protocolo:casos_de_uso:memorandos:autenticacao:autenticar | autenticados]] pelo usuário e que já foram enviados ao seu destino. Nesse caso de uso também é permitido o cancelamento dos mesmos. 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 -> Memorandos -> Consultas -> Listar Enviados//. 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: * **Número/Ano**: Tipo NUMÉRICO, formato: ...9/AAAA. * **Ano**: Tipo NUMÉRICO, formato: AAAA. * **Identificador**: Tipo NUMÉRICO. * **Assunto (Título)**: Tipo TEXTO. * **Unidade de Origem**: Tipo AUTOCOMPLETE, formato: DENOMINAÇÃO UNIDADE (CÓDIGO UNIDADE), entrada de dados: DENOMINAÇÃO ou CÓDIGO. * **Cadastrado por**: Tipo AUTOCOMPLETE, formato: NOME USUÁRIO (LOGIN), entrada de dados: NOME ou LOGIN. * **Servidor de Assinatura**: Tipo AUTOCOMPLETE, formato: NOME USUÁRIO (LOGIN), entrada de dados: NOME ou LOGIN. * **Unidade de Destino**:Tipo AUTOCOMPLETE, formato: DENOMINAÇÃO UNIDADE (CÓDIGO UNIDADE), entrada de dados: DENOMINAÇÃO ou CÓDIGO. * **Tipo**: Tipo TEXTO. São exibidas as opções de: Todos, Memorando Eletrônico ou Memorando Circular. * **Data de Cadastro**: Formato - DD/MM/AAAA a DD/MM/AAAA. Tipo - DATA. * **Todos os Memorandos**: Tipo LÓGICO. É exibida uma lista com os memorandos [[desenvolvimento:especificacoes:sipac:protocolo:casos_de_uso:memorandos:cadastro:cadastrar_memorando | enviados]]. São exibidas as seguintes informações sobre os memorandos: * **__Documento__**: Tipo TEXTO, formato: ...9/AAAA - SIGLA UNIDADE. * **__Identificador__**: Tipo NUMÉRICO. * **__Enviado Em__**: Tipo DATA. * **__Assunto__**: Tipo TEXTO. * **__Leituras__**: Tipo - NUMÉRICO. * **__Destino__**: Tipo TEXTO, formato: UNIDADE (CÓDIGO DA UNIDADE) ou SERVIDOR (MATRÍCULA DO SERVIDOR). E para cada memorando as seguintes opções: * //[[desenvolvimento:especificacoes:sipac:protocolo:casos_de_uso:memorandos:consultas:visualizar_memorando | Visualizar Memorando]]// * Ao ser selecionada, essa opção permite a leitura do memorando pelo usuário. * //[[desenvolvimento:especificacoes:sipac:protocolo:casos_de_uso:memorandos:consultas:memorando_detalhado | Memorando Detalhado]]// * Ao ser selecionada, são disponibilizadas informações detalhadas acerca desse documento. * //[[desenvolvimento:especificacoes:sipac:protocolo:casos_de_uso:memorandos:consultas:cancelar_memorando | Cancelar Memorando]]// * Opção utilizada para cancelar o memorando em questão * //[[desenvolvimento:especificacoes:sipac:protocolo:casos_de_uso:memorandos:consultas:visualizar_leituras|Visualizar Leituras]]// * Ao ser selecionada, é exibida uma lista com todos os usuários que leram o memorando em questão. * //**Exportar Memorando para .doc**//: * Exporta o memorando para um arquivo .doc. ===== Principais Regras de Negócio ===== * **RN01** - Serão exibidos apenas o memorandos enviados: - Cadastrados pelo usuário - Assinados pelo usuário, ou seja, autenticados por eles. - Encaminhados pelo usuário - Originários da unidade de responsabilidade do usuário, ou seja, caso o usuário seja chefe, vice-chefe, gerente ou secretário da unidade de origem do memorando. * **RN02** - Um memorando não poderá ser **//removido//** caso o usuário não seja seu criador ou autenticador. * **RN03** - Um memorando não poderá ser **//removido//** caso esteja adicionado a algum processo. * **RN04** - Caso o parâmetro LISTAR_TODOS_MEMORANDOS_UNIDADE esteja habilitado, serão listados todos os memorandos enviados pela unidade do usuário logado. ==== 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): Memorandos -> Consultas -> Listar Enviados Usuário: marcilia, jbb, paulinho. Papel que usuário deve ter: Sem checagem de papéis. ===== Cenários de Teste ===== - Ao enviar um memorando deve-se verificar se este está visível na listagem de memorandos enviados pelo usuário. - Os servidores de assinatura também deverão visualizar o memorando em sua listagem de memorandos enviados. - Os chefes, vice-chefes, gerentes e secretários, da unidade de origem do memorando, também deverão visualizar o memorando em sua listagem de memorandos enviados. ===== Dados para o Teste ==== * Para obter o identificador de uma unidade podemos usar a seguinte consulta: 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) * A partir do identificador da unidade podemos adquirir os dados do servidor, usuário e pessoa, responsáveis da unidade, com a seguinte consulta: 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 = 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: * Usando como base a consulta: 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 = 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 = 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__**: * Para **TODOS** os memorandos que poderão ser vistos pelo usuário: AND ( doc.id_usuario = OR (aut.id_autenticador = AND aut.id_registro_inativacao IS NULL) OR movimento.encaminhado = true OR usuario_unidade.responsavel = true) * Apenas para os memorandos cadastrados pelo usuário: AND doc.id_usuario = * Apenas para os memorandos autenticados pelo usuário: AND aut.id_autenticador = AND aut.id_registro_inativacao IS NULL * Apenas para os memorandos encaminhados pelo usuário: AND movimento.encaminhado = true * Para restringir apenas aos memorandos vistos pelos responsáveis, caso não seja quem cadastrou/autenticou/encaminhou, podemos usar a seguinte cláusula: AND (doc.id_usuario != --Não sendo o usuário que cadastrou AND (aut.id_autenticador != 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)