~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== 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: ([[#principais regras de negócio|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. ([[#principais regras de negócio|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 de ''MATERIAL''. * **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 [[#principais regras de negócio|RN01]]), pode-se utilizar a consulta abaixo: SELECT * FROM requisicoes.requisicao_material WHERE id_status = 101 AND id_tipo = 1; * Para testar a [[#principais regras de negócio|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);