~~ODT~~
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:
- Usuário*: Tipo TEXTO.
- Senha*: Tipo TEXTO. Campo de Senha.
Caso o usuário possua mais de uma unidade associada ao mesmo, deve indicar sua unidade de trabalho:
- Unidade: Tipo TEXTO, formato: CÓDIGO - DENOMINAÇÃO UNIDADE.
Passo 2
Nesse passo pode ser escolhido qual tipo de movimentação que se deseja realizar:
- Recebimento de Processos/Documentos(RN01, RN02, RN03 e RN06).
- Posicione o Leitor no Código de Barras do Processo/Documento: Formato - 99999999999999999, Tipo - NUMÉRICO.
- Abaixo são mostrados os Processos/documentos Recebidos:
- Número: Formato - RADICAL.NÚMERO/AAAA-DV, Tipo - NUMÉRICO.
- Assunto: Tipo - TEXTO.
- Origem: Formato - SIGLA DA UNIDADE(CÓDIGO DA UNIDADE), Tipo - NUMÉRICO.
- Envio de Processos/Documentos(RN04, RN05 e RN06):
- Unidade Destino: Tipo AUTOCOMPLETE, formato: CÓDIGO - DENOMINAÇÃO UNIDADE, entrada de dados: CÓDIGO ou DENOMINAÇÃO.
- Tempo Esperado na Unidade de Destino: Formato - 999(Em Dias), Tipo - NUMÉRICO.
- Posicione o Leitor no Código de Barras do Processo/Documento: Formato - 99999999999999999, Tipo - NUMÉRICO.
- Abaixo são mostrados os Processos/documentos Enviados:
- Número: Formato - 99999.999999/9999-99, Tipo - NUMÉRICO.
- Assunto: Tipo - TEXTO.
- Destino: Formato - SIGLA DA UNIDADE(CÓDIGO DA UNIDADE), Tipo - NUMÉRICO.
O caso de uso é finalizado.
Principais Regras de Negócio
Para o recebimento:
- RN01 - Caso o Processo/Documento esteja na unidade do usuário, este já não pode ter sido recebido por ela.
- RN02 - Não é possível receber um processo/documento que já foi recebido por outra unidade.
- RN03 - Caso o processo/documento, que está sendo recebido, foi enviado para uma unidade externa. O mesmo só poderá ser recebido caso a unidade do usuário tenha a permissão de tramitação externa.
Para o envio:
- RN04 - A unidade de destino selecionada deve possuir pelo menos um usuário cadastrado no sistema para receber processos/documentos.
- RN05 - O processo/documento deve se encontrar na unidade do usuário.
Para ambos:
- RN06 - Não é possível movimentar um Documento que está associado a um Processo.
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
- Realizar o recebimento e o envio de processo e documentos pela ferramenta de código de barras.
- Pode-se verificar se o processo foi movimentado corretamente através do caso de uso SIPAC → Protocolo → Consultas/Relatórios → Consultas → Processo Detalhado
- Pode-se verificar se o documento foi movimentado corretamente através do caso de uso SIPAC → Protocolo → Consultas/Relatórios → Consultas → Documentos
- Nos caminhos acima também é possível a impressão da capa do processo e o comprovante do documentos. Documentos(capa e comprovante) estes que apresentam os códigos de barras de ambos
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;