-- +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_empresa_ini IN NUMBER DEFAULT NULL, p_empresa_fim IN NUMBER 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 codigo NOT IN (301, 401, 500) AND (p_empresa_ini IS NULL OR codigo >= p_empresa_ini) AND (p_empresa_fim IS NULL OR codigo <= p_empresa_fim) 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 StatementBegin DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM all_objects WHERE object_name = 'PRC_FLASH_ATUALIZA_VENDA_DONO_DONO' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO'; IF v_count > 0 THEN EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA_DONO_DONO'; END IF; 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