Tabela de conteúdos

~~ODT~~

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

Processos Movimentados por Tipo

Uma unidade pode movimentar vários processos de vários tipos durante um período.

Este caso de uso tem como finalidade gerar relatórios de movimentação de tipos de processos de uma ou mais unidades em dado período de tempo. O relatório apresentará a quantidade de processos do mesmo tipo movimentados em cada unidade e o tempo médio no qual estes processos permaneceram nesta unidade.

Esses relatórios podem ser gerados por qualquer usuário do sistema.

Descrição do Caso de Uso

Esse caso de uso se inicia quando o usuário acessa o caminho: Módulos → Protocolo → Consultas/Relatórios → Relatórios → Processos Movimentados por Tipo (RN05)

O caso de uso mostra os critérios para a geração dos relatórios:

Caso o usuário deseje, também é possível detalhar o relatório pelos seguintes filtros:

O relatório é gerado seguindo o modelo:

RELATÓRIO DE PROCESSOS MOVIMENTADOS POR TIPO

Movimentações de Envio de Processo
Unidade Quantidade Tempo Médio na Unidade
NOME DA UNIDADE (CÓDIGO DA UNIDADE)
TIPO DO PROCESSO 999 9 dia(s) 00:00:00
—— —— ——
Total na Unidade 999999 9 dia(s) 00:00:00
NOME DA UNIDADE (CÓDIGO DA UNIDADE)
TIPO DO PROCESSO 999 9 dia(s) 00:00:00
—— —— ——
Total na Unidade 999999 9 dia(s) 00:00:00
Total de Envio 999999 9 dia(s) 00:00:00
Movimentações de Recebimento de Processo
Unidade Quantidade Tempo Médio na Unidade
NOME DA UNIDADE (CÓDIGO DA UNIDADE)
TIPO DO PROCESSO 999 9 dia(s) 00:00:00
—— —— ——
Total na Unidade 999999 9 dia(s) 00:00:00
NOME DA UNIDADE (CÓDIGO DA UNIDADE)
TIPO DO PROCESSO 999 9 dia(s) 00:00:00
—— —— ——
Total na Unidade 999999 9 dia(s) 00:00:00
Total de Recebimento 999999 9 dia(s) 00:00:00

Para o caso do tipo de movimentação selecionada pelo Usuário for “Ambos”, então teremos a tabela de totais no fim do relatório, seguindo o seguinte padrão

Totais
Movimentação Quantidade Tempo Médio na Unidade
Envio 999999 9 dia(s) 00:00:00
Recebimento 999999 9 dia(s) 00:00:00
Total Geral 999999 9 dia(s) 00:00:00

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.Movimento administrativo.protocolo.movimento
br.ufrn.sipac.protocolo.dominio.Processo administrativo.protocolo.processo
br.ufrn.sipac.protocolo.dominio.TipoProcesso administrativo.protocolo.tipoprocesso
br.ufrn.sipac.cadastro.dominio.Unidade administrativo.comum.unidade

Plano de Teste

Sistema: SIPAC

Módulo: PROTOCOLOS

Link(s): Módulos → Protocolo → Consultas/Relatórios → Relatórios → Processos Movimentados por Tipo

Usuário: marcilia, jbb, paulinho

Papel que usuário deve ter: Ser usuário do SIPAC.

Cenários de Teste

Verificar se as quantidades e tempos médios dos tipos de processo nas unidades, para o período informado, estejam corretos. Para verificar os movimentos dos processos e suas datas de envio e recebimento acesse:

Dados para o Teste

SELECT uo.nome AS undiade_envio, COUNT (t.idtipoprocesso) AS qtd_enviada, t.denominacao AS tipo
FROM protocolo.movimento mov
     INNER JOIN protocolo.processo p ON p.id_processo = mov.id_processo
     INNER JOIN protocolo.tipoprocesso t ON t.idtipoprocesso = p.id_tipo_processo
     INNER JOIN comum.unidade uo ON uo.id_unidade = mov.id_unidade_origem
