~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== 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__**([[#Principais Regras de Negócio|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__**([[#Principais Regras de Negócio|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 ([[codigo_de_barras#Principais Regras de Negócio|RN01]], [[codigo_de_barras#Principais Regras de Negócio|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 = AND p.num_protocolo = AND p.ano = AND p.dv = 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 = '' 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 ([[codigo_de_barras#Principais Regras de Negócio|RN01]], [[codigo_de_barras#Principais Regras de Negócio|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 = AND d.numero_protocolo = AND d.ano_protocolo = AND d.dv_protocolo = 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 = '' 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 ([[codigo_de_barras#Principais Regras de Negócio|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 = '' 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 = '' ) A consulta abaixo traz o processo caso este se encontre recebido pela unidade do usuário ou por uma das suas unidades filhas ([[codigo_de_barras#Principais Regras de Negócio|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 = AND p.num_protocolo = AND p.ano = AND p.dv = 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 = '' 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 ([[codigo_de_barras#Principais Regras de Negócio|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 = AND d.numero_protocolo = AND d.ano_protocolo = AND d.dv_protocolo = 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 = '' 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 ([[codigo_de_barras#Principais Regras de Negócio|RN06]]): SELECT d.radical_protocolo, d.numero_protocolo, d.ano_protocolo, d.dv_protocolo FROM protocolo.documento d WHERE d.radical_protocolo = AND d.numero_protocolo = AND d.ano_protocolo = AND d.dv_protocolo = AND d.id_processo IS NULL Para a [[codigo_de_barras#Principais Regras de Negócio|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;