Módulo de Circulação (Desktop)

As operações básicas da biblioteca precisam utilizar periféricos do computador, como impressora e leitor de digitais. Isto não é possível através de um sistema web. Por isso, a solução adotada para o módulo de circulação foi desenvolver um programa desktop.

Para se comunicar com o servidor, o programa utiliza Spring Remoting através de uma servlet criada no Sigaa (httpCirculacaoController).

Descrição do Caso de Uso

Após efetuar o login, será exibida a tela principal do módulo de circulação desktop. O operador inicia um dos casos de uso. A especificação de cada um deles segue abaixo.

Para as operações de realizar e renovar empréstimos é necessário realizar uma busca pelo usuário da biblioteca. Esta pode ser feita indicando-se o nome, o cpf, a matrícula ou o siape do mesmo.

Neste módulo desktop estão disponíveis as seguintes opções para o usuário:

Principais Regras de Negócio

Caso o usuário possua mais de um vínculo com a universidade, na busca (seja pela matrícula, siape, cpf ou pelo nome) o vínculo com mais permissões deve ser retornado. A hierarquia para os tipos de usuários é executada da seguinte maneira:

  1. Docente / Docente Externo
  2. Discente de Pós-graduação
  3. Servidor Técnico-administrativo / Discente de Graduação / Usuário Externo
  4. Discente de nível técnico / médio

Se um discente for especial e não for de mobilidade estudantil, este não poderá realizar empréstimos.

Se um usuário não tiver mais um vínculo ativo com a instituição, este deve aparecer na consulta mas não pode realizar ou renovar empréstimos.

Classes Persistentes e Tabelas Envolvidas

Classe Tabela
br.ufrn.sigaa.biblioteca.processos_tecnicos.dominio.UsuarioBiblioteca sigaa.biblioteca.usuario_biblioteca

Plano de Teste

Este módulo é um programa desktop. Portanto, não há um link específico para ele.

Papéis: SigaaPapeis.BIBLIOTECA_SETOR_CIRCULACAO_BIBLIOTECARIO, SigaaPapeis.BIBLIOTECA_SETOR_CIRCULACAO ou SigaaPapeis.BIBLIOTECA_SETOR_CIRCULACAO_CHECKOUT

Usuários: usuarios

Cenários de Teste

  1. Buscar por usuários que possuam mais de um vínculo e verificar se as buscas por nome e matrícula estão retornando os vínculos corretos, de acordo com a hierarquia citada nas regras de negócio.

Dados para o Teste

Utilizar o seguinte código SQL para verificar os resultados encontrados.

   select ub.id_usuario_biblioteca, p.cpf_cnpj, p.nome, p.data_nascimento, d.id_discente, d.matricula, d.nivel, null as id_servidor,null as siape, null as id_categoria, p.id_pessoa, d.tipo as tipo_discente, fi.mobilidade_estudantil, 0 as id_docente_externo from biblioteca.usuario_biblioteca ub join pessoa p on p.id_pessoa = ub.id_pessoa join discente d on d.id_pessoa = p.id_pessoa and d.status in (1, 8, 9) and (p.nome_ascii ilike '%victor hugo de carvalho fernandes%' or p.cpf_cnpj = 0 or  d.matricula = 0) left join ensino.forma_ingresso fi on fi.id_forma_ingresso = d.id_forma_ingresso where ub.ativo = trueValue() union all select ub.id_usuario_biblioteca, p.cpf_cnpj, p.nome, p.data_nascimento, null as id_discente, null as matricula, null as nivel, s.id_servidor, s.siape, s.id_categoria, p.id_pessoa, null as tipo_discente, null as mobilidade_estudantil, 0 as id_docente_externo from biblioteca.usuario_biblioteca ub join pessoa p on p.id_pessoa = ub.id_pessoa join rh.servidor s on s.id_pessoa = p.id_pessoa and s.id_ativo in (1, 2, 9) and (p.nome_ascii ilike '%victor hugo de carvalho fernandes%'  or p.cpf_cnpj = 0 or  s.siape = 0) where ub.ativo = trueValue() union all select ub.id_usuario_biblioteca, p.cpf_cnpj, p.nome, p.data_nascimento, null as id_discente, null as matricula, null as nivel, null as id_servidor, null as siape, null as id_categoria, p.id_pessoa, null as tipo_discente, null as mobilidade_estudantil, 0 as id_docente_externo from biblioteca.usuario_biblioteca ub join biblioteca.usuario_externo_biblioteca ue on ue.id_usuario_externo_biblioteca = ub.id_usuario_externo_biblioteca join pessoa p on p.id_pessoa = ue.id_pessoa and (p.nome_ascii ilike '%victor hugo de carvalho fernandes%' or p.cpf_cnpj = 0 ) where ub.ativo = trueValue() union all select ub.id_usuario_biblioteca, p.cpf_cnpj, p.nome, p.data_nascimento, null as id_discente, null as matricula, null as nivel, null as id_servidor, null as siape, null as id_categoria, p.id_pessoa, null as tipo_discente, null as mobilidade_estudantil, de.id_docente_externo from biblioteca.usuario_biblioteca ub join pessoa p on p.id_pessoa = ub.id_pessoa join ensino.docente_externo de on de.id_pessoa = p.id_pessoa and de.ativo = trueValue() and de.matricula is not null and (p.nome_ascii ilike '%victor hugo de carvalho fernandes%' or p.cpf_cnpj = 0) where ub.ativo = trueValue() order by 3

<< Voltar - Módulo da Biblioteca