Atualização de migrations de objetos de banco de dados.
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_PERDA (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE,
|
||||
p_empresa IN NUMBER,
|
||||
p_divisao IN VARCHAR2 DEFAULT NULL,
|
||||
p_cgos IN VARCHAR2 DEFAULT NULL
|
||||
) AS
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_FATO_PERDA
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
INSERT INTO TB_FLASH_FATO_PERDA (
|
||||
id_fato, data_referencia, ano_referencia, mes_referencia, dia_referencia, dia_semana,
|
||||
id_nodo, id_nodo_empresa, cod_empresa, nome_empresa, cod_produto, descricao_produto,
|
||||
seqprodutobase, nrodivisao, nrosegmento, qtde_perda, vlr_perda,
|
||||
propqtdprodutobase, data_cadastro, nome_segmento
|
||||
)
|
||||
SELECT
|
||||
SEQ_TB_FLASH_FATO_PERDA.NEXTVAL,
|
||||
x.data_referencia, x.ano_referencia, x.mes_referencia, x.dia_referencia, x.dia_semana,
|
||||
x.id_nodo, x.id_nodo_empresa, x.cod_empresa, x.nome_empresa,
|
||||
x.cod_produto, x.descricao_produto, x.seqprodutobase, x.nrodivisao, x.nrosegmento,
|
||||
x.qtde_perda, x.vlr_perda, x.propqtdprodutobase, x.data_cadastro, x.nome_segmento
|
||||
FROM (
|
||||
SELECT
|
||||
TRUNC(a.DTAVDA) AS data_referencia,
|
||||
EXTRACT(YEAR FROM a.DTAVDA) AS ano_referencia,
|
||||
EXTRACT(MONTH FROM a.DTAVDA) AS mes_referencia,
|
||||
EXTRACT(DAY FROM a.DTAVDA) AS dia_referencia,
|
||||
TO_NUMBER(TO_CHAR(a.DTAVDA,'D')) AS dia_semana,
|
||||
MIN(b.id_nodo) AS id_nodo,
|
||||
MIN(c.id_nodo) AS id_nodo_empresa,
|
||||
b.cod_empresa AS cod_empresa,
|
||||
MAX(d.fantasia) AS nome_empresa,
|
||||
a.seqproduto AS cod_produto,
|
||||
MAX(e.descreduzida) AS descricao_produto,
|
||||
MAX(e.seqprodutobase) AS seqprodutobase,
|
||||
MIN(a.nrodivisao) AS nrodivisao,
|
||||
a.nrosegmento AS nrosegmento,
|
||||
SUM(a.qtditem) AS qtde_perda,
|
||||
SUM(a.vlritem) AS vlr_perda,
|
||||
MAX(e.propqtdprodutobase) AS propqtdprodutobase,
|
||||
SYSDATE AS data_cadastro,
|
||||
MAX(seg1.descsegmento) AS nome_segmento
|
||||
FROM consinco.maxv_abcdistribbase a
|
||||
INNER JOIN vitruvio.TB_FLASH_NODO b ON b.tipo_nodo = 'PRODUTO' AND b.cod_empresa = a.nroempresa AND b.cod_produto = a.seqproduto
|
||||
INNER JOIN vitruvio.TB_FLASH_NODO c ON c.tipo_nodo = 'EMPRESA' AND c.cod_empresa = a.nroempresa
|
||||
INNER JOIN consinco.max_empresa d ON d.nroempresa = c.cod_empresa
|
||||
INNER JOIN consinco.map_produto e ON e.seqproduto = a.seqproduto
|
||||
INNER JOIN consinco.mad_segmento seg1 ON seg1.nrodivisao = a.nrodivisao AND seg1.nrosegmento = a.nrosegmento
|
||||
WHERE a.nroempresa = p_empresa
|
||||
AND a.dtavda BETWEEN p_data_inicial AND p_data_final
|
||||
AND (p_cgos IS NULL OR a.codgeraloper IN (SELECT TO_NUMBER(REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL)) FROM dual CONNECT BY REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL) IS NOT NULL))
|
||||
AND (p_divisao IS NULL OR a.nrodivisao IN (SELECT TO_NUMBER(REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL)) FROM dual CONNECT BY REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL) IS NOT NULL))
|
||||
GROUP BY TRUNC(a.dtavda), EXTRACT(YEAR FROM a.dtavda), EXTRACT(MONTH FROM a.dtavda),
|
||||
EXTRACT(DAY FROM a.dtavda), TO_NUMBER(TO_CHAR(a.dtavda,'D')), b.cod_empresa, a.seqproduto, a.nrosegmento
|
||||
) x;
|
||||
|
||||
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_DADOS_PERDA' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_DADOS_PERDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
Reference in New Issue
Block a user