~~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.

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:

  • Período (RN01): Formato - DD/MM/AAAA a DD/MM/AAAA, Tipo - DATA.
  • Tipo de Movimentação (RN02): Formato: 'Envio' | 'Recebimento' | 'Ambos', Tipo - TEXTO e LÓGICO.

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

  • Unidade (RN03): Formato - CÓDIGO DA UNIDADE | NOME DA UNIDADE, Tipo - NUMÉRICO e TEXTO.
  • Tipo de Processo (RN04): Tipo: TEXTO.

O relatório é gerado seguindo o modelo:

RELATÓRIO DE PROCESSOS MOVIMENTADOS POR TIPO

  • Período: Formato - DD/MM/AAAA a DD/MM/AAAA, Tipo - DATA.
  • Tipo de Movimentação: Tipo: TEXTO (Envio | Recebimento | Ambos).
  • Unidade: Formato - NOME DA UNIDADE (CÓDIGO DA UNIDADE), Tipo - TEXTO e NUMÉRICO.
  • Tipo de Processo: Tipo: TEXTO.
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
  • RN01 - O período levado em consideração vai depender do campo Tipo de Movimentação e é obrigatório o seu preenchimento, ele seguirá as seguintes regras:
    1. - Caso seja selecionado Envio, o período informado que vai ser levado em consideração será “data de envio” do processo pela unidade;
    2. - Caso seja selecionado Recebimento, o período informado que vai ser levado em consideração será “data de recebimento” do processo pela unidade;
    3. - Caso seja selecionado Ambos, o período informado que vai ser levado em consideração será “data de envio” e “data de recebimento” do processo pela unidade;
  • RN02 - O preenchimento do campo unidade é opcional. Entretanto ao ser escolhido também irá depender do campo Tipo de Movimentação e seguirá as seguintes regras:
    1. - Caso seja selecionado Envio, a unidade informada será a unidade de origem da movimentação de envio;
    2. - Caso seja selecionado Recebimento, a unidade informada será a unidade de destino da movimentação de recebimento;
    3. - Caso seja selecionado Ambos, a unidade informada será a unidade de origem nas movimentações de envio e a unidade de destino nas movimentações de recebimento;
  • RN03 - O caso de uso só será acessível caso o parâmetro UTILIZA_TIPO_PROCESSO se encontre verdadeiro, ou seja, se a instituição usará essa característica para os processos.

Resoluções/Legislações Associadas

Não se Aplica.

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.

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:

  • Módulos → Protocolo → Consultas/Relatórios → Consultas → Processo Detalhado
  • Para obtermos a quantidade de um tipo de processo enviados por uma unidade em um certo período, podemos usar a seguinte consulta:
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
  • Para obtermos a quantidade de um tipo de processo recebidos por uma unidade em um certo período, podemos usar a seguinte consulta:
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:

  • Para Movimentos de envio (Quando a data de recebimento for nula significa que o processo foi criado na própria unidade, logo, o tempo de permanência é zero):
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
  • Para Movimentos de Recebimento (Quando a data de envio for nula significa que o processo foi recebido mas ainda não enviado, logo, a permanência é contada até a data atual):
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
  • desenvolvimento/especificacoes/sipac/protocolo/casos_de_uso/consultas_relatorios/relatorios/processos_movimentados_por_tipo.txt
  • Última modificação: 2017/04/03 18:22
  • (edição externa)