diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index e536637..4deb7c3 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -1087,12 +1087,13 @@ where 1 = 0`, OR (p.id_nodo_pai IS NOT NULL AND n.id_nodo_pai = p.id_nodo_pai) ) AND (p.cod_empresa IS NULL OR n.cod_empresa = p.cod_empresa) ), - Vendas AS ( + Vendas_Metas AS ( SELECT f.id_nodo, f.codigo, f.nome, f.tipo_nodo, f.nivel, f.cod_empresa, f.ordem_exibicao, r.data_referencia AS data, - r.valor_venda AS venda + r.valor_venda AS venda, + 0 AS meta FROM filhos f JOIN VERDEMAR.TB_FLASH_NODO_RESUMO_VENDA r ON r.id_nodo = f.id_nodo CROSS JOIN Parametros p @@ -1103,43 +1104,55 @@ where 1 = 0`, Agrupado AS ( SELECT v.id_nodo, - v.codigo, + MAX(v.codigo) AS codigo, MAX(v.nome) AS nome, MAX(v.tipo_nodo) AS tipo_nodo, MAX(v.nivel) AS nivel, MAX(v.cod_empresa) AS cod_empresa, MAX(v.ordem_exibicao) AS ordem_exibicao, GROUPING(v.id_nodo) AS is_total, + + -- Somat�rios de Vendas por Per�odo SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes AND p.dt_ref THEN v.venda ELSE 0 END) AS v_mes, SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant THEN v.venda ELSE 0 END) AS v_mes_ant, - SUM(CASE WHEN v.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant THEN v.venda ELSE 0 END) AS v_ano_ant - FROM Vendas v + SUM(CASE WHEN v.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant THEN v.venda ELSE 0 END) AS v_ano_ant, + + -- Somat�rios de Metas por Per�odo + SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes AND p.dt_ref THEN v.meta ELSE 0 END) AS m_mes, + SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant THEN v.meta ELSE 0 END) AS m_mes_ant, + SUM(CASE WHEN v.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant THEN v.meta ELSE 0 END) AS m_ano_ant + FROM Vendas_Metas v CROSS JOIN Parametros p - GROUP BY GROUPING SETS ((v.id_nodo, v.codigo), ()) + GROUP BY GROUPING SETS ((v.id_nodo), ()) ) SELECT - nome AS categoriaapp, - codigo AS cod_nodo, - tipo_nodo, - nivel, - cod_empresa, - is_total, + nome AS nomeempresaapp, -- Nome do n� + tipo_nodo AS canalapp, -- Tipo do n� (ex: CATEGORIA) + cod_empresa AS cod_empresa, -- C�digo da empresa associada ao n� + is_total, -- Indicador de linha totalizadora - v_mes AS venda_dia, - v_mes AS mes_atual, - 0 AS meta_mes, - 0 AS dif_mes_atual, - 0 AS variacao_atual, - - v_mes_ant AS mes_anterior, - (v_mes - v_mes_ant) AS dif_mes_anterior, + -- M�s Atual e Metas Efetivas + m_mes AS meta_mes, + v_mes AS mes_atual, + (v_mes - m_mes) AS dif_mes_atual, + CASE + WHEN m_mes = 0 THEN 0 + ELSE ROUND(((v_mes / m_mes) * 100) - 100, 2) + END AS variacao_atual, + + -- M�s Anterior e Metas + m_mes_ant AS meta_mes_anterior, + v_mes_ant AS mes_anterior, + (v_mes - v_mes_ant) AS dif_mes_anterior, ROUND(NVL((v_mes / NULLIF(v_mes_ant, 0)) * 100 - 100, 0), 2) AS variacao_mes_anterior, - - v_ano_ant AS ano_anterior, - (v_mes - v_ano_ant) AS dif_ano_anterior, + + -- Ano Anterior e Metas + m_ano_ant AS meta_ano_anterior, + v_ano_ant AS ano_anterior, + (v_mes - v_ano_ant) AS dif_ano_anterior, ROUND(NVL((v_mes / NULLIF(v_ano_ant, 0)) * 100 - 100, 0), 2) AS variacao_ano_anterior FROM Agrupado - ORDER BY is_total, ordem_exibicao NULLS LAST, categoriaapp + ORDER BY is_total, ordem_exibicao NULLS LAST, nomeempresaapp ` } },