From 300b0e44eb98a897df436567f7b42a5b49d95b85 Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Fri, 22 May 2026 16:11:04 -0300 Subject: [PATCH] =?UTF-8?q?Adic=C3=A7=C3=A3o=20de=20campos=20na=20tabela?= =?UTF-8?q?=20fato=5Fvenda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._tb_flash_fato_venda_add_nome_segmento.sql | 24 +++ ..._tb_flash_fato_venda_add_nome_segmento.sql | 24 +++ src/flash/flash.module.ts | 148 +++++++++--------- 3 files changed, 124 insertions(+), 72 deletions(-) create mode 100644 migrations/C5/20260522000001_tb_flash_fato_venda_add_nome_segmento.sql create mode 100644 migrations/C5_big/20260522000001_tb_flash_fato_venda_add_nome_segmento.sql diff --git a/migrations/C5/20260522000001_tb_flash_fato_venda_add_nome_segmento.sql b/migrations/C5/20260522000001_tb_flash_fato_venda_add_nome_segmento.sql new file mode 100644 index 0000000..b2142ef --- /dev/null +++ b/migrations/C5/20260522000001_tb_flash_fato_venda_add_nome_segmento.sql @@ -0,0 +1,24 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_FATO_VENDA' AND column_name = 'NOME_SEGMENTO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA ADD (NOME_SEGMENTO VARCHAR2(300))'; + EXECUTE IMMEDIATE 'COMMENT ON COLUMN TB_FLASH_FATO_VENDA.NOME_SEGMENTO IS ''Nome do segmento'''; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_FATO_VENDA' AND column_name = 'NOME_SEGMENTO'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA DROP COLUMN NOME_SEGMENTO'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260522000001_tb_flash_fato_venda_add_nome_segmento.sql b/migrations/C5_big/20260522000001_tb_flash_fato_venda_add_nome_segmento.sql new file mode 100644 index 0000000..b2142ef --- /dev/null +++ b/migrations/C5_big/20260522000001_tb_flash_fato_venda_add_nome_segmento.sql @@ -0,0 +1,24 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_FATO_VENDA' AND column_name = 'NOME_SEGMENTO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA ADD (NOME_SEGMENTO VARCHAR2(300))'; + EXECUTE IMMEDIATE 'COMMENT ON COLUMN TB_FLASH_FATO_VENDA.NOME_SEGMENTO IS ''Nome do segmento'''; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_FATO_VENDA' AND column_name = 'NOME_SEGMENTO'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA DROP COLUMN NOME_SEGMENTO'; + END IF; +END; +-- +goose StatementEnd diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index fd8de3c..b0655bc 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -201,80 +201,84 @@ export default moduleFactory flash: (args) => { return { sql: /*sql*/ ` - SELECT - x.canalapp AS canalapp, - x.numero_loja AS cod_empresa, - x.nome_loja AS nomeempresaapp, - CASE - WHEN GROUPING(x.numero_loja) = 1 THEN 1 - ELSE 0 - END AS is_total, - SUM(CASE WHEN x.periodo = 'ATUAL' AND x.data = TO_DATE(${args.data_venda}, 'YYYY-MM-DD') THEN x.venda ELSE 0 END) AS venda_dia, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) * 1.02 AS meta_mes, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) AS mes_atual, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) - - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) * 1.02 AS dif_mes_atual, - CASE - WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) * 1.02 = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) / - (SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) * 1.02)) * 100) - 100 - , 2) - END AS variacao_atual, - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.venda ELSE 0 END) AS mes_anterior, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) - - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.venda ELSE 0 END) AS dif_mes_anterior, - CASE - WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.venda ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.venda ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_mes_anterior, - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.venda ELSE 0 END) AS ano_anterior, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) - - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.venda ELSE 0 END) AS dif_ano_anterior, - CASE - WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.venda ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.venda ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_ano_anterior - FROM ( - SELECT - sv.numero_loja, - sv.nome_loja, - sv.data, - sv.venda, - CASE WHEN sv.nrosegmento = 5 THEN 'GOURMET' ELSE 'VAREJO' END AS canalapp, + SELECT + 'Lojas' AS canalapp, + x.codigo AS cod_empresa, + x.nomeempresaapp AS nomeempresaapp, CASE - WHEN sv.data BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') - AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - THEN 'ATUAL' - WHEN sv.data BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) - THEN 'MES_ANTERIOR' - WHEN sv.data BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) - THEN 'ANO_ANTERIOR' - END AS periodo - FROM TB_SUMARIZACAO_VENDA sv - WHERE (sv.numero_loja IN (${args.ctx_user_companies_for_module})) - AND ( - sv.data BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') - AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - OR sv.data BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) - OR sv.data BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + WHEN GROUPING(x.codigo) = 1 THEN 1 + ELSE 0 + END AS is_total, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, + CASE + WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_atual, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) - + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_mes_anterior, + CASE + WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_mes_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) - + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_ano_anterior, + CASE + WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_ano_anterior + FROM + ( + SELECT + n.codigo, + n.nome AS nomeempresaapp, + r.valor_meta_efetiva, + r.valor_venda, + CASE + WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + THEN 'ATUAL' + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + THEN 'MES_ANTERIOR' + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + THEN 'ANO_ANTERIOR' + END AS periodo + FROM + tb_flash_nodo_resumo_venda r + JOIN tb_flash_nodo n + ON + n.id_nodo = r.id_nodo + WHERE + n.tipo_nodo = 'EMPRESA' + and (n.cod_empresa in (${args.ctx_user_companies_for_module})) + AND ( + r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + ) + ) x + GROUP BY + GROUPING SETS ( + (x.codigo, x.nomeempresaapp), + () ) - ) x - GROUP BY - GROUPING SETS ( - (x.canalapp, x.numero_loja, x.nome_loja), - () - ) `, }; },