~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== 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. ([[#Principais regras de negócio|RN01]]) O resultado da busca é mostrado em um relatório como o do modelo abaixo: {{:desenvolvimento:especificacoes:sipac:portal_administrativo:casos_de_uso:outros:consultas:despesas:relatório2.png|}} 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 ''?'' por ''DATA INICIAL'', ''DATA FINAL'', ''ID DA UNIDADE GESTORA DO USUÁRIO'', ''DATA INICIAL'', ''DATA FINAL'' e ''ID 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 '?'