WHERE 1 = 1 
AND t.idtipoprocesso = <ID DO TIPO DO PROCESSO> -- Opcional
AND mov.id_unidade_origem = <ID DA UNIDADE QUE ENVIOU OS PROCESSOS> -- Opcional
AND mov.data_envio_origem > '2012-01-01 00:00:00.00' -- Informar o período desejado
AND mov.data_envio_origem < '2013-01-01 00:00:00.00' -- Informar o período desejado
GROUP BY uo.nome, t.denominacao
ORDER BY uo.nome, t.denominacao DESC
SELECT ud.nome AS undiade_destino, COUNT (t.idtipoprocesso) AS qtd_recebida, t.denominacao AS tipo
FROM protocolo.movimento mov
     INNER JOIN protocolo.processo p ON p.id_processo = mov.id_processo
     INNER JOIN protocolo.tipoprocesso t ON t.idtipoprocesso = p.id_tipo_processo
     INNER JOIN comum.unidade ud ON ud.id_unidade = mov.id_unidade_destino
WHERE 1 = 1 
AND t.idtipoprocesso = <ID DO TIPO DO PROCESSO> -- Opcional
AND mov.id_unidade_destino = <ID DA UNIDADE QUE RECEBEU OS PROCESSOS> -- Opcional
AND mov.data_envio_origem > '2012-01-01 00:00:00.00' -- Informar o período desejado
AND mov.data_envio_origem < '2013-01-01 00:00:00.00' -- Informar o período desejado
GROUP BY ud.nome, t.denominacao
ORDER BY ud.nome, t.denominacao DESC

O tempo no qual um processo permaneceu numa unidade é calculado a partir da diferença entre a data de saída, de envio, do processo da unidade pela última data de entrada, de recebimento, do processo nesta unidade. Assim, podemos calcular estas diferenças obtendo estas datas a partir da seguintes consultas:

SELECT uo.nome AS unidade_envio, 
       t.denominacao AS tipo, 
       (SELECT MAX(movReceb.data_recebimento_destino) 
        FROM protocolo.movimento movReceb 
        WHERE movReceb.id_processo = m.id_processo 
        AND movReceb.id_movimento < m.id_movimento 
        AND movReceb.data_recebimento_destino < m.data_envio_origem) AS data_recebimento_origem,
        m.data_envio_origem
FROM protocolo.movimento m 
     LEFT OUTER JOIN comum.UNIDADE uo ON m.id_unidade_origem = uo.id_unidade 
     LEFT OUTER JOIN comum.UNIDADE ud ON m.id_unidade_destino = ud.id_unidade 
     INNER JOIN protocolo.processo p ON m.id_processo = p.id_processo 
     INNER JOIN protocolo.tipoprocesso t ON p.id_tipo_processo = t.idtipoprocesso 
WHERE 1=1 
AND t.idtipoprocesso = <ID DO TIPO DO PROCESSO> -- Opcional
AND m.id_unidade_origem = <ID DA UNIDADE QUE ENVIOU OS PROCESSOS> -- Opcional
AND m.data_envio_origem >= '2012-01-01 00:00:00.00' -- Informar o período desejado 
AND m.data_envio_origem <= '2013-01-01 00:00:00.00' -- Informar o período desejado 
ORDER BY uo.nome, uo.id_unidade, t.denominacao
SELECT ud.nome AS unidade_envio, 
       t.denominacao AS tipo,
       m.data_recebimento_destino, 
       (SELECT MIN(movEnv.data_envio_origem) 
        FROM protocolo.movimento movEnv 
        WHERE movEnv.id_processo = m.id_processo 
        AND movEnv.id_movimento > m.id_movimento 
        AND movEnv.data_envio_origem > m.data_recebimento_destino) AS data_envio_destino -- Quando ele foi enviado, após recebido
FROM protocolo.movimento m 
     LEFT OUTER JOIN comum.UNIDADE uo ON m.id_unidade_origem = uo.id_unidade 
     LEFT OUTER JOIN comum.UNIDADE ud ON m.id_unidade_destino = ud.id_unidade 
     INNER JOIN protocolo.processo p ON m.id_processo = p.id_processo 
     INNER JOIN protocolo.tipoprocesso t ON p.id_tipo_processo = t.idtipoprocesso 
WHERE 1=1 
AND t.idtipoprocesso = <ID DO TIPO DO PROCESSO> -- Opcional
AND m.id_unidade_destino = <ID DA UNIDADE QUE RECEBEU OS PROCESSOS> -- Opcional
AND m.data_recebimento_destino >= '2012-01-01 00:00:00.00' -- Informar o período desejado 
AND m.data_recebimento_destino <= '2013-01-01 00:00:00.00' -- Informar o período desejado 
ORDER BY ud.nome, ud.id_unidade, t.denominacao