Ajuste query flash por loja sem MVs e adicao query flash categoria

This commit is contained in:
Sarah Magalhães
2026-06-02 15:44:46 -03:00
parent f28ce3fff9
commit 1cf8f38886
+63 -58
View File
@@ -984,74 +984,75 @@ where 1 = 0`,
flash: (args) => { flash: (args) => {
return { return {
sql: /*sql*/` sql: /*sql*/`
WITH Parametros AS ( WITH Parametros AS (
SELECT SELECT
TO_DATE(${args.data_venda}, 'YYYY-MM-DD') as dt_ref, 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, 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(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(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(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 ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) AS dt_fim_ano_ant
FROM DUAL FROM DUAL
), ),
DadosUnificados AS ( Vendas AS (
SELECT loja, empresa_tipo, data, venda, 0 as meta -- Venda diaria por loja (lê só os nos EMPRESA do resumo, que já vem com rollup)
FROM ( SELECT n.cod_empresa AS loja,
SELECT 1 AS empresa_tipo, loja, data, venda FROM VERDEMAR.MV_VENDAS_VERDEMAR_DIA r.data_referencia AS data,
UNION ALL r.valor_venda AS venda,
SELECT 131 AS empresa_tipo, loja, data, venda FROM VERDEMAR.MV_VENDAS_RESTAURANTE_DIA 0 AS meta
) v FROM VERDEMAR.TB_FLASH_NODO_RESUMO_VENDA r
CROSS JOIN Parametros p JOIN VERDEMAR.TB_FLASH_NODO n ON n.id_nodo = r.id_nodo
WHERE (v.data BETWEEN p.dt_inicio_mes AND p.dt_ref) CROSS JOIN Parametros p
OR (v.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant) WHERE n.tipo_nodo = 'EMPRESA'
OR (v.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant) AND n.ativo = 'S'
AND ( r.data_referencia BETWEEN p.dt_inicio_mes AND p.dt_ref
UNION ALL 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)
SELECT VERDEMAR.FNC_CODIGOLOJA(m.loja_ajustada), 1, m.data, 0, m.meta_diaria ),
FROM VERDEMAR.ORCADO_METAS_IMPORT m Metas AS (
CROSS JOIN Parametros p -- 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) 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 ( Agrupado AS (
SELECT SELECT
d.loja, 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 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 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.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_ano_ant AND p.dt_fim_ano_ant THEN d.venda ELSE 0 END) as v_ano_ant
FROM DadosUnificados d FROM DadosUnificados d
CROSS JOIN Parametros p CROSS JOIN Parametros p
GROUP BY d.loja, d.empresa_tipo GROUP BY d.loja
) )
SELECT SELECT
CASE 'Lojas' AS canalapp,
WHEN empresa_tipo = 131 THEN 'RESTAURANTE' FNC_NUMEROLOJA(loja) AS cod_empresa,
WHEN FNC_NUMEROLOJA(loja) = 0 THEN 'TOTAL' FNC_NOMEPESSOAS(loja) AS nomeempresaapp,
ELSE 'VERDEMAR' GROUPING(loja) AS is_total,
END as canalapp, -- Calculos
CASE SUM(m_mes) AS meta_mes,
WHEN empresa_tipo = 1 THEN FNC_NUMEROLOJA(loja) SUM(v_mes) AS mes_atual,
ELSE RESTAURANTE.FNC_NUMEROLOJA(loja) SUM(v_mes) - SUM(m_mes) AS dif_mes_atual,
END as cod_empresa, ROUND(NVL((SUM(v_mes) / NULLIF(SUM(m_mes), 0)) * 100 - 100, 0), 2) AS variacao_atual,
CASE SUM(v_mes_ant) AS mes_anterior,
WHEN empresa_tipo = 1 THEN FNC_NOMEPESSOAS(loja) SUM(v_mes) - SUM(v_mes_ant) AS dif_mes_anterior,
ELSE RESTAURANTE.FNC_NOMEPESSOAS(loja) ROUND(NVL((SUM(v_mes) / NULLIF(SUM(v_mes_ant), 0)) * 100 - 100, 0), 2) AS variacao_mes_anterior,
END as nomeempresaapp, SUM(v_ano_ant) AS ano_anterior,
GROUPING(loja) as is_total, SUM(v_mes) - SUM(v_ano_ant) AS dif_ano_anterior,
SUM(m_mes) as meta_mes, ROUND(NVL((SUM(v_mes) / NULLIF(SUM(v_ano_ant), 0)) * 100 - 100, 0), 2) AS variacao_ano_anterior
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 FROM Agrupado
GROUP BY GROUPING SETS((empresa_tipo, loja), ()) GROUP BY GROUPING SETS ((loja), ())
` `
} }
}, },
@@ -1125,9 +1126,13 @@ where 1 = 0`,
Verdemar: [ Verdemar: [
{ {
name: 'Procedure que atualiza os dados do flash', name: 'Procedure que atualiza os dados do flash',
command: /*sql*/ `BEGIN command: /*sql*/ `BEGIN
END`, PRC_FLASH_ATUALIZA_VENDA(
cron: "0 * * * *", p_data_inicial => TRUNC(SYSDATE) -1,
p_data_final => TRUNC(SYSDATE)
);
END;`,
cron: "0 */2 * * *",
timeout_seconds: 2400, timeout_seconds: 2400,
} }
] ]