diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 9903bf5..f8d6f27 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -1167,7 +1167,87 @@ where 1 = 0`, }, flash_vendas_ai: (args) => { return { - sql: /*sql*/`` + sql: /*sql*/` + SELECT * FROM ( + WITH Parametros AS ( + SELECT + TO_DATE(\${args.data_venda}, 'YYYY-MM-DD') AS dt_ref, + TRUNC(TO_DATE(\${args.data_venda}, 'YYYY-MM-DD'), 'MM') AS dt_inicio_mes, + ADD_MONTHS(TRUNC(TO_DATE(\${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) AS dt_inicio_mes_ant, + ADD_MONTHS(TO_DATE(\${args.data_venda}, 'YYYY-MM-DD'), -1) AS dt_fim_mes_ant, + ADD_MONTHS(TRUNC(TO_DATE(\${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) AS dt_inicio_ano_ant, + ADD_MONTHS(TO_DATE(\${args.data_venda}, 'YYYY-MM-DD'), -12) AS dt_fim_ano_ant + FROM DUAL + ), + Vendas AS ( + SELECT n.cod_empresa AS loja, + r.data_referencia AS data, + r.valor_venda AS venda, + 0 AS meta + FROM VERDEMAR.TB_FLASH_NODO_RESUMO_VENDA r + JOIN VERDEMAR.TB_FLASH_NODO n ON n.id_nodo = r.id_nodo + CROSS JOIN Parametros p + WHERE n.tipo_nodo = 'EMPRESA' + AND n.ativo = 'S' + AND n.cod_empresa IN (\${args.ctx_user_companies_for_module}) + AND ( r.data_referencia BETWEEN p.dt_inicio_mes AND p.dt_ref + OR r.data_referencia BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant + OR r.data_referencia BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant) + ), + Metas AS ( + SELECT FNC_CODIGOLOJA(m.loja_ajustada) AS loja, + m.data, + 0 AS venda, + m.meta_diaria AS meta + FROM VERDEMAR.ORCADO_METAS_IMPORT m + CROSS JOIN Parametros p + WHERE m.data BETWEEN p.dt_inicio_mes AND LAST_DAY(p.dt_ref) + AND FNC_CODIGOLOJA(m.loja_ajustada) IN (\${args.ctx_user_companies_for_module}) + ), + DadosUnificados AS ( + SELECT * FROM Vendas + UNION ALL + SELECT * FROM Metas + ), + Agrupado AS ( + SELECT + d.loja, + SUM(CASE WHEN d.data BETWEEN p.dt_inicio_mes AND p.dt_ref THEN d.venda ELSE 0 END) AS v_mes, + SUM(CASE WHEN d.data BETWEEN p.dt_inicio_mes AND LAST_DAY(p.dt_ref) THEN d.meta ELSE 0 END) AS m_mes, + SUM(CASE WHEN d.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant THEN d.venda ELSE 0 END) AS v_mes_ant, + SUM(CASE WHEN d.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant THEN d.meta ELSE 0 END) AS m_mes_ant, + SUM(CASE WHEN d.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant THEN d.venda ELSE 0 END) AS v_ano_ant, + SUM(CASE WHEN d.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant THEN d.meta ELSE 0 END) AS m_ano_ant + FROM DadosUnificados d + CROSS JOIN Parametros p + GROUP BY d.loja + ) + SELECT + 'Lojas' AS canalapp, + (loja) AS cod_empresa, + FNC_NOMEPESSOAS(loja) AS nomeempresaapp, + GROUPING(loja) AS is_total, + + SUM(m_mes) AS meta_mes, + SUM(v_mes) AS mes_atual, + SUM(v_mes) - SUM(m_mes) AS dif_mes_atual, + ROUND(NVL((SUM(v_mes) / NULLIF(SUM(m_mes), 0)) * 100 - 100, 0), 2) AS variacao_atual, + + SUM(m_mes_ant) AS meta_mes_anterior, + SUM(v_mes_ant) AS mes_anterior, + SUM(v_mes) - SUM(v_mes_ant) AS dif_mes_anterior, + ROUND(NVL((SUM(v_mes) / NULLIF(SUM(v_mes_ant), 0)) * 100 - 100, 0), 2) AS variacao_mes_anterior, + + SUM(m_ano_ant) AS meta_ano_anterior, + SUM(v_ano_ant) AS ano_anterior, + SUM(v_mes) - SUM(v_ano_ant) AS dif_ano_anterior, + ROUND(NVL((SUM(v_mes) / NULLIF(SUM(v_ano_ant), 0)) * 100 - 100, 0), 2) AS variacao_ano_anterior + FROM Agrupado + GROUP BY GROUPING SETS ((loja), ()) + ) x + WHERE 1=1 + --FILTROS-- + ` } }, query_vazia : (args) => {