~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Alterar Destino da Requisição ====== Este caso de uso permite que uma requisição encaminhada para um almoxarifado de destino seja redirecionada para outro almoxarifado, caso o gestor de almoxarifado entenda que seja necessário. Este Caso de uso está especificado em [[desenvolvimento:especificacoes:sipac:infra_estrutura:casos_de_uso:manutencao:requisicoes:requisicoes_de_material:alterar_destino_da_requisicao|Alterar destino da requisição]] do módulo Infraestrutura. ===== Principais Regras de Negócio ===== * **RN01** - A requisição só pode ter seu destino alterado se seu status for ''Enviada''. * **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. ===== Plano de Teste ===== Sistema: SIPAC Módulo: Almoxarifado Link(s): Aba de Requisições -> Material/Requisições -> Alterar Destino da Requisição Usuários: genibaldo Papel que usuário deve ter: SipacPapeis.GESTOR_ALMOXARIFADO ===== 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);