Tabela de conteúdos

~~ODT~~

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

Código de Barras

A utilização da ferramenta de leitura de código de barra tem como finalidade facilitar o registro de movimentações de processos e documentos nas unidades que apresentam um maior de fluxo de processo, como as unidades de protocolo central ou setorial nas instituições.

Esse caso de uso é utilizado pelos responsáveis pelo recebimento e envio de processos (geralmente função atribuída aos secretários dos setores) com a finalidade de realizar o registro eletrônico do recebimento ou envio de processo(s) e de documento(s) entre unidades.

Descrição do Caso de Uso

Esse caso de uso se inicia quando o usuário acessa o caminho: SIPAC → Portal Administrativo → Protocolo → CÓDIGO DE BARRAS.

Ao acessá-lo, o sistema irá disponibilizar para download um arquivo com a extensão .jnlp. Este arquivo, ao ser executado, executa a ferramenta de leitura de código de barra.

Passo 1

O caso de uso começa com o usuário informando os seus dados para acessar a aplicação:

Caso o usuário possua mais de uma unidade associada ao mesmo, deve indicar sua unidade de trabalho:

Passo 2

Nesse passo pode ser escolhido qual tipo de movimentação que se deseja realizar:

O caso de uso é finalizado.

Principais Regras de Negócio

Para o recebimento:

Para o envio:

Para ambos:

Resoluções/Legislações Associadas

Não se Aplica.

Classes Persistentes e Tabelas Envolvidas

Classe Tabela
br.ufrn.sipac.protocolo.dominio.Processo administrativo.protocolo.processo
br.ufrn.sipac.protocolo.dominio.Documento administrativo.protocolo.documento
br.ufrn.sipac.cadastro.dominio.Unidade administrativo.public.unidade
br.ufrn.sipac.protocolo.dominio.Movimento administrativo.protocolo.movimento

Plano de Teste

Sistema: SIPAC

Módulo: Portal Administrativo

Link(s): Protocolo → CÓDIGO DE BARRAS

Usuário: jbb, marcilia, bruma, jmcoelho, elizabete. (Todos apresentam ambos papeis abaixo)

Papel que usuário deve ter: ProtocoloPapeis.ENVIAR_PROTOCOLO, ProtocoloPapeis.RECEBER_PROTOCOLO

Cenários de Teste

Dados para o Teste

A consulta abaixo traz o processo caso este se encontre na unidade do usuário e que ainda não foi recebido (RN01, RN02):

SELECT p.radical, p.num_protocolo, p.ano, p.dv
FROM protocolo.processo p
	JOIN protocolo.movimento m ON m.id_movimento = p.id_movimento_atual
	JOIN comum.unidade un_destino ON un_destino.id_unidade = m.id_unidade_destino,
comum.usuario usuario 	
WHERE p.radical = <RADICAL_DO_PROCESSO>
AND p.num_protocolo = <NÚMERO_DO_PROCESSO>
AND p.ano = <ANO_DO_PROCESSO> 
AND p.dv = <DV_DO_PROCESSO>
AND m.data_recebimento_destino IS NULL -- Não recebido pela unidade
AND un_destino.id_unidade = usuario.id_unidade -- Na unidade do usuário
AND usuario.login = '<LOGIN_DO_USUÁRIO>'
ORDER BY p.radical, p.ano, p.num_protocolo

A consulta abaixo traz o documento caso este se encontre na unidade do usuário e que ainda não foi recebido (RN01, RN02):

SELECT d.radical_protocolo, d.numero_protocolo, d.ano_protocolo, d.dv_protocolo
FROM protocolo.documento d
	JOIN protocolo.movimento_documento m ON m.idmovimento_documento = d.id_movimento_atual
	JOIN comum.unidade un_destino ON un_destino.id_unidade = m.codigounidadedestino,
comum.usuario usuario 	
WHERE d.radical_protocolo = <RADICAL_DO_DOCUMENTO>
AND d.numero_protocolo = <NÚMERO_DO_DOCUMENTO>
AND d.ano_protocolo = <ANO_DO_DOCUMENTO> 
AND d.dv_protocolo = <DV_DO_DOCUMENTO>
AND m.datarecebimentodestino NOT NULL -- Não recebido pela unidade
AND un_destino.id_unidade = usuario.id_unidade -- Na unidade do usuário
AND usuario.login = '<LOGIN_DO_USUÁRIO>'
ORDER BY d.radical_protocolo, d.ano_protocolo, d.numero_protocolo

A consulta abaixo traz os dados da unidade caso esta apresente usuários com permissão de recebimento de processos (RN04):

