~~ODT~~
Gastos com Manutenção
Este caso de uso é utilizado para se obter um relatório de gastos com manutenção de alguma unidade. Ele é usado pelos executores de orçamento.
Descrição do Caso de Uso
Este caso de uso é iniciado ao acessar o seguinte caminho: Sipac → Portal Administrativo → Aba Outros → Consultas → Despesas → Gastos com Manutenção.
Passo 1
Para consultar as notificações, o sistema solicita ao usuário algumas das informações a seguir:
- Data Inicial*: Formato - DD/MM/AAAA, Tipo - DATA.
- Data Final*: Formato - DD/MM/AAAA, Tipo - DATA.
- Unidade*: Formato - NOME (CÓDIGO), Tipo - TEXTO.
- Almoxarifado: Formato - NOME, Tipo - TEXTO. (RN01)
O resultado da busca é mostrado em um relatório como o do modelo abaixo:
O caso de uso é finalizado.
Principais Regras de Negócio
- RN01 - As consultas serão feitas somente no
ALMOXARIFADO - SUP. INFRA-ESTRUTURA
.
Resoluções/Legislações Associadas
Não se Aplica.
Classes Persistentes e Tabelas Envolvidas
Classe | Tabela | |
---|---|---|
br.ufrn.sipac.supinfra.projetos.dominio.RequisicaoSupInfra | administrativo.infra.requisicao_supinfra | |
br.ufrn.sipac.requisicoes.material.dominio.RequisicaoMaterial | administrativo.requisicoes.requisicao_material | |
br.ufrn.comum.dominio.UnidadeGeral | administrativo.comum.unidade | |
br.ufrn.sipac.requisicoes.material.dominio.ItemRequisicao | administrativo.requisicoes.item_requisicao | |
br.ufrn.sipac.almoxarifado.saidas.dominio.AtendimentoReqMaterial | administrativo.almoxarifado.atendimento_req_material |
Plano de Teste
Sistema: SIPAC
Módulo: PORTAL ADMINISTRATIVO
Link(s): Sipac → Portal Administrativo → Aba Outros → Consultas → Despesas → Gastos com Manutenção
Usuário: gustavo, alanaisis
O usuário tem que ter um dos papéis: ScoPapeis.EXECUTOR_ORCAMENTO, ScoPapeis.EXECUTOR_ORCAMENTO_GLOBAL
Cenários de Teste
Verificar se o fluxo do caso de uso está correto e os dados mostrados no relatório.
Dados para o Teste
- Para verificar os dados do relatório, pode-se utilizar a seguinte consulta, substituindo os
?
porDATA INICIAL
,DATA FINAL
,ID DA UNIDADE GESTORA DO USUÁRIO
,DATA INICIAL
,DATA FINAL
eID DA UNIDADE GESTORA DO USUÁRIO
, respectivamente:
SELECT * FROM ( (SELECT DISTINCT '1' AS tipo, u.id_unidade, u.nome AS unidade, u.codigo_unidade AS codigo, r.numero, r.ano, r.data, r.descricao, rm.id_status, rm.numero AS m_numero, rm.ano AS m_ano, rm.data AS m_data, sr2.descricao AS status_material, sr.descricao AS status_requisicao, r.valor, SUM((a.qtd_atendida - a.qtd_devolvida)*a.preco_atendimento) AS valor_material FROM infra.requisicao_supinfra r INNER JOIN requisicoes.requisicao_material rm ON rm.id_req_anterior=r.id INNER JOIN requisicoes.status_requisicao sr ON sr.id=r.id_status INNER JOIN requisicoes.status_requisicao sr2 ON sr2.id=rm.id_status INNER JOIN comum.unidade u ON u.id_unidade=rm.id_unidade_custo INNER JOIN requisicoes.item_requisicao i ON (rm.id = i.id_requisicao) INNER JOIN almoxarifado.atendimento_req_material a ON (a.id_item_req_material = i.id) WHERE a.data BETWEEN ? AND ? AND a.id_almoxarifado = 3 AND r.id_tipo=11 AND u.hierarquia LIKE '%.?.%' AND NOT (rm.id_status IN (100,107)) GROUP BY u.id_unidade, u.nome, u.codigo_unidade, r.numero, r.ano, r.data, r.descricao, rm.id_status, rm.numero, rm.ano, rm.data, sr2.descricao, sr.descricao, r.valor ORDER BY u.nome, r.data, rm.data) UNION (SELECT DISTINCT '2' AS tipo, u.id_unidade, u.nome AS unidade, u.codigo_unidade AS codigo, 1, rm.id_unidade_req, rm.data_aut_chefe, rm.justificativa, rm.id_status, rm.numero AS m_numero, rm.ano AS m_ano, rm.data AS m_data, sr2.descricao, sr2.descricao AS status_material, rm.valor, SUM((a.qtd_atendida - a.qtd_devolvida)*a.preco_atendimento) AS valor_material FROM requisicoes.requisicao_material rm INNER JOIN requisicoes.status_requisicao sr2 ON sr2.id=rm.id_status INNER JOIN comum.unidade u ON u.id_unidade=rm.id_unidade_custo INNER JOIN requisicoes.item_requisicao i ON (rm.id = i.id_requisicao) INNER JOIN almoxarifado.atendimento_req_material a ON (a.id_item_req_material = i.id ) WHERE a.data BETWEEN ? AND ? AND a.id_almoxarifado = 3 AND rm.id_req_anterior IS NULL AND u.hierarquia LIKE '%.?.%' AND NOT (rm.id_status IN (100,107)) GROUP BY tipo, u.id_unidade, u.nome, u.codigo_unidade, rm.id_usuario, rm.id_unidade_req, rm.data_aut_chefe, rm.justificativa, rm.id_status, rm.numero, rm.ano, rm.data, rm.id_status, sr2.descricao, rm.valor ORDER BY rm.numero, u.nome, rm.data) ) AS q ORDER BY q.id_unidade, tipo
- Já para verificar o id da unidade gestora do usuário, pode-se utilizar a consulta abaixo informando o login do usuário:
SELECT id_gestora FROM comum.unidade un INNER JOIN comum.usuario us ON us.id_unidade = un.id_unidade WHERE us.login LIKE '?'