~~ODT~~
Alterar Destino da Requisição
Este caso de uso é utilizado pelos gestores de meio ambiente com a finalidade de alterar o almoxarifado ao qual se destina a requisição.
Descrição do Caso de Uso
Este caso de uso inicia quando o usuário acessa SIPAC → Infa-Estrutura → Manutenção → Requisições → Requisições de Material → Alterar Destino da Requisição.
O Usuário faz a busca da requisição informando: (RN01)
- Número/Ano:* Tipo - NUMÉRICO, Formato: 9…/AAAA.
O Usuário confirma a busca e o Sistema exibe dados da requisição e lista de materiais da requisição:
- Número da Requisição: Tipo NUMÉRICO, formato: 9…/AAAA.
- Tipo da Requisição: Tipo TEXTO.
- Destino da Requisição: Tipo TEXTO.
- Status: Tipo TEXTO.
- Material: Tipo TEXTO.
- Unidade de Custo: Tipo TEXTO.
- Unidade Requisitante: Tipo TEXTO.
- Data: Tipo DATA.
- Valor da Requisição: Tipo NUMÉRICO.
- Observações: Tipo TEXTO.
A lista de materiais:
- Código: Tipo - NUMÉRICO.
- Denominação: Tipo - TEXTO.
- Unidade Medida: Tipo - TEXTO.
- Quantidade: Tipo - NUMÉRICO.
- Valor: Tipo - NUMÉRICO.
- Total: Tipo - NUMÉRICO.
- Quantidade Atendida: Tipo - NUMÉRICO.
O Sistema solicita o destino da requisição:
- Almoxarifado*: Tipo - TEXTO. (RN02)
O caso de uso é finalizado.
Principais Regras de Negócio
- RN01 - Só é possível alterar o almoxarifado de uma requisição que tenha o status de
ENVIADA
e que seja do tipo deMATERIAL
. - RN02 - Se o almoxarifado da unidade do usuário for o
CENTRAL
, serão listados todos os almoxarifados, senão serão listados apenas os almoxarifados que podem atender a requisição de acordo com a unidade requisitante.
Resoluções/Legislações Associadas
Não se Aplica
Classes Persistentes e Tabelas Envolvidas
Classe | Tabela |
---|---|
br.ufrn.sipac.almoxarifado.comuns.dominio.Almoxarifado | administrativo.almoxarifado.almoxarifado |
br.ufrn.comum.dominio.PessoaGeral | administrativo.comum.pessoa |
br.ufrn.comum.dominio.UsuarioGeral | administrativo.comum.usuario |
br.ufrn.sipac.requisicoes.material.dominio.GrupoMaterial | administrativo.public.grupo_material |
br.ufrn.sipac.requisicoes.material.dominio.RequisicaoMaterial | administrativo.requisicoes.requisicao_material |
br.ufrn.sipac.requisicoes.comuns.TipoRequisicao | administrativo.requisicoes.tipo_requisicao |
br.ufrn.sipac.requisicoes.material.dominio.Material | administrativo.comum.material |
Plano de Teste
Sistema: SIPAC
Módulo: Infra-Estrutura
Link(s): Sipac → Infa-Estrutura → Manutenção → Requisições → Requisições de Material → Alterar Destino da Requisição
Usuário: gustavo, brunormm
Papel que usuário deve ter: GESTOR_MEIO_AMBIENTE
Cenários de Teste
- Verificar se o fluxo do caso de uso está funcionando corretamente e se todas as regras de negócio são respeitadas.
Dados para o Teste
- Para encontrar requisições válidas para essa busca (testar a RN01), pode-se utilizar a consulta abaixo:
SELECT * FROM requisicoes.requisicao_material WHERE id_status = 101 AND id_tipo = 1;
- Para testar a RN02, pode-se utilizar a consulta abaixo informando o nome da unidade exibida no sistema para o usuário logado e verificar o tipo:
SELECT alm.tipo FROM almoxarifado.almoxarifado alm INNER JOIN comum.unidade un ON alm.id_unidade = un.id_unidade WHERE un.nome LIKE '?';
- Se o tipo do almoxarifado for 1 (que indica que o almoxarifado é o central), então o usuário pode escolher qualquer um dos almoxarifados cadastrados no banco, para conferir a lista de todos os almoxarifados, pode-se utilizar a seguinte consulta:
SELECT id, denominacao FROM almoxarifado.almoxarifado;
- Já se o tipo não for 1, ou seja, o almoxarifado não é o central, então deve-se descobrir a hierarquia da unidade requisitante da requisição selecionada com a seguinte consulta informando o número e o ano da requisição:
SELECT un.hierarquia FROM comum.unidade un INNER JOIN requisicoes.requisicao_material rm ON rm.id_unidade_req = un.id_unidade WHERE rm.numero = ? AND rm.ano = ?;
- De posse da hierarquia da unidade requisitante da requisição selecionada, deve utilizar a consulta abaixo informado os ids das unidades da hierarquia que são separados pelos
.
no local do?
separando cada id do outro por vírgula para encontrar oa almoxarifados que podem atender a requisição:
SELECT alm.id, alm.denominacao FROM almoxarifado.almoxarifado alm INNER JOIN comum.unidade un ON un.id_unidade = alm.id_unidade WHERE un.id_unidade IN (?) OR alm.id IN (1, 3);