diff --git a/migrations/C5/20260522000006_prc_flash_atualiza_venda_dono.sql b/migrations/C5/20260522000006_prc_flash_atualiza_venda_dono.sql new file mode 100644 index 0000000..4108c62 --- /dev/null +++ b/migrations/C5/20260522000006_prc_flash_atualiza_venda_dono.sql @@ -0,0 +1,78 @@ +-- +goose Up +-- +goose StatementBegin +CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA_DONO ( + p_data_inicial IN DATE, + p_data_final IN DATE, + p_empresas IN VARCHAR2 DEFAULT NULL +) AS + v_inicio_execucao DATE := SYSDATE; +BEGIN + DBMS_OUTPUT.PUT_LINE('Iniciando PRC_FLASH_ATUALIZA_VENDA_DONO em ' || TO_CHAR(v_inicio_execucao, 'DD/MM/YYYY HH24:MI:SS')); + DBMS_OUTPUT.PUT_LINE('Período: ' || TO_CHAR(p_data_inicial, 'DD/MM/YYYY') || ' até ' || TO_CHAR(p_data_final, 'DD/MM/YYYY')); + + FOR r IN ( + SELECT codigo + FROM vitruvio.vi_lojas + WHERE (p_empresas IS NULL OR INSTR(',' || p_empresas || ',', ',' || TO_CHAR(codigo) || ',') > 0) + ORDER BY codigo + ) LOOP + BEGIN + DBMS_OUTPUT.PUT_LINE('Carregando venda da empresa: ' || r.codigo); + + PRC_FLASH_CARGA_DADOS_VENDA( + p_data_inicial => p_data_inicial, + p_data_final => p_data_final, + p_empresa => r.codigo + ); + + EXCEPTION + WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE( + 'Erro ao carregar empresa ' || r.codigo || ': ' || SQLERRM + ); + RAISE; + END; + END LOOP; + + DBMS_OUTPUT.PUT_LINE('Carregando stage de metas de venda...'); + + PRC_FLASH_CARGA_META_VENDA_STG( + p_data_inicial => p_data_inicial, + p_data_final => p_data_final + ); + + DBMS_OUTPUT.PUT_LINE('Carregando metas finais de venda...'); + + PRC_FLASH_CARGA_META_VENDA( + p_data_inicial => p_data_inicial, + p_data_final => p_data_final + ); + + DBMS_OUTPUT.PUT_LINE('Atualizando resumo de venda...'); + + PRC_FLASH_CARGA_RESUMO_VENDA( + p_data_inicial => p_data_inicial, + p_data_final => p_data_final + ); + + DBMS_OUTPUT.PUT_LINE('PRC_FLASH_ATUALIZA_VENDA_DONO finalizada em ' || TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS')); + DBMS_OUTPUT.PUT_LINE('Tempo em segundos: ' || ROUND((SYSDATE - v_inicio_execucao) * 86400, 2)); + +EXCEPTION + WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE('Erro geral na PRC_FLASH_ATUALIZA_VENDA_DONO: ' || SQLERRM); + RAISE; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM all_objects WHERE object_name = 'PRC_FLASH_ATUALIZA_VENDA_DONO' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA_DONO'; + END IF; +END; +-- +goose StatementEnd diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index ee5ab72..3a94e07 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -968,14 +968,13 @@ where 1 = 0`, C5: [ createSchedule({ name: "Procedure que atualiza os dados do flash", - params: [], - command: (params) => ({ + params: ["empresas"], + command: (args) => ({ sql: /*sql*/ `BEGIN PRC_FLASH_ATUALIZA_VENDA_DONO( p_data_inicial => TRUNC(SYSDATE) - 30, p_data_final => TRUNC(SYSDATE), - p_empresa_ini => 1, - p_empresa_fim => 300 + p_empresas => ${args.empresas} ); END;`, }),