diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index e5da625..bac0a9a 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -1,6 +1,6 @@ import { createModuleFactory, createSchedule } from "@davinti/jeff"; -const moduleFactory = createModuleFactory(["C5", "C5_big", "C5_mambo"]); +const moduleFactory = createModuleFactory(["C5", "C5_big", "C5_mambo", "Verdemar"]); export default moduleFactory .createModule({ @@ -980,6 +980,98 @@ where 1 = 0`, } }, }, + Verdemar:{ + flash: (args) => { + return { + sql: /*sql*/` + 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 + ), + DadosUnificados AS ( + SELECT loja, empresa_tipo, data, venda, 0 as meta + FROM ( + SELECT 1 AS empresa_tipo, loja, data, venda FROM MV_VENDAS_VERDEMAR_DIA + UNION ALL + SELECT 131 AS empresa_tipo, loja, data, venda FROM 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 FNC_CODIGOLOJA(m.loja_ajustada), 1, m.data, 0, m.meta_diaria + FROM ORCADO_METAS_IMPORT m + CROSS JOIN Parametros p + WHERE m.data BETWEEN p.dt_inicio_mes AND LAST_DAY(p.dt_ref) + ), + 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 + FROM DadosUnificados d + CROSS JOIN Parametros p + GROUP BY d.loja, d.empresa_tipo + ) + 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, + -- Cálculos + 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), ()); + ` + } + }, + flash_categorias: (args) => { + return { + sql: /*sql*/`` + } + }, + flash_vendas_ai: (args) => { + return { + sql: /*sql*/`` + } + }, + query_vazia : (args) => { + return { + sql: /*sql*/`` + } + } + } }) .withSchedules({ C5: [ @@ -1030,4 +1122,14 @@ where 1 = 0`, timeout_seconds: 2400, }, ], + + Verdemar: [ + { + name: 'Procedure que atualiza os dados do flash', + command: /*sql*/ `BEGIN + END`, + cron: "0 * * * *", + timeout_seconds: 2400, + } + ] });