diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 61cc62f..f4acbd0 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -984,74 +984,75 @@ where 1 = 0`, flash: (args) => { return { sql: /*sql*/` - WITH Parametros AS ( + 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 + 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 ), - DadosUnificados AS ( - SELECT loja, empresa_tipo, data, venda, 0 as meta - FROM ( - SELECT 1 AS empresa_tipo, loja, data, venda FROM VERDEMAR.MV_VENDAS_VERDEMAR_DIA - UNION ALL - SELECT 131 AS empresa_tipo, loja, data, venda FROM VERDEMAR.MV_VENDAS_RESTAURANTE_DIA - ) v - CROSS JOIN Parametros p - WHERE (v.data BETWEEN p.dt_inicio_mes AND p.dt_ref) - OR (v.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant) - OR (v.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant) - - UNION ALL - - SELECT VERDEMAR.FNC_CODIGOLOJA(m.loja_ajustada), 1, m.data, 0, m.meta_diaria - FROM VERDEMAR.ORCADO_METAS_IMPORT m - CROSS JOIN Parametros p + Vendas AS ( + -- Venda diaria por loja (lê só os nos EMPRESA do resumo, que já vem com rollup) + 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 ( 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 ( + -- Metas em tempo real, igual antes + 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) ), + DadosUnificados AS ( + SELECT * FROM Vendas + UNION ALL + SELECT * FROM Metas + ), Agrupado AS ( SELECT d.loja, - d.empresa_tipo, - 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_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_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_ano_ant AND p.dt_fim_ano_ant THEN d.venda ELSE 0 END) AS v_ano_ant FROM DadosUnificados d CROSS JOIN Parametros p - GROUP BY d.loja, d.empresa_tipo + GROUP BY d.loja ) SELECT - CASE - WHEN empresa_tipo = 131 THEN 'RESTAURANTE' - WHEN FNC_NUMEROLOJA(loja) = 0 THEN 'TOTAL' - ELSE 'VERDEMAR' - END as canalapp, - CASE - WHEN empresa_tipo = 1 THEN FNC_NUMEROLOJA(loja) - ELSE RESTAURANTE.FNC_NUMEROLOJA(loja) - END as cod_empresa, - CASE - WHEN empresa_tipo = 1 THEN FNC_NOMEPESSOAS(loja) - ELSE RESTAURANTE.FNC_NOMEPESSOAS(loja) - END 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(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(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 + 'Lojas' AS canalapp, + FNC_NUMEROLOJA(loja) AS cod_empresa, + FNC_NOMEPESSOAS(loja) AS nomeempresaapp, + GROUPING(loja) AS is_total, + -- Calculos + 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(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(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((empresa_tipo, loja), ()) + GROUP BY GROUPING SETS ((loja), ()) ` } }, @@ -1125,9 +1126,13 @@ where 1 = 0`, Verdemar: [ { name: 'Procedure que atualiza os dados do flash', - command: /*sql*/ `BEGIN - END`, - cron: "0 * * * *", + command: /*sql*/ `BEGIN + PRC_FLASH_ATUALIZA_VENDA( + p_data_inicial => TRUNC(SYSDATE) -1, + p_data_final => TRUNC(SYSDATE) + ); + END;`, + cron: "0 */2 * * *", timeout_seconds: 2400, } ]