-- Banco: sistemas_comum
SELECT id_unidade, codigo_unidade, nome_capa, nome FROM comum.unidade 
WHERE id_unidade IN (
	SELECT DISTINCT u.id_unidade 
	FROM comum.unidade u, comum.usuario us, comum.permissao pe, comum.papel pa
	WHERE us.id_unidade = u.id_unidade 
	AND pe.id_usuario = us.id_usuario 
	AND pa.id = pe.id_papel 
	AND pa.id = 6
	AND u.codigo_unidade = '<CÓDIGO_DA_UNIDADE>'
	UNION
	SELECT DISTINCT u.id_unidade 
	FROM comum.unidade u, comum.usuario_unidade us, comum.permissao pe, comum.papel pa 
	WHERE us.id_unidade = u.id_unidade 
	AND pe.id_usuario = us.id_usuario 
	AND pa.id = pe.id_papel 
	AND pa.id = 6
	AND u.codigo_unidade = '<CÓDIGO_DA_UNIDADE>'
) 

A consulta abaixo traz o processo caso este se encontre recebido pela unidade do usuário ou por uma das suas unidades filhas (RN05):

SELECT p.radical, p.num_protocolo, p.ano, p.dv
FROM protocolo.processo p
	JOIN protocolo.movimento m ON m.id_movimento = p.id_movimento_atual
	JOIN comum.unidade un_destino ON un_destino.id_unidade = m.id_unidade_destino,
comum.usuario usuario 	
WHERE p.radical = <RADICAL_DO_PROCESSO>
AND p.num_protocolo = <NÚMERO_DO_PROCESSO>
AND p.ano = <ANO_DO_PROCESSO> 
AND p.dv = <DV_DO_PROCESSO>
AND m.data_recebimento_destino IS NOT NULL -- Recebido pela unidade
AND (un_destino.id_unidade = usuario.id_unidade OR un_destino.unidade_responsavel = usuario.id_unidade)
AND usuario.login = '<LOGIN_DO_USUÁRIO>'
ORDER BY p.radical, p.ano, p.num_protocolo

A consulta abaixo traz o documento caso este se encontre recebido pela unidade do usuário ou por uma das suas unidades filhas (RN05):

SELECT d.radical_protocolo, d.numero_protocolo, d.ano_protocolo, d.dv_protocolo
FROM protocolo.documento d
	JOIN protocolo.movimento_documento m ON m.idmovimento_documento = d.id_movimento_atual
	JOIN comum.unidade un_destino ON un_destino.id_unidade = m.codigounidadedestino,
comum.usuario usuario 	
WHERE d.radical_protocolo = <RADICAL_DO_DOCUMENTO>
AND d.numero_protocolo = <NÚMERO_DO_DOCUMENTO>
AND d.ano_protocolo = <ANO_DO_DOCUMENTO> 
AND d.dv_protocolo = <DV_DO_DOCUMENTO>
AND m.datarecebimentodestino IS NOT NULL -- Recebido pela unidade
AND (un_destino.id_unidade = usuario.id_unidade OR un_destino.unidade_responsavel = usuario.id_unidade)
AND usuario.login = '<LOGIN_DO_USUÁRIO>'
ORDER BY d.radical_protocolo, d.ano_protocolo, d.numero_protocolo

A consulta abaixo traz o documento caso este não se encontre associado a um processo (RN06):

SELECT d.radical_protocolo, d.numero_protocolo, d.ano_protocolo, d.dv_protocolo
FROM protocolo.documento d
WHERE d.radical_protocolo = <RADICAL_DO_DOCUMENTO>
AND d.numero_protocolo = <NÚMERO_DO_DOCUMENTO>
AND d.ano_protocolo = <ANO_DO_DOCUMENTO> 
AND d.dv_protocolo = <DV_DO_DOCUMENTO>
AND d.id_processo IS NULL

Para a RN03:

A consulta abaixo traz os documentos que foram enviados para unidades externas:

SELECT d.radical_protocolo, d.numero_protocolo, d.ano_protocolo, d.dv_protocolo
FROM protocolo.documento d
	JOIN protocolo.movimento_documento m ON m.idmovimento_documento = d.id_movimento_atual
WHERE m.id_orgao_externo_destino IS NOT NULL

A consulta abaixo traz os processos que foram enviados para unidades externas:

SELECT p.radical, p.num_protocolo, p.ano, p.dv
FROM protocolo.processo p
	JOIN protocolo.movimento m ON m.id_movimento = p.id_movimento_atual
WHERE m.id_unidade_externa IS NOT NULL

A consulta abaixo lista as unidades que apresentam permissão de tramitação externa:

SELECT u.codigo_unidade, u.nome
FROM protocolo.unidade_tramitacao_externa ute
	JOIN comum.unidade u ON u.id_unidade = ute.id_unidade
WHERE ute.ativo = TRUE;