Tabela de conteúdos

~~ODT~~

Última atualização: 2017/04/03 18:20 (edição externa)

Relatorio Custos Telefonia por Dia da Semana

Este caso de uso tem como finalidade apresentar informações de gastos com telefonia fixa ,móvel e fax para uma unidade por dia da semana.

Descrição do Caso de Uso

O caso de uso inicia solicitando ao usuário:

O relatório lista os gastos telefônicos agrupando por unidade.

Segue o modelo do relatório:

Planilha de Gastos Telefônicos por Unidade

Unidade: UNIDADE (SIGLA) (99.99)

UNIDADE (SIGLA) (99.99)
DIA SEGUNDA TERÇA QUARTA QUINTA SEXTA SÁBADO DOMINGO TOTAL
FIXO 99999999 999,99 999,99 999,99 999,99 999,99 999,99
CELULAR99999999 999,99 999,99 999,99 999,99 999,99 999,99
FAX99999999 999,99 999,99 999,99 999,99 999,99 999,99
Total por Ano
FIXO 99999999
CELULAR 99999999
FAX 99999999

Fim do caso de uso.

Principais Regras de Negócio

Não se Aplica.

Resoluções/Legislações Associadas

Não se Aplica.

Classes Persistentes e Tabelas Envolvidas

Classe Tabela
br.ufrn.sipac.faturas.dominio.FaturaProcessada administrativo_update_geral.contratos.fatura_processada
br.ufrn.sipac.faturas.telefones.dominio.LigacaoTelefonica administrativo_update_geral.contratos.ligacao_telefonica
br.ufrn.sipac.faturas.telefones.dominio.LinhaTelefonica administrativo_update_geral.contratos.linha_telefonica

Plano de Teste

Sistema: SIPAC

Módulo: Faturas

Link(s): Faturas → Telefonia → Relatórios → Custos de Telefonia por Dia da Semana

Usuário: adrianaalves

Papel que usuário deve ter: SipacPapeis.GESTOR_FATURAS.

Cenários de Teste

Não se aplica.

Dados para o Teste

Gerar o relatório e conferir com o resultado da consulta do seguinte sql(lembrar de ajustar o ano)

SELECT
z.dia_semana_txt
, z.dia_semana
, z.tipo_telefone
--, z.id_unidade_pagadora
, z.codigo_unidade
, z.nome_unidade
, translate(cast (cast(sum(z.valor_cobrado_diario_total) AS numeric(14,2)) as text),'.',',') AS valor_total_dia_semana
FROM
(SELECT to_char(foo.data, 'DD-MM-YYYY') AS data
, CASE WHEN foo.dia_semana = 0 THEN
'DOMINGO'
WHEN foo.dia_semana = 1 THEN
'SEGUNDA'
WHEN foo.dia_semana = 2 THEN
'TERÇA'
WHEN foo.dia_semana = 3 THEN
'QUARTA'
WHEN foo.dia_semana = 4 THEN
'QUINTA'
WHEN foo.dia_semana = 5 THEN
'SEXTA'
WHEN foo.dia_semana = 6 THEN
'SABADO'
END AS dia_semana_txt
, foo.dia_semana
, foo.tipo_telefone
, foo.valor_cobrado_diario_total
, foo.id_unidade_pagadora
, foo.codigo_unidade
, foo.nome_unidade FROM
(SELECT cast(ltel.data AS date) AS data
, extract(DOW FROM ltel.data) AS dia_semana
, tt.denominacao AS tipo_telefone
, sum(ltel.valor_cobrado) AS valor_cobrado_diario_total
, lt.id_unidade_pagadora
, u.codigo_unidade
, u.nome AS nome_unidade
FROM contratos.linha_telefonica lt
JOIN contratos.ligacao_telefonica ltel
ON lt.id_linha_telefonica = ltel.id_linha_telefonica
JOIN contratos.tipo_telefone tt
ON tt.id_tipo_telefone = lt.id_tipo_telefone
JOIN comum.unidade u
ON lt.id_unidade_pagadora = u.id_unidade
WHERE extract(YEAR FROM ltel.data) = 2010
GROUP BY cast(ltel.data AS date)
, tt.denominacao
, extract(DOW FROM ltel.data)
, lt.id_unidade_pagadora
, u.codigo_unidade
, u.nome
ORDER BY data ASC
, tt.denominacao
) AS foo
) AS z
GROUP BY --z.id_unidade_pagadora
z.codigo_unidade
, z.nome_unidade
, z.dia_semana
, z.dia_semana_txt
, z.tipo_telefone
ORDER BY z.codigo_unidade ASC
, z.dia_semana ASC;