====== Realizar Emprestimo (entre Bibliotecas) ====== Após o usuário [[desenvolvimento:especificacoes:sigaa:portal_do_discente:casos_de_uso:biblioteca:solicitacoes:solicitar_emprestimos_entre_bibliotecas | solicitar um empréstimo entre biblioteca ]] e o material chegar na biblioteca origem, o usuário pode realizar o empréstimos desse material por esse caso de uso. \\ \\ Ele está sujeito às mesmas [[desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:regras_gerais_emprestimos | regras gerais dos empréstimos ]] ===== Descrição do Caso de Uso ===== O caso de uso se inicia ao acessar uma das opções abaixo: //Sigaa -> Biblioteca -> Inf. e Referência -> Empréstimo Entre Bibliotecas -> Realizar Empréstimo// \\ \\ Ao iniciar o caso de uso, a tela de [[desenvolvimento:especificacoes:sigaa:biblioteca:casos_de_uso:circulacao:busca_padrao_usuarios_biblioteca | busca padrão de usuários da biblioteca ]] é exibida. \\ \\ Após selecionar o usuário, o operador é redirecionado para o formulário de realização dos empréstimos web. Nele são mostrados os dados do usuário: * **__MATRÍCULA__** ou **__SIAPE__**: Tipo - NUMÉRICO. * **__Nome__**: Tipo - TEXTO. * **__Vínculo do Usuário__**: Tipo - TEXTO. * **__Curso__**: Tipo - TEXTO. * **__Centro__**: Tipo - TEXTO. * **__Telefone__**: Tipo - NUMÉRICO. Formato - 9999-9999 * **__Email__**: Tipo - TEXTO. * **__Endereço__**: Tipo - TEXTO. \\ \\ No formulário é exibido um campo para buscar o material pelo código de barras. * **__Material__**: Tipo - TEXTO. * **Código de Barras**: O código de barras do material. Tipo : TEXTO \\ \\ Depois de buscar do material, caso ele esteja disponível, é mostrado 2 campos para escolher o tipo de empréstimo que o usuário vai realizar e o campo para digitar a senha da biblioteca do usuário // ( [[#Fluxo Alternativo | Ver fluxo alternativo ]] )// . \\ * **__Material__**: Tipo - TEXTO. * **Tipo de Empréstimo**: O tipo de empréstimos que será realizado. Tipo : SELEÇÃO SIMPLES * **Senha da Biblioteca**: A senha da biblioteca do usuário para quem o material será emprestado. Tipo : NUMÉRICO. Tamanho: 6 a 8 dígitos. \\ \\ \\ Logo abaixo é exibida uma listagem com os dados do empréstimos ativos do usuário: ^Informações do Material^Data do Empréstimo^Tipo do Empréstimos^Prazo ^Atrasado^ * Informações do Material: O código de barras e as informações do Título do material * Data do Empréstimo: A data do empréstimo. * Tipo do Empréstimos: O tipo de empréstimo que foi realizado. * Prazo: O prazo do emprétimo * Atrasado: Se o empréstimo está atrasado. \\ \\ \\ Após informar os dados solicitados, o usuário deve executar a operação de "realizar empréstimos" Caso todas as regras para realização de empréstimos seja atendidas, uma mensagem de empréstimos realizado com sucesso é mostrada junto com a data para devolução do material, um email com essas informações também é enviado ao usuário ( Essa operação chama o caso de uso: [[ desenvolvimento:especificacoes:sigaa:biblioteca:casos_de_uso:administracao:tarefas_agendadas:atualizar_as_estatisticas_da_biblioteca | Registra Estatística de Títulos "Mais Emprestados"]]). \\ \\ Caso o usuário não possa realizar o empréstimo, uma mensagem com o motivo deve ser informada. \\ \\ O caso de uso é finalizado. ==== Fluxo Alternativo ==== Caso o tipo de empréstimo escolhido pelo operador seja o tipo PERSONALIZADO, serão mostrados mais 2 campos. \\ * **__Dias a Emprestar__**: A quantidade de dias que o usuário vai ficar com o material. Tipo : NUMÉRICO * **__Senha__**: A senha do SIGAA do operador para autorizar a execução desse tipo de empréstimo. Tipo : TEXTO. ===== Principais Regras de Negócio ===== - **RN01**: Somente materiais que possuam um solicitação de empréstimo entre bibliotecas podem ser emprestado por esse caso de uso. - **RN02**: Somente materiais cujas solicitações possuam o Status **RECEBIDO** podem ser emprestado por esse caso de uso. - **RN03**: No empréstimo entre biblioteca o material tem um prazo máximo de permanência na biblioteca para a qual foi envaido, depois desse prazo ele **não pode ser mais emprestado**, ou seja utilizar esse caso de uso, deve obrigatoriamente ser enviado de volta para a biblioteca dele. - **RN0X**:[[ desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:regras_gerais_emprestimos| Regras Gerais para Empréstimos ]] //(as demais regras então definidas aqui)// ==== Resoluções/Legislações Associadas ==== Não se aplica. ===== Classes Persistentes e Tabelas Envolvidas ===== ^ Classe ^ Tabela | | br.ufrn.sigaa.biblioteca.circulacao.dominio.Emprestimo | sigaa.biblioteca.emprestimo | | br.ufrn.sigaa.biblioteca.processos_tecnicos.dominio.MaterialInformacional | sigaa.biblioteca.material_informacional | | br.ufrn.sigaa.biblioteca.circulacao.dominio.UsuarioBiblioteca | sigaa.biblioteca.usuario_biblioteca | | br.ufrn.sigaa.biblioteca.circulacao.dominio.PoliticaEmprestimo | sigaa.biblioteca.politica_emprestimo | ====== Plano de Teste ====== Sistema: Sigaa Módulo: Biblioteca Link(s): * Sigaa -> Biblioteca -> Inf. e Referência -> Empréstimo Entre Bibliotecas -> Realizar Empréstimo Papéis: * SigaaPapel.BIBLIOTECA_SETOR_INFO_E_REF * SigaaPapel.BIBLIOTECA_SETOR_INFO_E_REF_BIBLIOTECARIO * SigaaPapel.BIBLIOTECA_ADMINISTRADOR_GERAL Usuário: * margareth (administrador geral) * ericamelo (bibliotecária informação e referênica BCZM ) * joseneide (bibliotecária informação e referência CCET ) ===== Cenários de Teste ===== Não se aplica. ===== Dados para o Teste ===== ---- -- Valores dos vínculos: -- -- 0 = ALUNO DE GRADUAÇÃO; -- 1 = ALUNO DE NÍVEL MÉDIO/TÉCNICO; -- 2 = ALUNO DE PÓS-GRADUAÇÃO; -- 3 = SERVIDOR TÉCNICO-ADMINISTRATIVO; -- 4 = DOCENTE; -- 5 = BIBLIOTECA; -- 6 = BIBLIOTECA EXTERNA; -- 7 = USUÁRIO EXTERNO; -- 8 = DOCENTE EXTERNO; -- 9 = INATIVO ( sem vínculos ativos para realizar empréstimos ); -- ---- ---- ---- Consulta que retorna um aluno não quitado a partir da matricula ---- select d.matricula, p.nome, vinculo, quitado from biblioteca.usuario_biblioteca inner join comum.pessoa p using (id_pessoa) inner join discente d using (id_pessoa) where d.matricula = 'xxxxxxxxxx' --- Colocar a matricula do aluno aqui aqui and quitado = false ---- Para trazer usuários quitados mudar para ''true'' aqui and ativo = true and 1 not in ( -- recupera os usuário que não estão bloqueados , retirar o 'not' para recuperar usuários bloqueados --- retorna o último tipo de bloqueio da pessoa da consulta, se esse tipo for 1 o usuário está atualmente bloqueado select tipo from biblioteca.bloqueios_usuario_biblioteca bloq where bloq.id_pessoa = p.id_pessoa order by data desc limit 1 ) ; ---- ---- Consulta que retorna um aluno não quitado pelo nome ---- select d.matricula, p.nome, vinculo, quitado from biblioteca.usuario_biblioteca inner join comum.pessoa p using (id_pessoa) inner join discente d using (id_pessoa) where p.nome ilike 'fulano de tal...%' --- Colocar o nome do usuário aqui and quitado = false ---- Para trazer usuários quitados mudar para ''true'' aqui and ativo = true and 1 not in ( -- recupera os usuário que não estão bloqueados , retirar o 'not' para recuperar usuários bloqueados --- retorna o último tipo de bloqueio da pessoa da consulta, se esse tipo for 1 o usuário está atualmente bloqueado select tipo from biblioteca.bloqueios_usuario_biblioteca bloq where bloq.id_pessoa = p.id_pessoa order by data desc limit 1 ) ; ---- ---- Consulta que retorna um servidor não quitado pelo nome ---- select s.siape, p.nome, vinculo, quitado from biblioteca.usuario_biblioteca inner join comum.pessoa p using (id_pessoa) inner join rh.servidor s using (id_pessoa) where p.nome ilike 'Sicrano....%' --- Colocar o nome do usuário aqui and quitado = false ---- Para trazer usuários quitados mudar para ''true'' aqui and ativo = true and 1 not in ( -- recupera os usuário que não estão bloqueados , retirar o 'not' para recuperar usuários bloqueados --- retorna o último tipo de bloqueio da pessoa da consulta, se esse tipo for 1 o usuário está atualmente bloqueado select tipo from biblioteca.bloqueios_usuario_biblioteca bloq where bloq.id_pessoa = p.id_pessoa order by data desc limit 1 ) ; ---- ---- Consulta que retorna um servidor não quitado pelo siape ---- select s.siape, p.nome, vinculo, quitado from biblioteca.usuario_biblioteca inner join comum.pessoa p using (id_pessoa) inner join rh.servidor s using (id_pessoa) where s.siape = 123456 --- Colocar o siape do usuário aqui and quitado = false ---- Para trazer usuários quitados mudar para ''true'' aqui and ativo = true and 1 not in ( -- recupera os usuário que não estão bloqueados , retirar o 'not' para recuperar usuários bloqueados --- retorna o último tipo de bloqueio da pessoa da consulta, se esse tipo for 1 o usuário está atualmente bloqueado select tipo from biblioteca.bloqueios_usuario_biblioteca bloq where bloq.id_pessoa = p.id_pessoa order by data desc limit 1 ) ;