This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
-- +goose Up
|
||||||
|
-- +goose StatementBegin
|
||||||
|
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_META_CONTRIBUICAO_STG (
|
||||||
|
p_data_inicial IN DATE,
|
||||||
|
p_data_final IN DATE
|
||||||
|
) AS
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM TB_FLASH_META_CONTRIBUICAO_STG
|
||||||
|
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||||
|
|
||||||
|
INSERT INTO TB_FLASH_META_CONTRIBUICAO_STG (
|
||||||
|
cod_empresa, tipo_nodo, codigo_nodo, codigo_nodo_pai, tipo_nodo_pai,
|
||||||
|
data_referencia, ano_referencia, mes_referencia, dia_referencia,
|
||||||
|
percentual_meta, valor_meta, observacao, origem_meta, data_carga
|
||||||
|
)
|
||||||
|
SELECT cod_empresa, tipo_nodo, codigo_nodo, codigo_nodo_pai, tipo_nodo_pai,
|
||||||
|
data_referencia, ano_referencia, mes_referencia, dia_referencia,
|
||||||
|
percentual_meta, valor_meta, observacao, origem_meta, SYSDATE
|
||||||
|
FROM VW_FLASH_META_CONTRIBUICAO_STG
|
||||||
|
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
END;
|
||||||
|
-- +goose StatementEnd
|
||||||
|
|
||||||
|
-- +goose Down
|
||||||
|
-- +goose StatementBegin
|
||||||
|
DECLARE
|
||||||
|
v_count NUMBER;
|
||||||
|
BEGIN
|
||||||
|
SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'PRC_FLASH_CARGA_META_CONTRIBUICAO_STG' AND object_type = 'PROCEDURE';
|
||||||
|
IF v_count > 0 THEN
|
||||||
|
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_META_CONTRIBUICAO_STG';
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
-- +goose StatementEnd
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
-- +goose Up
|
||||||
|
-- +goose StatementBegin
|
||||||
|
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_META_CONTRIBUICAO (
|
||||||
|
p_data_inicial IN DATE,
|
||||||
|
p_data_final IN DATE
|
||||||
|
) AS
|
||||||
|
v_id_nodo NUMBER;
|
||||||
|
v_id_nodo_pai NUMBER;
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM TB_FLASH_META_CONTRIBUICAO
|
||||||
|
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||||
|
|
||||||
|
FOR r IN (
|
||||||
|
SELECT *
|
||||||
|
FROM TB_FLASH_META_CONTRIBUICAO_STG
|
||||||
|
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||||
|
) LOOP
|
||||||
|
v_id_nodo := NULL;
|
||||||
|
v_id_nodo_pai := NULL;
|
||||||
|
|
||||||
|
IF r.codigo_nodo_pai IS NOT NULL THEN
|
||||||
|
BEGIN
|
||||||
|
SELECT n.id_nodo
|
||||||
|
INTO v_id_nodo_pai
|
||||||
|
FROM TB_FLASH_NODO n
|
||||||
|
WHERE n.codigo = r.codigo_nodo_pai
|
||||||
|
AND n.tipo_nodo = r.tipo_nodo_pai
|
||||||
|
AND NVL(n.cod_empresa, -1) = NVL(r.cod_empresa, -1);
|
||||||
|
EXCEPTION
|
||||||
|
WHEN TOO_MANY_ROWS THEN v_id_nodo_pai := NULL;
|
||||||
|
WHEN NO_DATA_FOUND THEN v_id_nodo_pai := NULL;
|
||||||
|
END;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
IF r.tipo_nodo = 'EMPRESA' THEN
|
||||||
|
SELECT n.id_nodo INTO v_id_nodo
|
||||||
|
FROM TB_FLASH_NODO n
|
||||||
|
WHERE n.tipo_nodo = 'EMPRESA'
|
||||||
|
AND n.codigo = r.codigo_nodo
|
||||||
|
AND n.id_nodo_pai IS NULL;
|
||||||
|
ELSIF r.tipo_nodo = 'PRODUTO' THEN
|
||||||
|
SELECT n.id_nodo INTO v_id_nodo
|
||||||
|
FROM TB_FLASH_NODO n
|
||||||
|
WHERE n.tipo_nodo = 'PRODUTO'
|
||||||
|
AND n.codigo = r.codigo_nodo
|
||||||
|
AND NVL(n.cod_empresa, -1) = NVL(r.cod_empresa, -1)
|
||||||
|
AND (v_id_nodo_pai IS NULL OR n.id_nodo_pai = v_id_nodo_pai);
|
||||||
|
ELSE
|
||||||
|
SELECT n.id_nodo INTO v_id_nodo
|
||||||
|
FROM TB_FLASH_NODO n
|
||||||
|
WHERE n.tipo_nodo = 'CATEGORIA'
|
||||||
|
AND n.codigo = r.codigo_nodo
|
||||||
|
AND NVL(n.cod_empresa, -1) = NVL(r.cod_empresa, -1)
|
||||||
|
AND (v_id_nodo_pai IS NULL OR n.id_nodo_pai = v_id_nodo_pai);
|
||||||
|
END IF;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN TOO_MANY_ROWS THEN v_id_nodo := NULL;
|
||||||
|
WHEN NO_DATA_FOUND THEN v_id_nodo := NULL;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF v_id_nodo IS NOT NULL THEN
|
||||||
|
MERGE INTO TB_FLASH_META_CONTRIBUICAO dst
|
||||||
|
USING (
|
||||||
|
SELECT v_id_nodo AS id_nodo,
|
||||||
|
r.data_referencia AS data_referencia,
|
||||||
|
r.ano_referencia AS ano_referencia,
|
||||||
|
r.mes_referencia AS mes_referencia,
|
||||||
|
r.dia_referencia AS dia_referencia,
|
||||||
|
r.percentual_meta AS percentual_meta,
|
||||||
|
r.valor_meta AS valor_meta,
|
||||||
|
r.observacao AS observacao
|
||||||
|
FROM dual
|
||||||
|
) src
|
||||||
|
ON (dst.id_nodo = src.id_nodo AND dst.data_referencia = src.data_referencia)
|
||||||
|
WHEN MATCHED THEN UPDATE SET
|
||||||
|
dst.percentual_meta = src.percentual_meta,
|
||||||
|
dst.valor_meta = src.valor_meta,
|
||||||
|
dst.observacao = src.observacao,
|
||||||
|
dst.ano_referencia = src.ano_referencia,
|
||||||
|
dst.mes_referencia = src.mes_referencia,
|
||||||
|
dst.dia_referencia = src.dia_referencia,
|
||||||
|
dst.data_atualizacao = SYSDATE
|
||||||
|
WHEN NOT MATCHED THEN INSERT (
|
||||||
|
id_meta, id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia,
|
||||||
|
percentual_meta, valor_meta, observacao, data_cadastro, data_atualizacao
|
||||||
|
) VALUES (
|
||||||
|
SEQ_TB_FLASH_META_CONTRIBUICAO.NEXTVAL, src.id_nodo, src.data_referencia, src.ano_referencia,
|
||||||
|
src.mes_referencia, src.dia_referencia, src.percentual_meta, src.valor_meta, src.observacao,
|
||||||
|
SYSDATE, NULL
|
||||||
|
);
|
||||||
|
END IF;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
END;
|
||||||
|
-- +goose StatementEnd
|
||||||
|
|
||||||
|
-- +goose Down
|
||||||
|
-- +goose StatementBegin
|
||||||
|
DECLARE
|
||||||
|
v_count NUMBER;
|
||||||
|
BEGIN
|
||||||
|
SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'PRC_FLASH_CARGA_META_CONTRIBUICAO' AND object_type = 'PROCEDURE';
|
||||||
|
IF v_count > 0 THEN
|
||||||
|
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_META_CONTRIBUICAO';
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
-- +goose StatementEnd
|
||||||
Reference in New Issue
Block a user