Ajuste query flash por loja sem MVs e adicao query flash categoria
This commit is contained in:
+63
-58
@@ -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,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user