Atualização de migrations de objetos de banco de dados.
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_VENDA (
|
||||
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_VENDA
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
INSERT INTO TB_FLASH_FATO_VENDA (
|
||||
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, nro_tickets, vlr_imp_venda, qtde_venda,
|
||||
vlr_venda, vl_ticket_medio, propqtdprodutobase, data_cadastro, nome_segmento
|
||||
)
|
||||
WITH pg AS (
|
||||
SELECT MAX(indutilicmstaresugprabc) AS indutilicmstaresugprabc
|
||||
FROM consinco.max_paramgeral
|
||||
),
|
||||
cat AS (
|
||||
SELECT dc.nrodivisao, dc.seqfamilia,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 1 THEN dc.seqcategoria END) AS codcatn1,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 1 THEN cc.categoria END) AS nomecatn1,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 2 THEN dc.seqcategoria END) AS codcatn2,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 2 THEN cc.categoria END) AS nomecatn2,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 3 THEN dc.seqcategoria END) AS codcatn3,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 3 THEN cc.categoria END) AS nomecatn3,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 4 THEN dc.seqcategoria END) AS codcatn4,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 4 THEN cc.categoria END) AS nomecatn4,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 5 THEN dc.seqcategoria END) AS codcatn5,
|
||||
MAX(CASE WHEN cc.nivelhierarquia = 5 THEN cc.categoria END) AS nomecatn5
|
||||
FROM consinco.map_famdivcateg dc
|
||||
JOIN consinco.map_categoria cc
|
||||
ON cc.seqcategoria = dc.seqcategoria AND cc.nrodivisao = dc.nrodivisao
|
||||
AND cc.statuscategor = 'A' AND cc.tipcategoria = 'M' AND cc.nivelhierarquia BETWEEN 1 AND 5
|
||||
WHERE dc.status = 'A'
|
||||
GROUP BY dc.nrodivisao, dc.seqfamilia
|
||||
),
|
||||
dados AS (
|
||||
SELECT dv.nrodivisao, seg1.nrosegmento, seg1.descsegmento,
|
||||
e.nroempresa AS empresa, e.nomereduzido AS nomeempresa,
|
||||
a.seqproduto AS cod_produto, a.seqprodutobase, a.desccompleta AS descricao,
|
||||
z.dtaentradasaida AS data_referencia,
|
||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'D')) AS dia_semana,
|
||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'DD')) AS dia,
|
||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'MM')) AS mes,
|
||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'YYYY')) AS ano,
|
||||
0 AS nro_tickets,
|
||||
SUM(DECODE(y.qtdvda,0,0,(y.vlrimpostovda+NVL(DECODE(pg.indutilicmstaresugprabc,'S',COALESCE(y.vlricmsvdasolicit,y.vlricmsvda),y.vlricmsvda),0)+NVL(y.vlrpisvda,0)+NVL(y.vlrcofinsvda,0))/y.qtdvda)*z.qtdvda)
|
||||
+SUM(DECODE(NVL(y.qtddevol,0),0,0,(NVL(y.vlrimpostodevol,0)+NVL(DECODE(pg.indutilicmstaresugprabc,'S',DECODE(y.qtdvda,0,0,COALESCE((y.vlricmsvdasolicit/y.qtdvda)*y.qtddevol,y.vlricmsdevol)),((z.vlricmsvda/GREATEST(z.qtdvda,1))*NVL(z.qtddevol,0))),0)+NVL(y.vlrpisdevol,0)+NVL(y.vlrcofinsdevol,0))/y.qtddevol)*(0-NVL(z.qtddevol,0))) AS vlr_imp_venda,
|
||||
SUM((z.qtdvda - NVL(z.qtddevol,0)) / k.qtdembalagem) AS qtde_venda,
|
||||
SUM(z.vlrtotalvda) - SUM(NVL(z.vlrtotaldevol,0)) AS vlr_venda,
|
||||
0 AS vl_ticket_medio,
|
||||
a.propqtdprodutobase
|
||||
FROM consinco.mrl_custodia z
|
||||
JOIN consinco.max_empresa e ON e.nroempresa = z.nroempresa
|
||||
JOIN consinco.mrl_custodia y ON y.seqproduto = z.seqproduto AND y.dtaentradasaida = z.dtaentradasaida AND y.nroempresa = z.nroempresa
|
||||
JOIN consinco.map_famdivisao d ON d.seqfamilia = z.seqfamilia AND d.nrodivisao = e.nrodivisao
|
||||
JOIN consinco.max_divisao dv ON dv.nrodivisao = d.nrodivisao
|
||||
JOIN consinco.mad_segmento seg1 ON seg1.nrodivisao = d.nrodivisao
|
||||
JOIN consinco.mad_famsegmento h ON h.seqfamilia = z.seqfamilia AND h.nrosegmento = e.nrosegmentoprinc AND h.nrosegmento = seg1.nrosegmento
|
||||
JOIN consinco.map_famembalagem k ON k.seqfamilia = h.seqfamilia AND k.qtdembalagem = 1
|
||||
JOIN consinco.map_produto a ON a.seqproduto = z.seqproduto AND a.seqfamilia = d.seqfamilia
|
||||
JOIN cat ON cat.nrodivisao = d.nrodivisao AND cat.seqfamilia = d.seqfamilia
|
||||
CROSS JOIN pg
|
||||
WHERE z.dtaentradasaida BETWEEN p_data_inicial AND p_data_final
|
||||
AND z.nroempresa = p_empresa
|
||||
AND (p_divisao IS NULL OR d.nrodivisao IN (SELECT TO_NUMBER(REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL)) FROM dual CONNECT BY REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL) IS NOT NULL))
|
||||
AND (z.vlrtotalvda > 0 OR z.vlrtotaldevol > 0)
|
||||
AND EXISTS (SELECT 1 FROM consinco.maxv_abcdistribbase b WHERE b.seqproduto=z.seqproduto AND b.nroempresa=z.nroempresa AND b.dtavda=z.dtaentradasaida AND (p_cgos IS NULL OR b.codgeraloper IN (SELECT TO_NUMBER(REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL)) FROM dual CONNECT BY REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL) IS NOT NULL)))
|
||||
GROUP BY dv.nrodivisao, seg1.nrosegmento, seg1.descsegmento, e.nroempresa, e.nomereduzido,
|
||||
a.seqproduto, a.seqprodutobase, a.desccompleta, z.dtaentradasaida, a.propqtdprodutobase
|
||||
),
|
||||
nodo_empresa AS (
|
||||
SELECT codigo, MAX(id_nodo) AS id_nodo
|
||||
FROM TB_FLASH_NODO WHERE tipo_nodo = 'EMPRESA' AND id_nodo_pai IS NULL GROUP BY codigo
|
||||
),
|
||||
nodo_produto AS (
|
||||
SELECT codigo, cod_empresa, seqprodutobase, MAX(id_nodo) AS id_nodo
|
||||
FROM TB_FLASH_NODO WHERE tipo_nodo = 'PRODUTO' GROUP BY codigo, cod_empresa, seqprodutobase
|
||||
)
|
||||
SELECT SEQ_TB_FLASH_FATO_VENDA.NEXTVAL,
|
||||
r.data_referencia, r.ano, r.mes, r.dia, r.dia_semana,
|
||||
np.id_nodo AS id_nodo, ne.id_nodo AS id_nodo_empresa,
|
||||
r.empresa, r.nomeempresa, r.cod_produto, r.descricao, r.seqprodutobase,
|
||||
r.nrodivisao, r.nrosegmento, r.nro_tickets, r.vlr_imp_venda, r.qtde_venda,
|
||||
r.vlr_venda, r.vl_ticket_medio, r.propqtdprodutobase, SYSDATE, r.descsegmento
|
||||
FROM dados r
|
||||
JOIN nodo_empresa ne ON ne.codigo = TO_CHAR(r.empresa)
|
||||
JOIN nodo_produto np ON np.codigo = TO_CHAR(r.cod_produto) AND np.cod_empresa = r.empresa AND NVL(np.seqprodutobase,-1) = NVL(r.seqprodutobase,-1);
|
||||
|
||||
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_VENDA' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_DADOS_VENDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
Reference in New Issue
Block a user