Atualizações e criação das tabelas para o ambiente do Barcelos.
davinTI/app-dono-modulos/pipeline/head This commit looks good
davinTI/app-dono-modulos/pipeline/head This commit looks good
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_NODO START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_NODO';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,93 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_NODO (
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
ID_NODO_PAI NUMBER,
|
||||
TIPO_NODO VARCHAR2(30) NOT NULL,
|
||||
CODIGO VARCHAR2(60) NOT NULL,
|
||||
NOME VARCHAR2(300) NOT NULL,
|
||||
NIVEL NUMBER NOT NULL,
|
||||
ORDEM_EXIBICAO NUMBER,
|
||||
ATIVO CHAR(1) DEFAULT ''S'' NOT NULL,
|
||||
COD_EMPRESA NUMBER,
|
||||
COD_PRODUTO NUMBER,
|
||||
SEQPRODUTOBASE NUMBER,
|
||||
DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL,
|
||||
DATA_ATUALIZACAO DATE,
|
||||
CONSTRAINT PK_TB_FLASH_NODO PRIMARY KEY (ID_NODO),
|
||||
CONSTRAINT FK_TB_FLASH_NODO_PAI FOREIGN KEY (ID_NODO_PAI) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_TIPO CHECK (TIPO_NODO IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'')),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_ATIVO CHECK (ATIVO IN (''S'', ''N'')),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_NIVEL CHECK (NIVEL >= 1)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_PAI';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_PAI ON TB_FLASH_NODO (ID_NODO_PAI)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_TIPO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_TIPO ON TB_FLASH_NODO (TIPO_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_EMPRESA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_EMPRESA ON TB_FLASH_NODO (COD_EMPRESA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_PRODUTO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_PRODUTO ON TB_FLASH_NODO (COD_PRODUTO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_NODO_PAI_TIPO_COD';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO ADD CONSTRAINT UK_TB_FLASH_NODO_PAI_TIPO_COD UNIQUE (ID_NODO_PAI, TIPO_NODO, CODIGO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_NODO CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,23 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_FATO_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_FATO_VENDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_FATO_VENDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_FATO_VENDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,111 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_FATO_VENDA (
|
||||
ID_FATO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2),
|
||||
DIA_SEMANA NUMBER(2),
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
ID_NODO_EMPRESA NUMBER NOT NULL,
|
||||
COD_EMPRESA NUMBER NOT NULL,
|
||||
NOME_EMPRESA VARCHAR2(200),
|
||||
COD_PRODUTO NUMBER NOT NULL,
|
||||
DESCRICAO_PRODUTO VARCHAR2(300),
|
||||
SEQPRODUTOBASE NUMBER,
|
||||
NRODIVISAO NUMBER,
|
||||
NROSEGMENTO NUMBER,
|
||||
NRO_TICKETS NUMBER(18,6),
|
||||
VLR_IMP_VNEDA NUMBER(18,6),
|
||||
QTDE_VENDA NUMBER(18,6),
|
||||
VLR_VENDA NUMBER(18,6),
|
||||
VL_TICKET_MEDIO NUMBER(18,6),
|
||||
PROPQTDPRODUTOBASE NUMBER(18,6),
|
||||
DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL,
|
||||
CONSTRAINT PK_TB_FLASH_FATO_VENDA PRIMARY KEY (ID_FATO),
|
||||
CONSTRAINT FK_TB_FLASH_FATO_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT FK_TB_FLASH_FATO_VENDA_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_FATO_VENDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_DATA ON TB_FLASH_FATO_VENDA (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_ANOMES';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_ANOMES ON TB_FLASH_FATO_VENDA (ANO_REFERENCIA, MES_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_NODO ON TB_FLASH_FATO_VENDA (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_EMP';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_EMP ON TB_FLASH_FATO_VENDA (COD_EMPRESA, ANO_REFERENCIA, MES_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_PROD';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_PROD ON TB_FLASH_FATO_VENDA (COD_PRODUTO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_FATO_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA ADD CONSTRAINT UK_TB_FLASH_FATO_VENDA UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_VENDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_FATO_VENDA CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,23 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_META_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_META_VENDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_META_VENDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_META_VENDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,80 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_META_VENDA (
|
||||
ID_META NUMBER NOT NULL,
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
PERCENTUAL_META NUMBER(10,4),
|
||||
VALOR_META NUMBER(18,6),
|
||||
OBSERVACAO VARCHAR2(500),
|
||||
DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL,
|
||||
DATA_ATUALIZACAO DATE,
|
||||
CONSTRAINT PK_TB_FLASH_META_VENDA PRIMARY KEY (ID_META),
|
||||
CONSTRAINT FK_TB_FLASH_META_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_META_VENDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_META_VENDA_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_META_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_META_VENDA ADD CONSTRAINT UK_TB_FLASH_META_VENDA UNIQUE (ID_NODO, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VENDA_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VENDA_NODO ON TB_FLASH_META_VENDA (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VENDA_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VENDA_DATA ON TB_FLASH_META_VENDA (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VENDA_ANOMESDIA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VENDA_ANOMESDIA ON TB_FLASH_META_VENDA (ANO_REFERENCIA, MES_REFERENCIA, DIA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_VENDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_META_VENDA CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,73 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_VENDA_STG';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_META_VENDA_STG (
|
||||
COD_EMPRESA NUMBER NOT NULL,
|
||||
TIPO_NODO VARCHAR2(30) NOT NULL,
|
||||
CODIGO_NODO VARCHAR2(60) NOT NULL,
|
||||
CODIGO_NODO_PAI VARCHAR2(60),
|
||||
TIPO_NODO_PAI VARCHAR2(30),
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
PERCENTUAL_META NUMBER(10,4),
|
||||
VALOR_META NUMBER(18,6),
|
||||
OBSERVACAO VARCHAR2(500),
|
||||
ORIGEM_META VARCHAR2(100),
|
||||
DATA_CARGA DATE DEFAULT SYSDATE,
|
||||
CONSTRAINT CK_TB_FLASH_META_VDA_STG_TIPO CHECK (TIPO_NODO IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'')),
|
||||
CONSTRAINT CK_TB_FLASH_META_VDA_STG_TIPO_PAI CHECK (TIPO_NODO_PAI IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'') OR TIPO_NODO_PAI IS NULL),
|
||||
CONSTRAINT CK_TB_FLASH_META_VDA_STG_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_META_VDA_STG_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VDA_STG_01';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VDA_STG_01 ON TB_FLASH_META_VENDA_STG (COD_EMPRESA, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VDA_STG_02';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VDA_STG_02 ON TB_FLASH_META_VENDA_STG (TIPO_NODO, CODIGO_NODO, CODIGO_NODO_PAI)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VDA_STG_03';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VDA_STG_03 ON TB_FLASH_META_VENDA_STG (ORIGEM_META)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_VENDA_STG';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_META_VENDA_STG CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,33 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE VIEW VW_FLASH_META_VENDA_STG AS
|
||||
SELECT m1.empresa_fk AS cod_empresa, 'CATEGORIA' AS tipo_nodo, TO_CHAR(m1.categoria_fk) AS codigo_nodo,
|
||||
TO_CHAR(m1.categoria_pai_fk) AS codigo_nodo_pai, 'CATEGORIA' AS tipo_nodo_pai,
|
||||
m1.data_referencia, m1.ano AS ano_referencia, m1.mes AS mes_referencia, m1.dia AS dia_referencia,
|
||||
m1.percentual AS percentual_meta, m1.valor_meta, 'TB_METAS_CATN1' AS observacao, 'TB_METAS_CATN1' AS origem_meta
|
||||
FROM vitruvio.tb_metas_catn1 m1
|
||||
UNION ALL
|
||||
SELECT m2.empresa_fk, 'CATEGORIA', TO_CHAR(m2.categoria_fk), TO_CHAR(m2.categoria_pai_fk), 'CATEGORIA',
|
||||
m2.data_referencia, m2.ano, m2.mes, m2.dia, m2.percentual, m2.valor_meta, 'TB_METAS_CATN2', 'TB_METAS_CATN2'
|
||||
FROM vitruvio.tb_metas_catn2 m2
|
||||
UNION ALL
|
||||
SELECT m3.empresa_fk, 'CATEGORIA', TO_CHAR(m3.categoria_fk), TO_CHAR(m3.categoria_pai_fk), 'CATEGORIA',
|
||||
m3.data_referencia, m3.ano, m3.mes, m3.dia, m3.percentual, m3.valor_meta, 'TB_METAS_CATN3', 'TB_METAS_CATN3'
|
||||
FROM vitruvio.tb_metas_catn3 m3
|
||||
UNION ALL
|
||||
SELECT m4.empresa_fk, 'CATEGORIA', TO_CHAR(m4.categoria_fk), TO_CHAR(m4.categoria_pai_fk), 'CATEGORIA',
|
||||
m4.data_referencia, m4.ano, m4.mes, m4.dia, m4.percentual, m4.valor_meta, 'TB_METAS_CATN4', 'TB_METAS_CATN4'
|
||||
FROM vitruvio.tb_metas_catn4 m4
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'VW_FLASH_META_VENDA_STG' AND object_type = 'VIEW';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP VIEW VW_FLASH_META_VENDA_STG';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,23 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO_RESUMO_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_NODO_RESUMO_VENDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO_RESUMO_VENDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_NODO_RESUMO_VENDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,85 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO_RESUMO_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_NODO_RESUMO_VENDA (
|
||||
ID_RESUMO NUMBER NOT NULL,
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
VALOR_VENDA NUMBER(18,6),
|
||||
VALOR_META_PROPRIA NUMBER(18,6),
|
||||
VALOR_META_FILHOS NUMBER(18,6),
|
||||
VALOR_META_EFETIVA NUMBER(18,6),
|
||||
PERCENTUAL_META_PROPRIA NUMBER(10,4),
|
||||
PERCENTUAL_META_FILHOS NUMBER(10,4),
|
||||
PERCENTUAL_META_EFETIVA NUMBER(10,4),
|
||||
DESVIO NUMBER(18,6),
|
||||
PERCENTUAL_ATINGIMENTO NUMBER(18,6),
|
||||
DATA_APURACAO DATE DEFAULT SYSDATE NOT NULL,
|
||||
CONSTRAINT PK_TB_FLASH_NODO_RES_VENDA PRIMARY KEY (ID_RESUMO),
|
||||
CONSTRAINT FK_TB_FLASH_NODO_RES_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_RES_VENDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_RES_VENDA_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_NODO_RES_VENDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_VENDA ADD CONSTRAINT UK_TB_FLASH_NODO_RES_VENDA UNIQUE (ID_NODO, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_VENDA_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_VENDA_NODO ON TB_FLASH_NODO_RESUMO_VENDA (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_VENDA_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_VENDA_DATA ON TB_FLASH_NODO_RESUMO_VENDA (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_VENDA_ANOMESDIA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_VENDA_ANOMESDIA ON TB_FLASH_NODO_RESUMO_VENDA (ANO_REFERENCIA, MES_REFERENCIA, DIA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO_RESUMO_VENDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_NODO_RESUMO_VENDA CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,36 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_META_VENDA_STG (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE
|
||||
) AS
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_META_VENDA_STG
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||
|
||||
INSERT INTO TB_FLASH_META_VENDA_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_VENDA_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_VENDA_STG' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_META_VENDA_STG';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,109 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_META_VENDA (
|
||||
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_VENDA
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||
|
||||
FOR r IN (
|
||||
SELECT *
|
||||
FROM TB_FLASH_META_VENDA_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_VENDA 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_VENDA.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_VENDA' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_META_VENDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,107 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_RESUMO_VENDA (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE
|
||||
) AS
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_NODO_RESUMO_VENDA
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO_RESUMO_VENDA (
|
||||
id_resumo, id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia,
|
||||
valor_venda, valor_meta_propria, valor_meta_filhos, valor_meta_efetiva,
|
||||
percentual_meta_propria, percentual_meta_filhos, percentual_meta_efetiva,
|
||||
desvio, percentual_atingimento, data_apuracao
|
||||
)
|
||||
WITH datas AS (
|
||||
SELECT TRUNC(p_data_inicial) + LEVEL - 1 AS data_referencia
|
||||
FROM dual
|
||||
CONNECT BY TRUNC(p_data_inicial) + LEVEL - 1 <= TRUNC(p_data_final)
|
||||
),
|
||||
venda_direta AS (
|
||||
SELECT f.id_nodo, TRUNC(f.data_referencia) AS data_referencia,
|
||||
f.ano_referencia, f.mes_referencia, f.dia_referencia,
|
||||
SUM(f.vlr_venda) AS valor_venda
|
||||
FROM TB_FLASH_FATO_VENDA f
|
||||
WHERE f.data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY f.id_nodo, TRUNC(f.data_referencia), f.ano_referencia, f.mes_referencia, f.dia_referencia
|
||||
),
|
||||
venda_hierarquia AS (
|
||||
SELECT a.id_nodo_ancestral AS id_nodo,
|
||||
d.data_referencia,
|
||||
EXTRACT(YEAR FROM d.data_referencia) AS ano_referencia,
|
||||
EXTRACT(MONTH FROM d.data_referencia) AS mes_referencia,
|
||||
EXTRACT(DAY FROM d.data_referencia) AS dia_referencia,
|
||||
SUM(NVL(vd.valor_venda, 0)) AS valor_venda
|
||||
FROM (
|
||||
SELECT CONNECT_BY_ROOT n.id_nodo AS id_nodo_ancestral,
|
||||
n.id_nodo AS id_nodo_descendente
|
||||
FROM TB_FLASH_NODO n
|
||||
CONNECT BY PRIOR n.id_nodo = n.id_nodo_pai
|
||||
) a
|
||||
CROSS JOIN datas d
|
||||
LEFT JOIN venda_direta vd
|
||||
ON vd.id_nodo = a.id_nodo_descendente
|
||||
AND vd.data_referencia = d.data_referencia
|
||||
GROUP BY a.id_nodo_ancestral, d.data_referencia
|
||||
),
|
||||
meta_propria_diaria AS (
|
||||
SELECT m.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia,
|
||||
MAX(m.percentual_meta) AS percentual_meta_propria,
|
||||
SUM(m.valor_meta) AS valor_meta_propria
|
||||
FROM TB_FLASH_META_VENDA m
|
||||
WHERE m.data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY m.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia
|
||||
),
|
||||
meta_filhos_diaria AS (
|
||||
SELECT pai.id_nodo, mpd.data_referencia, mpd.ano_referencia, mpd.mes_referencia, mpd.dia_referencia,
|
||||
SUM(mpd.valor_meta_propria) AS valor_meta_filhos
|
||||
FROM TB_FLASH_NODO pai
|
||||
JOIN TB_FLASH_NODO filho ON filho.id_nodo_pai = pai.id_nodo
|
||||
JOIN meta_propria_diaria mpd ON mpd.id_nodo = filho.id_nodo
|
||||
GROUP BY pai.id_nodo, mpd.data_referencia, mpd.ano_referencia, mpd.mes_referencia, mpd.dia_referencia
|
||||
),
|
||||
base AS (
|
||||
SELECT n.id_nodo, d.data_referencia,
|
||||
EXTRACT(YEAR FROM d.data_referencia) AS ano_referencia,
|
||||
EXTRACT(MONTH FROM d.data_referencia) AS mes_referencia,
|
||||
EXTRACT(DAY FROM d.data_referencia) AS dia_referencia
|
||||
FROM TB_FLASH_NODO n
|
||||
CROSS JOIN datas d
|
||||
)
|
||||
SELECT SEQ_TB_FLASH_NODO_RESUMO_VENDA.NEXTVAL,
|
||||
b.id_nodo, b.data_referencia, b.ano_referencia, b.mes_referencia, b.dia_referencia,
|
||||
vh.valor_venda,
|
||||
mpd.valor_meta_propria,
|
||||
mfd.valor_meta_filhos,
|
||||
CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END,
|
||||
mpd.percentual_meta_propria,
|
||||
CAST(NULL AS NUMBER(10,4)),
|
||||
CASE WHEN mpd.percentual_meta_propria IS NOT NULL THEN mpd.percentual_meta_propria ELSE NULL END,
|
||||
NVL(vh.valor_venda, 0) - NVL(CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, 0),
|
||||
CASE
|
||||
WHEN NVL(CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, 0) = 0 THEN NULL
|
||||
ELSE (NVL(vh.valor_venda, 0) / CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END) * 100
|
||||
END,
|
||||
SYSDATE
|
||||
FROM base b
|
||||
LEFT JOIN venda_hierarquia vh ON vh.id_nodo = b.id_nodo AND vh.data_referencia = b.data_referencia
|
||||
LEFT JOIN meta_propria_diaria mpd ON mpd.id_nodo = b.id_nodo AND mpd.data_referencia = b.data_referencia
|
||||
LEFT JOIN meta_filhos_diaria mfd ON mfd.id_nodo = b.id_nodo AND mfd.data_referencia = b.data_referencia;
|
||||
|
||||
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_RESUMO_VENDA' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_RESUMO_VENDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,81 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA_DONO_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_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 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
|
||||
@@ -0,0 +1,227 @@
|
||||
-- +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
|
||||
) AS
|
||||
v_id_empresa NUMBER;
|
||||
v_id_cat1 NUMBER;
|
||||
v_id_cat2 NUMBER;
|
||||
v_id_cat3 NUMBER;
|
||||
v_id_cat4 NUMBER;
|
||||
v_id_cat5 NUMBER;
|
||||
v_id_produto NUMBER;
|
||||
v_contador NUMBER := 0;
|
||||
|
||||
FUNCTION FN_GET_OR_CREATE_NODO (
|
||||
p_id_nodo_pai IN NUMBER,
|
||||
p_tipo_nodo IN VARCHAR2,
|
||||
p_codigo IN VARCHAR2,
|
||||
p_nome IN VARCHAR2,
|
||||
p_nivel IN NUMBER,
|
||||
p_cod_empresa IN NUMBER DEFAULT NULL,
|
||||
p_cod_produto IN NUMBER DEFAULT NULL,
|
||||
p_seqprodutobase IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER
|
||||
IS
|
||||
v_id_nodo NUMBER;
|
||||
BEGIN
|
||||
SELECT n.id_nodo
|
||||
INTO v_id_nodo
|
||||
FROM TB_FLASH_NODO n
|
||||
WHERE (
|
||||
n.id_nodo_pai = p_id_nodo_pai
|
||||
OR (n.id_nodo_pai IS NULL AND p_id_nodo_pai IS NULL)
|
||||
)
|
||||
AND n.tipo_nodo = p_tipo_nodo
|
||||
AND n.codigo = p_codigo
|
||||
AND (
|
||||
p_tipo_nodo <> 'PRODUTO'
|
||||
OR (
|
||||
n.cod_empresa = p_cod_empresa
|
||||
OR (n.cod_empresa IS NULL AND p_cod_empresa IS NULL)
|
||||
)
|
||||
);
|
||||
|
||||
UPDATE TB_FLASH_NODO n
|
||||
SET n.nome = p_nome,
|
||||
n.cod_empresa = p_cod_empresa,
|
||||
n.cod_produto = p_cod_produto,
|
||||
n.seqprodutobase = p_seqprodutobase,
|
||||
n.data_atualizacao = SYSDATE
|
||||
WHERE n.id_nodo = v_id_nodo
|
||||
AND (
|
||||
NVL(n.nome, '#') <> NVL(p_nome, '#')
|
||||
OR NVL(n.cod_empresa, -1) <> NVL(p_cod_empresa, -1)
|
||||
OR NVL(n.cod_produto, -1) <> NVL(p_cod_produto, -1)
|
||||
OR NVL(n.seqprodutobase, -1) <> NVL(p_seqprodutobase, -1)
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
v_id_nodo := SEQ_TB_FLASH_NODO.NEXTVAL;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO (
|
||||
id_nodo, id_nodo_pai, tipo_nodo, codigo, nome, nivel,
|
||||
ordem_exibicao, ativo, cod_empresa, cod_produto, seqprodutobase,
|
||||
data_cadastro, data_atualizacao
|
||||
) VALUES (
|
||||
v_id_nodo, p_id_nodo_pai, p_tipo_nodo, p_codigo, p_nome, p_nivel,
|
||||
NULL, 'S', p_cod_empresa, p_cod_produto, p_seqprodutobase,
|
||||
SYSDATE, NULL
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_FATO_VENDA
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
FOR r IN (
|
||||
SELECT dv.nrodivisao,
|
||||
seg1.nrosegmento,
|
||||
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,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 1 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn1,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 1 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn1,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 2 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn2,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 2 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn2,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 3 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn3,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 3 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn3,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 4 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn4,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 4 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn4,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 5 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn5,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 5 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn5
|
||||
FROM maxv_categoria g, map_famdivcateg u, map_produto a, map_famdivisao d,
|
||||
map_famembalagem k, mad_segmento seg1, mrl_produtoempresa c,
|
||||
mad_famsegmento h, max_empresa e, mrl_custodia y, mrl_custodia z,
|
||||
mrlv_descontoregra re, max_divisao dv, max_paramgeral pg
|
||||
WHERE z.dtaentradasaida BETWEEN p_data_inicial AND p_data_final
|
||||
AND z.nroempresa = p_empresa
|
||||
AND e.nroempresa = z.nroempresa
|
||||
AND e.nrodivisao = d.nrodivisao
|
||||
AND z.seqproduto = c.seqproduto
|
||||
AND e.nroempresa = c.nroempresa
|
||||
AND y.seqproduto = z.seqproduto
|
||||
AND y.dtaentradasaida = z.dtaentradasaida
|
||||
AND y.nroempresa = z.nroempresa
|
||||
AND (z.vlrtotalvda > 0 OR z.vlrtotaldevol > 0)
|
||||
AND seg1.nrodivisao = d.nrodivisao
|
||||
AND h.seqfamilia = z.seqfamilia
|
||||
AND h.nrosegmento = e.nrosegmentoprinc
|
||||
AND h.nrosegmento = seg1.nrosegmento
|
||||
AND d.seqfamilia = z.seqfamilia
|
||||
AND d.nrodivisao IN (1)
|
||||
AND dv.nrodivisao = d.nrodivisao
|
||||
AND k.seqfamilia = h.seqfamilia
|
||||
AND k.qtdembalagem = 1
|
||||
AND z.seqproduto = re.seqproduto(+)
|
||||
AND z.dtaentradasaida = re.datafaturamento(+)
|
||||
AND z.nroempresa = re.nroempresa(+)
|
||||
AND g.nrodivisao = u.nrodivisao
|
||||
AND g.nivelhierarquia = 1
|
||||
AND g.tipcategoria = 'M'
|
||||
AND g.statuscategor != 'I'
|
||||
AND u.seqfamilia = d.seqfamilia
|
||||
AND u.nrodivisao = d.nrodivisao
|
||||
AND u.seqcategoria = g.seqcategoria
|
||||
AND u.status = 'A'
|
||||
AND a.seqproduto = z.seqproduto
|
||||
AND a.seqfamilia = d.seqfamilia
|
||||
GROUP BY dv.nrodivisao, seg1.nrosegmento, e.nroempresa, e.nomereduzido,
|
||||
a.seqproduto, a.seqprodutobase, a.desccompleta, z.dtaentradasaida,
|
||||
a.propqtdprodutobase, e.nrodivisao, a.seqfamilia
|
||||
) LOOP
|
||||
|
||||
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.empresa), r.nomeempresa, 1, r.empresa);
|
||||
|
||||
IF r.codcatn1 IS NOT NULL THEN
|
||||
v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.codcatn1), r.nomecatn1, 2, r.empresa);
|
||||
ELSE v_id_cat1 := v_id_empresa; END IF;
|
||||
|
||||
IF r.codcatn2 IS NOT NULL THEN
|
||||
v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.codcatn2), r.nomecatn2, 3, r.empresa);
|
||||
ELSE v_id_cat2 := v_id_cat1; END IF;
|
||||
|
||||
IF r.codcatn3 IS NOT NULL THEN
|
||||
v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.codcatn3), r.nomecatn3, 4, r.empresa);
|
||||
ELSE v_id_cat3 := v_id_cat2; END IF;
|
||||
|
||||
IF r.codcatn4 IS NOT NULL THEN
|
||||
v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.codcatn4), r.nomecatn4, 5, r.empresa);
|
||||
ELSE v_id_cat4 := v_id_cat3; END IF;
|
||||
|
||||
IF r.codcatn5 IS NOT NULL THEN
|
||||
v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.codcatn5), r.nomecatn5, 6, r.empresa);
|
||||
ELSE v_id_cat5 := v_id_cat4; END IF;
|
||||
|
||||
v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.cod_produto), r.descricao, 7, r.empresa, r.cod_produto, r.seqprodutobase);
|
||||
|
||||
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
|
||||
) VALUES (
|
||||
SEQ_TB_FLASH_FATO_VENDA.NEXTVAL,
|
||||
r.data_referencia, r.ano, r.mes, r.dia, r.dia_semana,
|
||||
v_id_produto, v_id_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
|
||||
);
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
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_CARGA_DADOS_VENDA' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_VENDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,24 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_FATO_CONTRIBUICAO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_FATO_CONTRIBUICAO START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_FATO_CONTRIBUICAO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_FATO_CONTRIBUICAO';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_CONTRIBUICAO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_FATO_CONTRIBUICAO (
|
||||
ID_FATO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2),
|
||||
DIA_SEMANA NUMBER(2),
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
ID_NODO_EMPRESA NUMBER NOT NULL,
|
||||
COD_EMPRESA NUMBER NOT NULL,
|
||||
NOME_EMPRESA VARCHAR2(200),
|
||||
COD_PRODUTO NUMBER NOT NULL,
|
||||
DESCRICAO_PRODUTO VARCHAR2(300),
|
||||
SEQPRODUTOBASE NUMBER,
|
||||
NRODIVISAO NUMBER,
|
||||
NROSEGMENTO NUMBER,
|
||||
NRO_TICKETS NUMBER(18,6),
|
||||
VLR_IMP_CONTRIBUICAO NUMBER(18,6),
|
||||
QTDE_CONTRIBUICAO NUMBER(18,6),
|
||||
VLR_CONTRIBUICAO NUMBER(18,6),
|
||||
VL_TICKET_MEDIO NUMBER(18,6),
|
||||
PROPQTDPRODUTOBASE NUMBER(18,6),
|
||||
DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL,
|
||||
CONSTRAINT PK_TB_FLASH_FATO_CONTRIBUICAO PRIMARY KEY (ID_FATO),
|
||||
CONSTRAINT FK_TB_FLASH_FATO_CONTRIB_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT FK_TB_FLASH_FATO_CONTRIB_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_FATO_CONTRIB_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_CONTRIB_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_CONTRIB_DATA ON TB_FLASH_FATO_CONTRIBUICAO (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_CONTRIB_ANOMES';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_CONTRIB_ANOMES ON TB_FLASH_FATO_CONTRIBUICAO (ANO_REFERENCIA, MES_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_CONTRIB_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_CONTRIB_NODO ON TB_FLASH_FATO_CONTRIBUICAO (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_CONTRIB_EMP';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_CONTRIB_EMP ON TB_FLASH_FATO_CONTRIBUICAO (COD_EMPRESA, ANO_REFERENCIA, MES_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_CONTRIB_PROD';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_CONTRIB_PROD ON TB_FLASH_FATO_CONTRIBUICAO (COD_PRODUTO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_FATO_CONTRIBUICAO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_CONTRIBUICAO ADD CONSTRAINT UK_TB_FLASH_FATO_CONTRIBUICAO UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_CONTRIBUICAO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_FATO_CONTRIBUICAO CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO_RESUMO_CONTRIBUICAO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_NODO_RESUMO_CONTRIBUICAO START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO_RESUMO_CONTRIBUICAO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_NODO_RESUMO_CONTRIBUICAO';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO_RESUMO_CONTRIBUICAO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_NODO_RESUMO_CONTRIBUICAO (
|
||||
ID_RESUMO NUMBER NOT NULL,
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
NRO_TICKETS NUMBER(18,6),
|
||||
VLR_IMP_CONTRIBUICAO NUMBER(18,6),
|
||||
QTDE_CONTRIBUICAO NUMBER(18,6),
|
||||
VLR_CONTRIBUICAO NUMBER(18,6),
|
||||
VL_TICKET_MEDIO NUMBER(18,6),
|
||||
VALOR_META_PROPRIA NUMBER(18,6),
|
||||
VALOR_META_FILHOS NUMBER(18,6),
|
||||
VALOR_META_EFETIVA NUMBER(18,6),
|
||||
PERCENTUAL_META_PROPRIA NUMBER(10,4),
|
||||
PERCENTUAL_META_FILHOS NUMBER(10,4),
|
||||
PERCENTUAL_META_EFETIVA NUMBER(10,4),
|
||||
DESVIO NUMBER(18,6),
|
||||
PERCENTUAL_ATINGIMENTO NUMBER(18,6),
|
||||
DATA_APURACAO DATE DEFAULT SYSDATE NOT NULL,
|
||||
CONSTRAINT PK_TB_FLASH_NODO_RES_CONTRIB PRIMARY KEY (ID_RESUMO),
|
||||
CONSTRAINT FK_TB_FLASH_NODO_RES_CONTRIB_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_RES_CONTRIB_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_RES_CONTRIB_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_NODO_RES_CONTRIB';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_CONTRIBUICAO ADD CONSTRAINT UK_TB_FLASH_NODO_RES_CONTRIB UNIQUE (ID_NODO, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_CONTRIB_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_CONTRIB_NODO ON TB_FLASH_NODO_RESUMO_CONTRIBUICAO (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_CONTRIB_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_CONTRIB_DATA ON TB_FLASH_NODO_RESUMO_CONTRIBUICAO (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_CONTRIB_ANOMESDIA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_CONTRIB_ANOMESDIA ON TB_FLASH_NODO_RESUMO_CONTRIBUICAO (ANO_REFERENCIA, MES_REFERENCIA, DIA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO_RESUMO_CONTRIBUICAO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_NODO_RESUMO_CONTRIBUICAO CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_RESUMO_CONTRIBUICAO (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE
|
||||
) AS
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_NODO_RESUMO_CONTRIBUICAO
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO_RESUMO_CONTRIBUICAO (
|
||||
id_resumo, id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia,
|
||||
nro_tickets, vlr_imp_contribuicao, qtde_contribuicao,
|
||||
vlr_contribuicao, vl_ticket_medio,
|
||||
valor_meta_propria, valor_meta_filhos, valor_meta_efetiva,
|
||||
percentual_meta_propria, percentual_meta_filhos, percentual_meta_efetiva,
|
||||
desvio, percentual_atingimento, data_apuracao
|
||||
)
|
||||
WITH datas AS (
|
||||
SELECT TRUNC(p_data_inicial) + LEVEL - 1 AS data_referencia
|
||||
FROM dual
|
||||
CONNECT BY TRUNC(p_data_inicial) + LEVEL - 1 <= TRUNC(p_data_final)
|
||||
),
|
||||
contribuicao_direta AS (
|
||||
SELECT f.id_nodo, TRUNC(f.data_referencia) AS data_referencia,
|
||||
f.ano_referencia, f.mes_referencia, f.dia_referencia,
|
||||
SUM(f.nro_tickets) AS nro_tickets,
|
||||
SUM(f.vlr_imp_contribuicao) AS vlr_imp_contribuicao,
|
||||
SUM(f.qtde_contribuicao) AS qtde_contribuicao,
|
||||
SUM(f.vlr_contribuicao) AS vlr_contribuicao
|
||||
FROM TB_FLASH_FATO_CONTRIBUICAO f
|
||||
WHERE f.data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY f.id_nodo, TRUNC(f.data_referencia), f.ano_referencia, f.mes_referencia, f.dia_referencia
|
||||
),
|
||||
contribuicao_hierarquia AS (
|
||||
SELECT a.id_nodo_ancestral AS id_nodo,
|
||||
d.data_referencia,
|
||||
EXTRACT(YEAR FROM d.data_referencia) AS ano_referencia,
|
||||
EXTRACT(MONTH FROM d.data_referencia) AS mes_referencia,
|
||||
EXTRACT(DAY FROM d.data_referencia) AS dia_referencia,
|
||||
SUM(NVL(cd.nro_tickets, 0)) AS nro_tickets,
|
||||
SUM(NVL(cd.vlr_imp_contribuicao, 0)) AS vlr_imp_contribuicao,
|
||||
SUM(NVL(cd.qtde_contribuicao, 0)) AS qtde_contribuicao,
|
||||
SUM(NVL(cd.vlr_contribuicao, 0)) AS vlr_contribuicao
|
||||
FROM (
|
||||
SELECT CONNECT_BY_ROOT n.id_nodo AS id_nodo_ancestral,
|
||||
n.id_nodo AS id_nodo_descendente
|
||||
FROM TB_FLASH_NODO n
|
||||
CONNECT BY PRIOR n.id_nodo = n.id_nodo_pai
|
||||
) a
|
||||
CROSS JOIN datas d
|
||||
LEFT JOIN contribuicao_direta cd
|
||||
ON cd.id_nodo = a.id_nodo_descendente
|
||||
AND cd.data_referencia = d.data_referencia
|
||||
GROUP BY a.id_nodo_ancestral, d.data_referencia
|
||||
),
|
||||
meta_propria_diaria AS (
|
||||
SELECT m.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia,
|
||||
MAX(m.percentual_meta) AS percentual_meta_propria,
|
||||
SUM(m.valor_meta) AS valor_meta_propria
|
||||
FROM TB_FLASH_META_CONTRIBUICAO m
|
||||
WHERE m.data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY m.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia
|
||||
),
|
||||
meta_filhos_diaria AS (
|
||||
SELECT pai.id_nodo, mpd.data_referencia, mpd.ano_referencia, mpd.mes_referencia, mpd.dia_referencia,
|
||||
SUM(mpd.valor_meta_propria) AS valor_meta_filhos
|
||||
FROM TB_FLASH_NODO pai
|
||||
JOIN TB_FLASH_NODO filho ON filho.id_nodo_pai = pai.id_nodo
|
||||
JOIN meta_propria_diaria mpd ON mpd.id_nodo = filho.id_nodo
|
||||
GROUP BY pai.id_nodo, mpd.data_referencia, mpd.ano_referencia, mpd.mes_referencia, mpd.dia_referencia
|
||||
),
|
||||
base AS (
|
||||
SELECT n.id_nodo, d.data_referencia,
|
||||
EXTRACT(YEAR FROM d.data_referencia) AS ano_referencia,
|
||||
EXTRACT(MONTH FROM d.data_referencia) AS mes_referencia,
|
||||
EXTRACT(DAY FROM d.data_referencia) AS dia_referencia
|
||||
FROM TB_FLASH_NODO n
|
||||
CROSS JOIN datas d
|
||||
)
|
||||
SELECT SEQ_TB_FLASH_NODO_RESUMO_CONTRIBUICAO.NEXTVAL,
|
||||
b.id_nodo, b.data_referencia, b.ano_referencia, b.mes_referencia, b.dia_referencia,
|
||||
ch.nro_tickets,
|
||||
ch.vlr_imp_contribuicao,
|
||||
ch.qtde_contribuicao,
|
||||
ch.vlr_contribuicao,
|
||||
CASE WHEN NVL(ch.nro_tickets, 0) > 0 THEN ch.vlr_contribuicao / ch.nro_tickets ELSE NULL END,
|
||||
mpd.valor_meta_propria,
|
||||
mfd.valor_meta_filhos,
|
||||
CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END,
|
||||
mpd.percentual_meta_propria,
|
||||
CAST(NULL AS NUMBER(10,4)),
|
||||
CASE WHEN mpd.percentual_meta_propria IS NOT NULL THEN mpd.percentual_meta_propria ELSE NULL END,
|
||||
NVL(ch.vlr_contribuicao, 0) - NVL(CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, 0),
|
||||
CASE
|
||||
WHEN NVL(CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, 0) = 0 THEN NULL
|
||||
ELSE (NVL(ch.vlr_contribuicao, 0) / CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END) * 100
|
||||
END,
|
||||
SYSDATE
|
||||
FROM base b
|
||||
LEFT JOIN contribuicao_hierarquia ch ON ch.id_nodo = b.id_nodo AND ch.data_referencia = b.data_referencia
|
||||
LEFT JOIN meta_propria_diaria mpd ON mpd.id_nodo = b.id_nodo AND mpd.data_referencia = b.data_referencia
|
||||
LEFT JOIN meta_filhos_diaria mfd ON mfd.id_nodo = b.id_nodo AND mfd.data_referencia = b.data_referencia;
|
||||
|
||||
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_RESUMO_CONTRIBUICAO' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_RESUMO_CONTRIBUICAO';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,82 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_CONTRIBUICAO_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_CONTRIBUICAO_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 contribuição da empresa: ' || r.codigo);
|
||||
|
||||
PRC_FLASH_CARGA_DADOS_CONTRIBUICAO(
|
||||
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 contribuição...');
|
||||
|
||||
PRC_FLASH_CARGA_META_CONTRIBUICAO_STG(
|
||||
p_data_inicial => p_data_inicial,
|
||||
p_data_final => p_data_final
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Carregando metas finais de contribuição...');
|
||||
|
||||
PRC_FLASH_CARGA_META_CONTRIBUICAO(
|
||||
p_data_inicial => p_data_inicial,
|
||||
p_data_final => p_data_final
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Atualizando resumo de contribuição...');
|
||||
|
||||
PRC_FLASH_CARGA_RESUMO_CONTRIBUICAO(
|
||||
p_data_inicial => p_data_inicial,
|
||||
p_data_final => p_data_final
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('PRC_FLASH_ATUALIZA_CONTRIBUICAO_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_CONTRIBUICAO_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_CONTRIBUICAO_DONO' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_CONTRIBUICAO_DONO';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
@@ -0,0 +1,444 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_CONTRIBUICAO (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE,
|
||||
p_empresa IN NUMBER
|
||||
) AS
|
||||
v_id_empresa NUMBER;
|
||||
v_id_cat1 NUMBER;
|
||||
v_id_cat2 NUMBER;
|
||||
v_id_cat3 NUMBER;
|
||||
v_id_cat4 NUMBER;
|
||||
v_id_cat5 NUMBER;
|
||||
v_id_produto NUMBER;
|
||||
v_contador NUMBER := 0;
|
||||
|
||||
FUNCTION FN_GET_OR_CREATE_NODO (
|
||||
p_id_nodo_pai IN NUMBER,
|
||||
p_tipo_nodo IN VARCHAR2,
|
||||
p_codigo IN VARCHAR2,
|
||||
p_nome IN VARCHAR2,
|
||||
p_nivel IN NUMBER,
|
||||
p_cod_empresa IN NUMBER DEFAULT NULL,
|
||||
p_cod_produto IN NUMBER DEFAULT NULL,
|
||||
p_seqprodutobase IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER
|
||||
IS
|
||||
v_id_nodo NUMBER;
|
||||
BEGIN
|
||||
SELECT n.id_nodo
|
||||
INTO v_id_nodo
|
||||
FROM TB_FLASH_NODO n
|
||||
WHERE (
|
||||
n.id_nodo_pai = p_id_nodo_pai
|
||||
OR (n.id_nodo_pai IS NULL AND p_id_nodo_pai IS NULL)
|
||||
)
|
||||
AND n.tipo_nodo = p_tipo_nodo
|
||||
AND n.codigo = p_codigo
|
||||
AND (
|
||||
p_tipo_nodo <> 'PRODUTO'
|
||||
OR (
|
||||
n.cod_empresa = p_cod_empresa
|
||||
OR (n.cod_empresa IS NULL AND p_cod_empresa IS NULL)
|
||||
)
|
||||
);
|
||||
|
||||
UPDATE TB_FLASH_NODO n
|
||||
SET n.nome = p_nome,
|
||||
n.cod_empresa = p_cod_empresa,
|
||||
n.cod_produto = p_cod_produto,
|
||||
n.seqprodutobase = p_seqprodutobase,
|
||||
n.data_atualizacao = SYSDATE
|
||||
WHERE n.id_nodo = v_id_nodo
|
||||
AND (
|
||||
NVL(n.nome, '#') <> NVL(p_nome, '#')
|
||||
OR NVL(n.cod_empresa, -1) <> NVL(p_cod_empresa, -1)
|
||||
OR NVL(n.cod_produto, -1) <> NVL(p_cod_produto, -1)
|
||||
OR NVL(n.seqprodutobase, -1) <> NVL(p_seqprodutobase, -1)
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
v_id_nodo := SEQ_TB_FLASH_NODO.NEXTVAL;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO (
|
||||
id_nodo, id_nodo_pai, tipo_nodo, codigo, nome, nivel,
|
||||
ordem_exibicao, ativo, cod_empresa, cod_produto, seqprodutobase,
|
||||
data_cadastro, data_atualizacao
|
||||
) VALUES (
|
||||
v_id_nodo, p_id_nodo_pai, p_tipo_nodo, p_codigo, p_nome, p_nivel,
|
||||
NULL, 'S', p_cod_empresa, p_cod_produto, p_seqprodutobase,
|
||||
SYSDATE, NULL
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_FATO_CONTRIBUICAO
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
FOR r IN (
|
||||
SELECT Z.DTA,
|
||||
Z.NROEMPRESA,
|
||||
Z.NOMEEMPRESA,
|
||||
Z.NROSEGMENTO,
|
||||
Z.NRODIVISAO,
|
||||
Z.SEQPRODUTO,
|
||||
Z.SEQPRODUTOBASE,
|
||||
Z.PRODUTO,
|
||||
Z.SEQCATEGORIAN1,
|
||||
Z.CATEGORIAN1,
|
||||
Z.SEQCATEGORIAN2,
|
||||
Z.CATEGORIAN2,
|
||||
Z.SEQCATEGORIAN3,
|
||||
Z.CATEGORIAN3,
|
||||
Z.SEQCATEGORIAN4,
|
||||
Z.CATEGORIAN4,
|
||||
Z.SEQCATEGORIAN5,
|
||||
Z.CATEGORIAN5,
|
||||
Z.VLRVENDA,
|
||||
(CASE WHEN (Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) < TO_DATE('01/09/2022','DD/MM/YYYY'))
|
||||
OR ( Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) > TO_DATE('01/01/2024','DD/MM/YYYY')) THEN
|
||||
Z.VLRVENDA - (Z.QTDE_VENDA * (SELECT nvl(ROUND((CD.CMDIAVLRNF + CD.CMDIAIPI + CD.CMDIAICMSST + CD.CMDIADESPNF + CD.CMDIADESPFORANF -
|
||||
CD.CMDIACREDICMS - CD.CMDIACREDICMSPRESUM - CD.CMDIACREDICMSANTECIP - CD.CMDIACREDPIS - CD.CMDIACREDCOFINS- CD.CMDIADCTOFORANF),4),0)
|
||||
FROM MRL_CUSTODIA CD
|
||||
WHERE CD.SEQPRODUTO = (CASE WHEN Z.SEQPRODUTOBASE IS NULL THEN Z.SEQPRODUTO ELSE Z.SEQPRODUTOBASE END)
|
||||
AND CD.NROEMPRESA = 301
|
||||
AND CD.DTAENTRADASAIDA = (
|
||||
SELECT MAX(CD1.DTAENTRADASAIDA)
|
||||
FROM MRL_CUSTODIA CD1
|
||||
WHERE CD1.SEQPRODUTO = CD.SEQPRODUTO
|
||||
AND CD1.NROEMPRESA = 301
|
||||
AND CD1.DTAENTRADASAIDA <= Z.DTA
|
||||
)
|
||||
)) - Z.VLR_IMP_VENDA
|
||||
ELSE
|
||||
Z.VLRCONTRIB
|
||||
END) AS VLRCONTRIB,
|
||||
Z.VLRVENDA_MES_ANT,
|
||||
Z.VLRCONTRIB_MES_ANT,
|
||||
Z.VLRVENDA_ANO_ANT,
|
||||
Z.VLRCONTRIB_ANO_ANT,
|
||||
Z.QTDE_VENDA,
|
||||
Z.VLR_IMP_VENDA,
|
||||
Z.PROPQTDPRODUTOBASE
|
||||
FROM (SELECT /*+OPTIMIZER_FEATURES_ENABLE('10.2.0.4')*/
|
||||
TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' ) DTA,
|
||||
V.NROEMPRESA,
|
||||
E.FANTASIA AS NOMEEMPRESA,
|
||||
V.NROSEGMENTO,
|
||||
V.NRODIVISAO,
|
||||
V.SEQPRODUTO,
|
||||
A.SEQPRODUTOBASE,
|
||||
A.DESCCOMPLETA PRODUTO,
|
||||
CC1.SEQCATEGORIA AS SEQCATEGORIAN1,
|
||||
CC1.CATEGORIA AS CATEGORIAN1,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS SEQCATEGORIAN2,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS CATEGORIAN2,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN3,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN3,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN4,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN4,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN5,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN5,
|
||||
SUM( ( V.QTDITEM - NVL( V.QTDDEVOLITEM, 0 ) ) ) AS QTDE_VENDA,
|
||||
SUM( ( ROUND( V.VLRITEM, 2 ) ) - ( ROUND( V.VLRDEVOLITEM, 2 ) - ( 0 ) ) ) AS VLRVENDA,
|
||||
SUM( DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDITEM, 0, 0, ( Y.VLRIMPOSTOVDA - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDITEM )
|
||||
)
|
||||
- DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRDEVOLITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDDEVOLITEM, 0, 0, ( Y.VLRIMPOSTODEVOL - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDDEVOLITEM )
|
||||
)
|
||||
+ DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', 0,
|
||||
DECODE( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ V.VLRFCPICMS + V.PISITEM + V.COFINSITEM -
|
||||
DECODE( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
- V.DVLRFCPICMS - V.PISDEVOLITEM - V.COFINSDEVOLITEM
|
||||
)
|
||||
) AS VLR_IMP_VENDA
|
||||
, sum(
|
||||
consinco.fC5_AbcDistribLucratividade(
|
||||
'L',
|
||||
'L',
|
||||
'N',
|
||||
V.VLRITEM ,
|
||||
'N',
|
||||
V.VLRICMSST,
|
||||
V.VLRFCPST,
|
||||
V.VLRICMSSTEMPORIG,
|
||||
E.UF,
|
||||
V.UFPESSOA,
|
||||
'S',
|
||||
null,
|
||||
'N',
|
||||
V.VLRIPIITEM,
|
||||
V.VLRIPIDEVOLITEM,
|
||||
'N',
|
||||
V.VLRDESCFORANF,
|
||||
Y.CMDIAVLRNF - 0 ,
|
||||
Y.CMDIAIPI,
|
||||
nvl( Y.CMDIACREDPIS, 0 ),
|
||||
nvl( Y.CMDIACREDCOFINS, 0 ),
|
||||
Y.CMDIAICMSST,
|
||||
Y.CMDIADESPNF,
|
||||
Y.CMDIADESPFORANF,
|
||||
Y.CMDIADCTOFORANF,
|
||||
'S',
|
||||
a.propqtdprodutobase,
|
||||
V.QTDITEM,
|
||||
V.VLREMBDESCRESSARCST,
|
||||
V.ACMCOMPRAVENDA,
|
||||
V.PISITEM,
|
||||
V.COFINSITEM,
|
||||
decode( V.TIPCGO, 'S', Y.QTDVDA, nvl( Y.QTDDEVOL, Y.QTDVDA ) ),
|
||||
( decode( V.TIPCGO, 'S', Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ),
|
||||
nvl( Y.VLRIMPOSTODEVOL - nvl( V.VLRIPIDEVOLITEM, 0 ),
|
||||
Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ) ) ) ) ,
|
||||
'N',
|
||||
V.VLRDESPOPERACIONALITEM,
|
||||
Y.VLRDESPESAVDA,
|
||||
'N',
|
||||
nvl( Y.VLRVERBAVDAACR, 0 ),
|
||||
DECODE( V.TIPDOCFISCALCGO, 'T', 0, Y.QTDVERBAVDA ),
|
||||
Y.VLRVERBAVDA - nvl( Y.VLRVERBAVDAINDEVIDA, 0 ),
|
||||
'N',
|
||||
NVL(V.VLRTOTCOMISSAOITEM, 0),
|
||||
V.VLRDEVOLITEM,
|
||||
VLRDEVOLICMSST,
|
||||
V.DVLRFCPST,
|
||||
V.QTDDEVOLITEM,
|
||||
V.PISDEVOLITEM,
|
||||
V.COFINSDEVOLITEM,
|
||||
V.VLRDESPOPERACIONALITEMDEVOL,
|
||||
V.VLRTOTCOMISSAOITEMDEVOL,
|
||||
E.PERIRLUCRAT,
|
||||
E.PERCSLLLUCRAT,
|
||||
Y.CMDIACREDICMS,
|
||||
decode( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ 0 ,
|
||||
V.VLRFCPICMS,
|
||||
V.PERCPMF,
|
||||
V.PEROUTROIMPOSTO,
|
||||
decode( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
+ 0 ,
|
||||
V.DVLRFCPICMS,
|
||||
case when ( 'N' ) = 'N' then
|
||||
(nvl(y.cmdiavlrdescpistransf,0) + nvl(y.cmdiavlrdesccofinstransf,0) + nvl(y.cmdiavlrdescicmstransf,0) +
|
||||
nvl(y.cmdiavlrdescipitransf,0) + nvl(y.cmdiavlrdesclucrotransf,0) + nvl(y.cmdiavlrdescverbatransf,0) )
|
||||
else 0
|
||||
end,
|
||||
case when DV.UTILACRESCCUSTPRODRELAC = 'S' and nvl( A.SEQPRODUTOBASE, A.SEQPRODUTOBASEANTIGO ) is not null then
|
||||
coalesce( PR.PERCACRESCCUSTORELACVIG, nvl( consinco.F_RETACRESCCUSTORELACABC( V.SEQPRODUTO, V.DTAVDA ), 1 ) )
|
||||
else 1
|
||||
end,
|
||||
'N',
|
||||
0,
|
||||
0,
|
||||
'S',
|
||||
V.VLRDESCMEDALHA,
|
||||
'S',
|
||||
V.VLRDESCFORNEC,
|
||||
V.VLRDESCFORNECDEVOL,
|
||||
'N',
|
||||
V.VLRFRETEITEMRATEIO,
|
||||
V.VLRFRETEITEMRATEIODEV,
|
||||
'S',
|
||||
V.VLRICMSSTEMBUTPROD,
|
||||
V.VLRICMSSTEMBUTPRODDEV,
|
||||
V.VLREMBDESCRESSARCSTDEVOL,
|
||||
case when 'N' = 'S' then nvl( V.VLRDESCACORDOVERBAPDV, 0 ) else 0 end,
|
||||
nvl( Y.CMDIACREDIPI, 0 ),
|
||||
NVL(V.VLRITEMRATEIOCTE,0),
|
||||
'N',
|
||||
'C',
|
||||
V.VLRIPIPRECOVDA,
|
||||
V.VLRIPIPRECODEVOL,
|
||||
V.VLRDESCMEDALHADEVOL,
|
||||
'N'
|
||||
)) AS VLRCONTRIB
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_ANO_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_ANO_ANT
|
||||
, MAX(A.PROPQTDPRODUTOBASE) AS PROPQTDPRODUTOBASE
|
||||
FROM consinco.MRL_CUSTODIA Y
|
||||
JOIN consinco.MAXV_ABCDISTRIBBASE V ON Y.DTAENTRADASAIDA = V.DTAVDA
|
||||
JOIN consinco.MAP_PRODUTO A ON A.SEQPRODUTO = V.SEQPRODUTO
|
||||
JOIN consinco.MAP_PRODUTO PB ON PB.SEQPRODUTO = V.SEQPRODUTOCUSTO AND PB.SEQPRODUTO = Y.SEQPRODUTO
|
||||
JOIN consinco.MAP_FAMDIVISAO D ON D.SEQFAMILIA = A.SEQFAMILIA AND D.NRODIVISAO = V.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMEMBALAGEM K ON K.SEQFAMILIA = A.SEQFAMILIA AND K.QTDEMBALAGEM = 1
|
||||
JOIN consinco.MAX_EMPRESA E ON E.NROEMPRESA = V.NROEMPRESA AND Y.NROEMPRESA = NVL( E.NROEMPCUSTOABC, E.NROEMPRESA )
|
||||
JOIN consinco.MAX_DIVISAO DV ON E.NRODIVISAO = DV.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMDIVCATEG DC ON DC.NRODIVISAO = D.NRODIVISAO AND DC.STATUS = 'A' AND DC.SEQFAMILIA = D.SEQFAMILIA
|
||||
JOIN consinco.MAP_CATEGORIA CC1 ON CC1.SEQCATEGORIA = DC.SEQCATEGORIA AND CC1.STATUSCATEGOR in ('A', 'F') AND CC1.NIVELHIERARQUIA = 1 AND CC1.NRODIVISAO = DC.NRODIVISAO AND CC1.TIPCATEGORIA = 'M'
|
||||
LEFT JOIN consinco.MAP_PRODACRESCCUSTORELAC PR ON PR.SEQPRODUTO = V.SEQPRODUTO AND PR.DTAMOVIMENTACAO = V.DTAVDA
|
||||
WHERE V.NROEMPRESA IN ( SELECT E.EMPRESA_ID FROM EMPRESA_PARAMETROS E WHERE E.PARTICIPA_FLASH = 1 )
|
||||
AND V.NROSEGMENTO IN ( SELECT A.NROSEGMENTO FROM CONSINCO.MAD_SEGMENTO A WHERE A.STATUS = 'A' )
|
||||
AND DECODE(V.TIPTABELA, 'S', V.CGOACMCOMPRAVENDA, V.ACMCOMPRAVENDA) IN ( 'S','I' )
|
||||
AND V.DTAVDA BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' )
|
||||
, V.NROEMPRESA
|
||||
, E.FANTASIA
|
||||
, V.NRODIVISAO
|
||||
, V.NROSEGMENTO
|
||||
, V.SEQPRODUTO
|
||||
, A.SEQPRODUTOBASE
|
||||
, A.SEQFAMILIA
|
||||
, A.DESCCOMPLETA
|
||||
, CC1.SEQCATEGORIA
|
||||
, CC1.CATEGORIA) Z
|
||||
) LOOP
|
||||
|
||||
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.NROEMPRESA), r.NOMEEMPRESA, 1, r.NROEMPRESA);
|
||||
|
||||
IF r.SEQCATEGORIAN1 IS NOT NULL THEN
|
||||
v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN1), r.CATEGORIAN1, 2, r.NROEMPRESA);
|
||||
ELSE v_id_cat1 := v_id_empresa; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN2 IS NOT NULL THEN
|
||||
v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN2), r.CATEGORIAN2, 3, r.NROEMPRESA);
|
||||
ELSE v_id_cat2 := v_id_cat1; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN3 IS NOT NULL THEN
|
||||
v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN3), r.CATEGORIAN3, 4, r.NROEMPRESA);
|
||||
ELSE v_id_cat3 := v_id_cat2; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN4 IS NOT NULL THEN
|
||||
v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN4), r.CATEGORIAN4, 5, r.NROEMPRESA);
|
||||
ELSE v_id_cat4 := v_id_cat3; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN5 IS NOT NULL THEN
|
||||
v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN5), r.CATEGORIAN5, 6, r.NROEMPRESA);
|
||||
ELSE v_id_cat5 := v_id_cat4; END IF;
|
||||
|
||||
v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.SEQPRODUTO), r.PRODUTO, 7, r.NROEMPRESA, r.SEQPRODUTO, r.SEQPRODUTOBASE);
|
||||
|
||||
INSERT INTO TB_FLASH_FATO_CONTRIBUICAO (
|
||||
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_contribuicao, qtde_contribuicao,
|
||||
vlr_contribuicao, vl_ticket_medio, propqtdprodutobase, data_cadastro
|
||||
) VALUES (
|
||||
SEQ_TB_FLASH_FATO_CONTRIBUICAO.NEXTVAL,
|
||||
r.DTA, EXTRACT(YEAR FROM r.DTA), EXTRACT(MONTH FROM r.DTA), EXTRACT(DAY FROM r.DTA),
|
||||
TO_NUMBER(TO_CHAR(r.DTA, 'D')),
|
||||
v_id_produto, v_id_empresa, r.NROEMPRESA, r.NOMEEMPRESA, r.SEQPRODUTO, r.PRODUTO,
|
||||
r.SEQPRODUTOBASE, r.NRODIVISAO, r.NROSEGMENTO, r.QTDE_VENDA, r.VLR_IMP_VENDA,
|
||||
r.QTDE_VENDA, r.VLRCONTRIB,
|
||||
CASE WHEN r.QTDE_VENDA > 0 THEN r.VLRVENDA / r.QTDE_VENDA ELSE NULL END,
|
||||
r.PROPQTDPRODUTOBASE, SYSDATE
|
||||
);
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
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_CARGA_DADOS_CONTRIBUICAO' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_CONTRIBUICAO';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,74 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_CONTRIBUICAO_STG';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_META_CONTRIBUICAO_STG (
|
||||
COD_EMPRESA NUMBER NOT NULL,
|
||||
TIPO_NODO VARCHAR2(30) NOT NULL,
|
||||
CODIGO_NODO VARCHAR2(60) NOT NULL,
|
||||
CODIGO_NODO_PAI VARCHAR2(60),
|
||||
TIPO_NODO_PAI VARCHAR2(30),
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
PERCENTUAL_META NUMBER(10,4),
|
||||
VALOR_META NUMBER(18,6),
|
||||
OBSERVACAO VARCHAR2(500),
|
||||
ORIGEM_META VARCHAR2(100),
|
||||
DATA_CARGA DATE DEFAULT SYSDATE,
|
||||
CONSTRAINT CK_TB_FLASH_META_CTB_STG_TIPO CHECK (TIPO_NODO IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'')),
|
||||
CONSTRAINT CK_TB_FLASH_META_CTB_STG_TIPO_PAI CHECK (TIPO_NODO_PAI IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'') OR TIPO_NODO_PAI IS NULL),
|
||||
CONSTRAINT CK_TB_FLASH_META_CTB_STG_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_META_CTB_STG_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_CTB_STG_01';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_CTB_STG_01 ON TB_FLASH_META_CONTRIBUICAO_STG (COD_EMPRESA, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_CTB_STG_02';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_CTB_STG_02 ON TB_FLASH_META_CONTRIBUICAO_STG (TIPO_NODO, CODIGO_NODO, CODIGO_NODO_PAI)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_CTB_STG_03';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_CTB_STG_03 ON TB_FLASH_META_CONTRIBUICAO_STG (ORIGEM_META)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_CONTRIBUICAO_STG';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_META_CONTRIBUICAO_STG CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE VIEW VW_FLASH_META_CONTRIBUICAO_STG AS
|
||||
SELECT m1.empresa_fk AS cod_empresa, 'CATEGORIA' AS tipo_nodo, TO_CHAR(m1.categoria_fk) AS codigo_nodo,
|
||||
TO_CHAR(m1.categoria_pai_fk) AS codigo_nodo_pai, 'CATEGORIA' AS tipo_nodo_pai,
|
||||
m1.data_referencia, m1.ano AS ano_referencia, m1.mes AS mes_referencia, m1.dia AS dia_referencia,
|
||||
m1.percentual AS percentual_meta, m1.valor_meta, 'TB_METAS_CONTRIB_CATN1' AS observacao, 'TB_METAS_CONTRIB_CATN1' AS origem_meta
|
||||
FROM vitruvio.TB_METAS_CONTRIB_CATN1 m1
|
||||
UNION ALL
|
||||
SELECT m2.empresa_fk, 'CATEGORIA', TO_CHAR(m2.categoria_fk), TO_CHAR(m2.categoria_pai_fk), 'CATEGORIA',
|
||||
m2.data_referencia, m2.ano, m2.mes, m2.dia, m2.percentual, m2.valor_meta, 'TB_METAS_CONTRIB_CATN2', 'TB_METAS_CONTRIB_CATN2'
|
||||
FROM vitruvio.TB_METAS_CONTRIB_CATN2 m2
|
||||
UNION ALL
|
||||
SELECT m3.empresa_fk, 'CATEGORIA', TO_CHAR(m3.categoria_fk), TO_CHAR(m3.categoria_pai_fk), 'CATEGORIA',
|
||||
m3.data_referencia, m3.ano, m3.mes, m3.dia, m3.percentual, m3.valor_meta, 'TB_METAS_CONTRIB_CATN3', 'TB_METAS_CONTRIB_CATN3'
|
||||
FROM vitruvio.TB_METAS_CONTRIB_CATN3 m3
|
||||
UNION ALL
|
||||
SELECT m4.empresa_fk, 'CATEGORIA', TO_CHAR(m4.categoria_fk), TO_CHAR(m4.categoria_pai_fk), 'CATEGORIA',
|
||||
m4.data_referencia, m4.ano, m4.mes, m4.dia, m4.percentual, m4.valor_meta, 'TB_METAS_CONTRIB_CATN4', 'TB_METAS_CONTRIB_CATN4'
|
||||
FROM vitruvio.TB_METAS_CONTRIB_CATN4 m4
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'VW_FLASH_META_CONTRIBUICAO_STG' AND object_type = 'VIEW';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP VIEW VW_FLASH_META_CONTRIBUICAO_STG';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_META_CONTRIBUICAO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_META_CONTRIBUICAO START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_META_CONTRIBUICAO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_META_CONTRIBUICAO';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,80 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_CONTRIBUICAO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_META_CONTRIBUICAO (
|
||||
ID_META NUMBER NOT NULL,
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
PERCENTUAL_META NUMBER(10,4),
|
||||
VALOR_META NUMBER(18,6),
|
||||
OBSERVACAO VARCHAR2(500),
|
||||
DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL,
|
||||
DATA_ATUALIZACAO DATE,
|
||||
CONSTRAINT PK_TB_FLASH_META_CONTRIBUICAO PRIMARY KEY (ID_META),
|
||||
CONSTRAINT FK_TB_FLASH_META_CONTRIBUICAO_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_META_CONTRIBUICAO_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_META_CONTRIBUICAO_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_META_CONTRIBUICAO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_META_CONTRIBUICAO ADD CONSTRAINT UK_TB_FLASH_META_CONTRIBUICAO UNIQUE (ID_NODO, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_CONTRIBUICAO_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_CONTRIBUICAO_NODO ON TB_FLASH_META_CONTRIBUICAO (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_CONTRIBUICAO_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_CONTRIBUICAO_DATA ON TB_FLASH_META_CONTRIBUICAO (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_CTB_ANOMESDIA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_CTB_ANOMESDIA ON TB_FLASH_META_CONTRIBUICAO (ANO_REFERENCIA, MES_REFERENCIA, DIA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_CONTRIBUICAO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_META_CONTRIBUICAO CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,866 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_CONTRIBUICAO (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE,
|
||||
p_empresa IN NUMBER
|
||||
) AS
|
||||
v_id_empresa NUMBER;
|
||||
v_id_cat1 NUMBER;
|
||||
v_id_cat2 NUMBER;
|
||||
v_id_cat3 NUMBER;
|
||||
v_id_cat4 NUMBER;
|
||||
v_id_cat5 NUMBER;
|
||||
v_id_produto NUMBER;
|
||||
v_contador NUMBER := 0;
|
||||
|
||||
FUNCTION FN_GET_OR_CREATE_NODO (
|
||||
p_id_nodo_pai IN NUMBER,
|
||||
p_tipo_nodo IN VARCHAR2,
|
||||
p_codigo IN VARCHAR2,
|
||||
p_nome IN VARCHAR2,
|
||||
p_nivel IN NUMBER,
|
||||
p_cod_empresa IN NUMBER DEFAULT NULL,
|
||||
p_cod_produto IN NUMBER DEFAULT NULL,
|
||||
p_seqprodutobase IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER
|
||||
IS
|
||||
v_id_nodo NUMBER;
|
||||
BEGIN
|
||||
SELECT n.id_nodo
|
||||
INTO v_id_nodo
|
||||
FROM TB_FLASH_NODO n
|
||||
WHERE (
|
||||
n.id_nodo_pai = p_id_nodo_pai
|
||||
OR (n.id_nodo_pai IS NULL AND p_id_nodo_pai IS NULL)
|
||||
)
|
||||
AND n.tipo_nodo = p_tipo_nodo
|
||||
AND n.codigo = p_codigo
|
||||
AND (
|
||||
p_tipo_nodo <> 'PRODUTO'
|
||||
OR (
|
||||
n.cod_empresa = p_cod_empresa
|
||||
OR (n.cod_empresa IS NULL AND p_cod_empresa IS NULL)
|
||||
)
|
||||
);
|
||||
|
||||
UPDATE TB_FLASH_NODO n
|
||||
SET n.nome = p_nome,
|
||||
n.cod_empresa = p_cod_empresa,
|
||||
n.cod_produto = p_cod_produto,
|
||||
n.seqprodutobase = p_seqprodutobase,
|
||||
n.data_atualizacao = SYSDATE
|
||||
WHERE n.id_nodo = v_id_nodo
|
||||
AND (
|
||||
NVL(n.nome, '#') <> NVL(p_nome, '#')
|
||||
OR NVL(n.cod_empresa, -1) <> NVL(p_cod_empresa, -1)
|
||||
OR NVL(n.cod_produto, -1) <> NVL(p_cod_produto, -1)
|
||||
OR NVL(n.seqprodutobase, -1) <> NVL(p_seqprodutobase, -1)
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
v_id_nodo := SEQ_TB_FLASH_NODO.NEXTVAL;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO (
|
||||
id_nodo, id_nodo_pai, tipo_nodo, codigo, nome, nivel,
|
||||
ordem_exibicao, ativo, cod_empresa, cod_produto, seqprodutobase,
|
||||
data_cadastro, data_atualizacao
|
||||
) VALUES (
|
||||
v_id_nodo, p_id_nodo_pai, p_tipo_nodo, p_codigo, p_nome, p_nivel,
|
||||
NULL, 'S', p_cod_empresa, p_cod_produto, p_seqprodutobase,
|
||||
SYSDATE, NULL
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_FATO_CONTRIBUICAO
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
FOR r IN (
|
||||
SELECT Z.DTA,
|
||||
Z.NROEMPRESA,
|
||||
Z.NOMEEMPRESA,
|
||||
Z.NROSEGMENTO,
|
||||
Z.NRODIVISAO,
|
||||
Z.SEQPRODUTO,
|
||||
Z.SEQPRODUTOBASE,
|
||||
Z.PRODUTO,
|
||||
Z.SEQCATEGORIAN1,
|
||||
Z.CATEGORIAN1,
|
||||
Z.SEQCATEGORIAN2,
|
||||
Z.CATEGORIAN2,
|
||||
Z.SEQCATEGORIAN3,
|
||||
Z.CATEGORIAN3,
|
||||
Z.SEQCATEGORIAN4,
|
||||
Z.CATEGORIAN4,
|
||||
Z.SEQCATEGORIAN5,
|
||||
Z.CATEGORIAN5,
|
||||
Z.VLRVENDA,
|
||||
(CASE WHEN (Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) < TO_DATE('01/09/2022','DD/MM/YYYY'))
|
||||
OR ( Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) > TO_DATE('01/01/2024','DD/MM/YYYY')) THEN
|
||||
Z.VLRVENDA - (Z.QTDE_VENDA * (SELECT nvl(ROUND((CD.CMDIAVLRNF + CD.CMDIAIPI + CD.CMDIAICMSST + CD.CMDIADESPNF + CD.CMDIADESPFORANF -
|
||||
CD.CMDIACREDICMS - CD.CMDIACREDICMSPRESUM - CD.CMDIACREDICMSANTECIP - CD.CMDIACREDPIS - CD.CMDIACREDCOFINS- CD.CMDIADCTOFORANF),4),0)
|
||||
FROM MRL_CUSTODIA CD
|
||||
WHERE CD.SEQPRODUTO = (CASE WHEN Z.SEQPRODUTOBASE IS NULL THEN Z.SEQPRODUTO ELSE Z.SEQPRODUTOBASE END)
|
||||
AND CD.NROEMPRESA = 301
|
||||
AND CD.DTAENTRADASAIDA = (
|
||||
SELECT MAX(CD1.DTAENTRADASAIDA)
|
||||
FROM MRL_CUSTODIA CD1
|
||||
WHERE CD1.SEQPRODUTO = CD.SEQPRODUTO
|
||||
AND CD1.NROEMPRESA = 301
|
||||
AND CD1.DTAENTRADASAIDA <= Z.DTA
|
||||
)
|
||||
)) - Z.VLR_IMP_VENDA
|
||||
ELSE
|
||||
Z.VLRCONTRIB
|
||||
END) AS VLRCONTRIB,
|
||||
Z.VLRVENDA_MES_ANT,
|
||||
Z.VLRCONTRIB_MES_ANT,
|
||||
Z.VLRVENDA_ANO_ANT,
|
||||
Z.VLRCONTRIB_ANO_ANT,
|
||||
Z.QTDE_VENDA,
|
||||
Z.VLR_IMP_VENDA,
|
||||
Z.PROPQTDPRODUTOBASE
|
||||
FROM (SELECT /*+OPTIMIZER_FEATURES_ENABLE('10.2.0.4')*/
|
||||
TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' ) DTA,
|
||||
V.NROEMPRESA,
|
||||
E.FANTASIA AS NOMEEMPRESA,
|
||||
V.NROSEGMENTO,
|
||||
V.NRODIVISAO,
|
||||
V.SEQPRODUTO,
|
||||
A.SEQPRODUTOBASE,
|
||||
A.DESCCOMPLETA PRODUTO,
|
||||
CC1.SEQCATEGORIA AS SEQCATEGORIAN1,
|
||||
CC1.CATEGORIA AS CATEGORIAN1,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS SEQCATEGORIAN2,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS CATEGORIAN2,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN3,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN3,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN4,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN4,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN5,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN5,
|
||||
SUM( ( V.QTDITEM - NVL( V.QTDDEVOLITEM, 0 ) ) ) AS QTDE_VENDA,
|
||||
SUM( ( ROUND( V.VLRITEM, 2 ) ) - ( ROUND( V.VLRDEVOLITEM, 2 ) - ( 0 ) ) ) AS VLRVENDA,
|
||||
SUM( DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDITEM, 0, 0, ( Y.VLRIMPOSTOVDA - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDITEM )
|
||||
)
|
||||
- DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRDEVOLITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDDEVOLITEM, 0, 0, ( Y.VLRIMPOSTODEVOL - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDDEVOLITEM )
|
||||
)
|
||||
+ DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', 0,
|
||||
DECODE( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ V.VLRFCPICMS + V.PISITEM + V.COFINSITEM -
|
||||
DECODE( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
- V.DVLRFCPICMS - V.PISDEVOLITEM - V.COFINSDEVOLITEM
|
||||
)
|
||||
) AS VLR_IMP_VENDA
|
||||
, sum(
|
||||
consinco.fC5_AbcDistribLucratividade(
|
||||
'L',
|
||||
'L',
|
||||
'N',
|
||||
V.VLRITEM ,
|
||||
'N',
|
||||
V.VLRICMSST,
|
||||
V.VLRFCPST,
|
||||
V.VLRICMSSTEMPORIG,
|
||||
E.UF,
|
||||
V.UFPESSOA,
|
||||
'S',
|
||||
null,
|
||||
'N',
|
||||
V.VLRIPIITEM,
|
||||
V.VLRIPIDEVOLITEM,
|
||||
'N',
|
||||
V.VLRDESCFORANF,
|
||||
Y.CMDIAVLRNF - 0 ,
|
||||
Y.CMDIAIPI,
|
||||
nvl( Y.CMDIACREDPIS, 0 ),
|
||||
nvl( Y.CMDIACREDCOFINS, 0 ),
|
||||
Y.CMDIAICMSST,
|
||||
Y.CMDIADESPNF,
|
||||
Y.CMDIADESPFORANF,
|
||||
Y.CMDIADCTOFORANF,
|
||||
'S',
|
||||
a.propqtdprodutobase,
|
||||
V.QTDITEM,
|
||||
V.VLREMBDESCRESSARCST,
|
||||
V.ACMCOMPRAVENDA,
|
||||
V.PISITEM,
|
||||
V.COFINSITEM,
|
||||
decode( V.TIPCGO, 'S', Y.QTDVDA, nvl( Y.QTDDEVOL, Y.QTDVDA ) ),
|
||||
( decode( V.TIPCGO, 'S', Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ),
|
||||
nvl( Y.VLRIMPOSTODEVOL - nvl( V.VLRIPIDEVOLITEM, 0 ),
|
||||
Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ) ) ) ) ,
|
||||
'N',
|
||||
V.VLRDESPOPERACIONALITEM,
|
||||
Y.VLRDESPESAVDA,
|
||||
'N',
|
||||
nvl( Y.VLRVERBAVDAACR, 0 ),
|
||||
DECODE( V.TIPDOCFISCALCGO, 'T', 0, Y.QTDVERBAVDA ),
|
||||
Y.VLRVERBAVDA - nvl( Y.VLRVERBAVDAINDEVIDA, 0 ),
|
||||
'N',
|
||||
NVL(V.VLRTOTCOMISSAOITEM, 0),
|
||||
V.VLRDEVOLITEM,
|
||||
VLRDEVOLICMSST,
|
||||
V.DVLRFCPST,
|
||||
V.QTDDEVOLITEM,
|
||||
V.PISDEVOLITEM,
|
||||
V.COFINSDEVOLITEM,
|
||||
V.VLRDESPOPERACIONALITEMDEVOL,
|
||||
V.VLRTOTCOMISSAOITEMDEVOL,
|
||||
E.PERIRLUCRAT,
|
||||
E.PERCSLLLUCRAT,
|
||||
Y.CMDIACREDICMS,
|
||||
decode( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ 0 ,
|
||||
V.VLRFCPICMS,
|
||||
V.PERCPMF,
|
||||
V.PEROUTROIMPOSTO,
|
||||
decode( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
+ 0 ,
|
||||
V.DVLRFCPICMS,
|
||||
case when ( 'N' ) = 'N' then
|
||||
(nvl(y.cmdiavlrdescpistransf,0) + nvl(y.cmdiavlrdesccofinstransf,0) + nvl(y.cmdiavlrdescicmstransf,0) +
|
||||
nvl(y.cmdiavlrdescipitransf,0) + nvl(y.cmdiavlrdesclucrotransf,0) + nvl(y.cmdiavlrdescverbatransf,0) )
|
||||
else 0
|
||||
end,
|
||||
case when DV.UTILACRESCCUSTPRODRELAC = 'S' and nvl( A.SEQPRODUTOBASE, A.SEQPRODUTOBASEANTIGO ) is not null then
|
||||
coalesce( PR.PERCACRESCCUSTORELACVIG, nvl( consinco.F_RETACRESCCUSTORELACABC( V.SEQPRODUTO, V.DTAVDA ), 1 ) )
|
||||
else 1
|
||||
end,
|
||||
'N',
|
||||
0,
|
||||
0,
|
||||
'S',
|
||||
V.VLRDESCMEDALHA,
|
||||
'S',
|
||||
V.VLRDESCFORNEC,
|
||||
V.VLRDESCFORNECDEVOL,
|
||||
'N',
|
||||
V.VLRFRETEITEMRATEIO,
|
||||
V.VLRFRETEITEMRATEIODEV,
|
||||
'S',
|
||||
V.VLRICMSSTEMBUTPROD,
|
||||
V.VLRICMSSTEMBUTPRODDEV,
|
||||
V.VLREMBDESCRESSARCSTDEVOL,
|
||||
case when 'N' = 'S' then nvl( V.VLRDESCACORDOVERBAPDV, 0 ) else 0 end,
|
||||
nvl( Y.CMDIACREDIPI, 0 ),
|
||||
NVL(V.VLRITEMRATEIOCTE,0),
|
||||
'N',
|
||||
'C',
|
||||
V.VLRIPIPRECOVDA,
|
||||
V.VLRIPIPRECODEVOL,
|
||||
V.VLRDESCMEDALHADEVOL,
|
||||
'N'
|
||||
)) AS VLRCONTRIB
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_ANO_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_ANO_ANT
|
||||
, MAX(A.PROPQTDPRODUTOBASE) AS PROPQTDPRODUTOBASE
|
||||
FROM consinco.MRL_CUSTODIA Y
|
||||
JOIN consinco.MAXV_ABCDISTRIBBASE V ON Y.DTAENTRADASAIDA = V.DTAVDA
|
||||
JOIN consinco.MAP_PRODUTO A ON A.SEQPRODUTO = V.SEQPRODUTO
|
||||
JOIN consinco.MAP_PRODUTO PB ON PB.SEQPRODUTO = V.SEQPRODUTOCUSTO AND PB.SEQPRODUTO = Y.SEQPRODUTO
|
||||
JOIN consinco.MAP_FAMDIVISAO D ON D.SEQFAMILIA = A.SEQFAMILIA AND D.NRODIVISAO = V.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMEMBALAGEM K ON K.SEQFAMILIA = A.SEQFAMILIA AND K.QTDEMBALAGEM = 1
|
||||
JOIN consinco.MAX_EMPRESA E ON E.NROEMPRESA = V.NROEMPRESA AND Y.NROEMPRESA = NVL( E.NROEMPCUSTOABC, E.NROEMPRESA )
|
||||
JOIN consinco.MAX_DIVISAO DV ON E.NRODIVISAO = DV.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMDIVCATEG DC ON DC.NRODIVISAO = D.NRODIVISAO AND DC.STATUS = 'A' AND DC.SEQFAMILIA = D.SEQFAMILIA
|
||||
JOIN consinco.MAP_CATEGORIA CC1 ON CC1.SEQCATEGORIA = DC.SEQCATEGORIA AND CC1.STATUSCATEGOR in ('A', 'F') AND CC1.NIVELHIERARQUIA = 1 AND CC1.NRODIVISAO = DC.NRODIVISAO AND CC1.TIPCATEGORIA = 'M'
|
||||
LEFT JOIN consinco.MAP_PRODACRESCCUSTORELAC PR ON PR.SEQPRODUTO = V.SEQPRODUTO AND PR.DTAMOVIMENTACAO = V.DTAVDA
|
||||
WHERE V.NROEMPRESA IN ( SELECT E.EMPRESA_ID FROM EMPRESA_PARAMETROS E WHERE E.PARTICIPA_FLASH = 1 )
|
||||
AND V.NROEMPRESA = p_empresa
|
||||
AND V.NROSEGMENTO IN ( SELECT A.NROSEGMENTO FROM CONSINCO.MAD_SEGMENTO A WHERE A.STATUS = 'A' )
|
||||
AND DECODE(V.TIPTABELA, 'S', V.CGOACMCOMPRAVENDA, V.ACMCOMPRAVENDA) IN ( 'S','I' )
|
||||
AND V.DTAVDA BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' )
|
||||
, V.NROEMPRESA
|
||||
, E.FANTASIA
|
||||
, V.NRODIVISAO
|
||||
, V.NROSEGMENTO
|
||||
, V.SEQPRODUTO
|
||||
, A.SEQPRODUTOBASE
|
||||
, A.SEQFAMILIA
|
||||
, A.DESCCOMPLETA
|
||||
, CC1.SEQCATEGORIA
|
||||
, CC1.CATEGORIA) Z
|
||||
) LOOP
|
||||
|
||||
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.NROEMPRESA), r.NOMEEMPRESA, 1, r.NROEMPRESA);
|
||||
|
||||
IF r.SEQCATEGORIAN1 IS NOT NULL THEN
|
||||
v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN1), r.CATEGORIAN1, 2, r.NROEMPRESA);
|
||||
ELSE v_id_cat1 := v_id_empresa; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN2 IS NOT NULL THEN
|
||||
v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN2), r.CATEGORIAN2, 3, r.NROEMPRESA);
|
||||
ELSE v_id_cat2 := v_id_cat1; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN3 IS NOT NULL THEN
|
||||
v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN3), r.CATEGORIAN3, 4, r.NROEMPRESA);
|
||||
ELSE v_id_cat3 := v_id_cat2; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN4 IS NOT NULL THEN
|
||||
v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN4), r.CATEGORIAN4, 5, r.NROEMPRESA);
|
||||
ELSE v_id_cat4 := v_id_cat3; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN5 IS NOT NULL THEN
|
||||
v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN5), r.CATEGORIAN5, 6, r.NROEMPRESA);
|
||||
ELSE v_id_cat5 := v_id_cat4; END IF;
|
||||
|
||||
v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.SEQPRODUTO), r.PRODUTO, 7, r.NROEMPRESA, r.SEQPRODUTO, r.SEQPRODUTOBASE);
|
||||
|
||||
INSERT INTO TB_FLASH_FATO_CONTRIBUICAO (
|
||||
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_contribuicao, qtde_contribuicao,
|
||||
vlr_contribuicao, vl_ticket_medio, propqtdprodutobase, data_cadastro
|
||||
) VALUES (
|
||||
SEQ_TB_FLASH_FATO_CONTRIBUICAO.NEXTVAL,
|
||||
r.DTA, EXTRACT(YEAR FROM r.DTA), EXTRACT(MONTH FROM r.DTA), EXTRACT(DAY FROM r.DTA),
|
||||
TO_NUMBER(TO_CHAR(r.DTA, 'D')),
|
||||
v_id_produto, v_id_empresa, r.NROEMPRESA, r.NOMEEMPRESA, r.SEQPRODUTO, r.PRODUTO,
|
||||
r.SEQPRODUTOBASE, r.NRODIVISAO, r.NROSEGMENTO, r.QTDE_VENDA, r.VLR_IMP_VENDA,
|
||||
r.QTDE_VENDA, r.VLRCONTRIB,
|
||||
CASE WHEN r.QTDE_VENDA > 0 THEN r.VLRVENDA / r.QTDE_VENDA ELSE NULL END,
|
||||
r.PROPQTDPRODUTOBASE, SYSDATE
|
||||
);
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_CONTRIBUICAO (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE,
|
||||
p_empresa IN NUMBER
|
||||
) AS
|
||||
v_id_empresa NUMBER;
|
||||
v_id_cat1 NUMBER;
|
||||
v_id_cat2 NUMBER;
|
||||
v_id_cat3 NUMBER;
|
||||
v_id_cat4 NUMBER;
|
||||
v_id_cat5 NUMBER;
|
||||
v_id_produto NUMBER;
|
||||
v_contador NUMBER := 0;
|
||||
|
||||
FUNCTION FN_GET_OR_CREATE_NODO (
|
||||
p_id_nodo_pai IN NUMBER,
|
||||
p_tipo_nodo IN VARCHAR2,
|
||||
p_codigo IN VARCHAR2,
|
||||
p_nome IN VARCHAR2,
|
||||
p_nivel IN NUMBER,
|
||||
p_cod_empresa IN NUMBER DEFAULT NULL,
|
||||
p_cod_produto IN NUMBER DEFAULT NULL,
|
||||
p_seqprodutobase IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER
|
||||
IS
|
||||
v_id_nodo NUMBER;
|
||||
BEGIN
|
||||
SELECT n.id_nodo
|
||||
INTO v_id_nodo
|
||||
FROM TB_FLASH_NODO n
|
||||
WHERE (
|
||||
n.id_nodo_pai = p_id_nodo_pai
|
||||
OR (n.id_nodo_pai IS NULL AND p_id_nodo_pai IS NULL)
|
||||
)
|
||||
AND n.tipo_nodo = p_tipo_nodo
|
||||
AND n.codigo = p_codigo
|
||||
AND (
|
||||
p_tipo_nodo <> 'PRODUTO'
|
||||
OR (
|
||||
n.cod_empresa = p_cod_empresa
|
||||
OR (n.cod_empresa IS NULL AND p_cod_empresa IS NULL)
|
||||
)
|
||||
);
|
||||
|
||||
UPDATE TB_FLASH_NODO n
|
||||
SET n.nome = p_nome,
|
||||
n.cod_empresa = p_cod_empresa,
|
||||
n.cod_produto = p_cod_produto,
|
||||
n.seqprodutobase = p_seqprodutobase,
|
||||
n.data_atualizacao = SYSDATE
|
||||
WHERE n.id_nodo = v_id_nodo
|
||||
AND (
|
||||
NVL(n.nome, '#') <> NVL(p_nome, '#')
|
||||
OR NVL(n.cod_empresa, -1) <> NVL(p_cod_empresa, -1)
|
||||
OR NVL(n.cod_produto, -1) <> NVL(p_cod_produto, -1)
|
||||
OR NVL(n.seqprodutobase, -1) <> NVL(p_seqprodutobase, -1)
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
v_id_nodo := SEQ_TB_FLASH_NODO.NEXTVAL;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO (
|
||||
id_nodo, id_nodo_pai, tipo_nodo, codigo, nome, nivel,
|
||||
ordem_exibicao, ativo, cod_empresa, cod_produto, seqprodutobase,
|
||||
data_cadastro, data_atualizacao
|
||||
) VALUES (
|
||||
v_id_nodo, p_id_nodo_pai, p_tipo_nodo, p_codigo, p_nome, p_nivel,
|
||||
NULL, 'S', p_cod_empresa, p_cod_produto, p_seqprodutobase,
|
||||
SYSDATE, NULL
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_FATO_CONTRIBUICAO
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
FOR r IN (
|
||||
SELECT Z.DTA,
|
||||
Z.NROEMPRESA,
|
||||
Z.NOMEEMPRESA,
|
||||
Z.NROSEGMENTO,
|
||||
Z.NRODIVISAO,
|
||||
Z.SEQPRODUTO,
|
||||
Z.SEQPRODUTOBASE,
|
||||
Z.PRODUTO,
|
||||
Z.SEQCATEGORIAN1,
|
||||
Z.CATEGORIAN1,
|
||||
Z.SEQCATEGORIAN2,
|
||||
Z.CATEGORIAN2,
|
||||
Z.SEQCATEGORIAN3,
|
||||
Z.CATEGORIAN3,
|
||||
Z.SEQCATEGORIAN4,
|
||||
Z.CATEGORIAN4,
|
||||
Z.SEQCATEGORIAN5,
|
||||
Z.CATEGORIAN5,
|
||||
Z.VLRVENDA,
|
||||
(CASE WHEN (Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) < TO_DATE('01/09/2022','DD/MM/YYYY'))
|
||||
OR ( Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) > TO_DATE('01/01/2024','DD/MM/YYYY')) THEN
|
||||
Z.VLRVENDA - (Z.QTDE_VENDA * (SELECT nvl(ROUND((CD.CMDIAVLRNF + CD.CMDIAIPI + CD.CMDIAICMSST + CD.CMDIADESPNF + CD.CMDIADESPFORANF -
|
||||
CD.CMDIACREDICMS - CD.CMDIACREDICMSPRESUM - CD.CMDIACREDICMSANTECIP - CD.CMDIACREDPIS - CD.CMDIACREDCOFINS- CD.CMDIADCTOFORANF),4),0)
|
||||
FROM MRL_CUSTODIA CD
|
||||
WHERE CD.SEQPRODUTO = (CASE WHEN Z.SEQPRODUTOBASE IS NULL THEN Z.SEQPRODUTO ELSE Z.SEQPRODUTOBASE END)
|
||||
AND CD.NROEMPRESA = 301
|
||||
AND CD.DTAENTRADASAIDA = (
|
||||
SELECT MAX(CD1.DTAENTRADASAIDA)
|
||||
FROM MRL_CUSTODIA CD1
|
||||
WHERE CD1.SEQPRODUTO = CD.SEQPRODUTO
|
||||
AND CD1.NROEMPRESA = 301
|
||||
AND CD1.DTAENTRADASAIDA <= Z.DTA
|
||||
)
|
||||
)) - Z.VLR_IMP_VENDA
|
||||
ELSE
|
||||
Z.VLRCONTRIB
|
||||
END) AS VLRCONTRIB,
|
||||
Z.VLRVENDA_MES_ANT,
|
||||
Z.VLRCONTRIB_MES_ANT,
|
||||
Z.VLRVENDA_ANO_ANT,
|
||||
Z.VLRCONTRIB_ANO_ANT,
|
||||
Z.QTDE_VENDA,
|
||||
Z.VLR_IMP_VENDA,
|
||||
Z.PROPQTDPRODUTOBASE
|
||||
FROM (SELECT /*+OPTIMIZER_FEATURES_ENABLE('10.2.0.4')*/
|
||||
TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' ) DTA,
|
||||
V.NROEMPRESA,
|
||||
E.FANTASIA AS NOMEEMPRESA,
|
||||
V.NROSEGMENTO,
|
||||
V.NRODIVISAO,
|
||||
V.SEQPRODUTO,
|
||||
A.SEQPRODUTOBASE,
|
||||
A.DESCCOMPLETA PRODUTO,
|
||||
CC1.SEQCATEGORIA AS SEQCATEGORIAN1,
|
||||
CC1.CATEGORIA AS CATEGORIAN1,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS SEQCATEGORIAN2,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS CATEGORIAN2,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN3,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN3,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN4,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN4,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN5,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN5,
|
||||
SUM( ( V.QTDITEM - NVL( V.QTDDEVOLITEM, 0 ) ) ) AS QTDE_VENDA,
|
||||
SUM( ( ROUND( V.VLRITEM, 2 ) ) - ( ROUND( V.VLRDEVOLITEM, 2 ) - ( 0 ) ) ) AS VLRVENDA,
|
||||
SUM( DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDITEM, 0, 0, ( Y.VLRIMPOSTOVDA - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDITEM )
|
||||
)
|
||||
- DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRDEVOLITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDDEVOLITEM, 0, 0, ( Y.VLRIMPOSTODEVOL - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDDEVOLITEM )
|
||||
)
|
||||
+ DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', 0,
|
||||
DECODE( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ V.VLRFCPICMS + V.PISITEM + V.COFINSITEM -
|
||||
DECODE( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
- V.DVLRFCPICMS - V.PISDEVOLITEM - V.COFINSDEVOLITEM
|
||||
)
|
||||
) AS VLR_IMP_VENDA
|
||||
, sum(
|
||||
consinco.fC5_AbcDistribLucratividade(
|
||||
'L',
|
||||
'L',
|
||||
'N',
|
||||
V.VLRITEM ,
|
||||
'N',
|
||||
V.VLRICMSST,
|
||||
V.VLRFCPST,
|
||||
V.VLRICMSSTEMPORIG,
|
||||
E.UF,
|
||||
V.UFPESSOA,
|
||||
'S',
|
||||
null,
|
||||
'N',
|
||||
V.VLRIPIITEM,
|
||||
V.VLRIPIDEVOLITEM,
|
||||
'N',
|
||||
V.VLRDESCFORANF,
|
||||
Y.CMDIAVLRNF - 0 ,
|
||||
Y.CMDIAIPI,
|
||||
nvl( Y.CMDIACREDPIS, 0 ),
|
||||
nvl( Y.CMDIACREDCOFINS, 0 ),
|
||||
Y.CMDIAICMSST,
|
||||
Y.CMDIADESPNF,
|
||||
Y.CMDIADESPFORANF,
|
||||
Y.CMDIADCTOFORANF,
|
||||
'S',
|
||||
a.propqtdprodutobase,
|
||||
V.QTDITEM,
|
||||
V.VLREMBDESCRESSARCST,
|
||||
V.ACMCOMPRAVENDA,
|
||||
V.PISITEM,
|
||||
V.COFINSITEM,
|
||||
decode( V.TIPCGO, 'S', Y.QTDVDA, nvl( Y.QTDDEVOL, Y.QTDVDA ) ),
|
||||
( decode( V.TIPCGO, 'S', Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ),
|
||||
nvl( Y.VLRIMPOSTODEVOL - nvl( V.VLRIPIDEVOLITEM, 0 ),
|
||||
Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ) ) ) ) ,
|
||||
'N',
|
||||
V.VLRDESPOPERACIONALITEM,
|
||||
Y.VLRDESPESAVDA,
|
||||
'N',
|
||||
nvl( Y.VLRVERBAVDAACR, 0 ),
|
||||
DECODE( V.TIPDOCFISCALCGO, 'T', 0, Y.QTDVERBAVDA ),
|
||||
Y.VLRVERBAVDA - nvl( Y.VLRVERBAVDAINDEVIDA, 0 ),
|
||||
'N',
|
||||
NVL(V.VLRTOTCOMISSAOITEM, 0),
|
||||
V.VLRDEVOLITEM,
|
||||
VLRDEVOLICMSST,
|
||||
V.DVLRFCPST,
|
||||
V.QTDDEVOLITEM,
|
||||
V.PISDEVOLITEM,
|
||||
V.COFINSDEVOLITEM,
|
||||
V.VLRDESPOPERACIONALITEMDEVOL,
|
||||
V.VLRTOTCOMISSAOITEMDEVOL,
|
||||
E.PERIRLUCRAT,
|
||||
E.PERCSLLLUCRAT,
|
||||
Y.CMDIACREDICMS,
|
||||
decode( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ 0 ,
|
||||
V.VLRFCPICMS,
|
||||
V.PERCPMF,
|
||||
V.PEROUTROIMPOSTO,
|
||||
decode( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
+ 0 ,
|
||||
V.DVLRFCPICMS,
|
||||
case when ( 'N' ) = 'N' then
|
||||
(nvl(y.cmdiavlrdescpistransf,0) + nvl(y.cmdiavlrdesccofinstransf,0) + nvl(y.cmdiavlrdescicmstransf,0) +
|
||||
nvl(y.cmdiavlrdescipitransf,0) + nvl(y.cmdiavlrdesclucrotransf,0) + nvl(y.cmdiavlrdescverbatransf,0) )
|
||||
else 0
|
||||
end,
|
||||
case when DV.UTILACRESCCUSTPRODRELAC = 'S' and nvl( A.SEQPRODUTOBASE, A.SEQPRODUTOBASEANTIGO ) is not null then
|
||||
coalesce( PR.PERCACRESCCUSTORELACVIG, nvl( consinco.F_RETACRESCCUSTORELACABC( V.SEQPRODUTO, V.DTAVDA ), 1 ) )
|
||||
else 1
|
||||
end,
|
||||
'N',
|
||||
0,
|
||||
0,
|
||||
'S',
|
||||
V.VLRDESCMEDALHA,
|
||||
'S',
|
||||
V.VLRDESCFORNEC,
|
||||
V.VLRDESCFORNECDEVOL,
|
||||
'N',
|
||||
V.VLRFRETEITEMRATEIO,
|
||||
V.VLRFRETEITEMRATEIODEV,
|
||||
'S',
|
||||
V.VLRICMSSTEMBUTPROD,
|
||||
V.VLRICMSSTEMBUTPRODDEV,
|
||||
V.VLREMBDESCRESSARCSTDEVOL,
|
||||
case when 'N' = 'S' then nvl( V.VLRDESCACORDOVERBAPDV, 0 ) else 0 end,
|
||||
nvl( Y.CMDIACREDIPI, 0 ),
|
||||
NVL(V.VLRITEMRATEIOCTE,0),
|
||||
'N',
|
||||
'C',
|
||||
V.VLRIPIPRECOVDA,
|
||||
V.VLRIPIPRECODEVOL,
|
||||
V.VLRDESCMEDALHADEVOL,
|
||||
'N'
|
||||
)) AS VLRCONTRIB
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_ANO_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_ANO_ANT
|
||||
, MAX(A.PROPQTDPRODUTOBASE) AS PROPQTDPRODUTOBASE
|
||||
FROM consinco.MRL_CUSTODIA Y
|
||||
JOIN consinco.MAXV_ABCDISTRIBBASE V ON Y.DTAENTRADASAIDA = V.DTAVDA
|
||||
JOIN consinco.MAP_PRODUTO A ON A.SEQPRODUTO = V.SEQPRODUTO
|
||||
JOIN consinco.MAP_PRODUTO PB ON PB.SEQPRODUTO = V.SEQPRODUTOCUSTO AND PB.SEQPRODUTO = Y.SEQPRODUTO
|
||||
JOIN consinco.MAP_FAMDIVISAO D ON D.SEQFAMILIA = A.SEQFAMILIA AND D.NRODIVISAO = V.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMEMBALAGEM K ON K.SEQFAMILIA = A.SEQFAMILIA AND K.QTDEMBALAGEM = 1
|
||||
JOIN consinco.MAX_EMPRESA E ON E.NROEMPRESA = V.NROEMPRESA AND Y.NROEMPRESA = NVL( E.NROEMPCUSTOABC, E.NROEMPRESA )
|
||||
JOIN consinco.MAX_DIVISAO DV ON E.NRODIVISAO = DV.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMDIVCATEG DC ON DC.NRODIVISAO = D.NRODIVISAO AND DC.STATUS = 'A' AND DC.SEQFAMILIA = D.SEQFAMILIA
|
||||
JOIN consinco.MAP_CATEGORIA CC1 ON CC1.SEQCATEGORIA = DC.SEQCATEGORIA AND CC1.STATUSCATEGOR in ('A', 'F') AND CC1.NIVELHIERARQUIA = 1 AND CC1.NRODIVISAO = DC.NRODIVISAO AND CC1.TIPCATEGORIA = 'M'
|
||||
LEFT JOIN consinco.MAP_PRODACRESCCUSTORELAC PR ON PR.SEQPRODUTO = V.SEQPRODUTO AND PR.DTAMOVIMENTACAO = V.DTAVDA
|
||||
WHERE V.NROEMPRESA IN ( SELECT E.EMPRESA_ID FROM EMPRESA_PARAMETROS E WHERE E.PARTICIPA_FLASH = 1 )
|
||||
AND V.NROSEGMENTO IN ( SELECT A.NROSEGMENTO FROM CONSINCO.MAD_SEGMENTO A WHERE A.STATUS = 'A' )
|
||||
AND DECODE(V.TIPTABELA, 'S', V.CGOACMCOMPRAVENDA, V.ACMCOMPRAVENDA) IN ( 'S','I' )
|
||||
AND V.DTAVDA BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' )
|
||||
, V.NROEMPRESA
|
||||
, E.FANTASIA
|
||||
, V.NRODIVISAO
|
||||
, V.NROSEGMENTO
|
||||
, V.SEQPRODUTO
|
||||
, A.SEQPRODUTOBASE
|
||||
, A.SEQFAMILIA
|
||||
, A.DESCCOMPLETA
|
||||
, CC1.SEQCATEGORIA
|
||||
, CC1.CATEGORIA) Z
|
||||
) LOOP
|
||||
|
||||
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.NROEMPRESA), r.NOMEEMPRESA, 1, r.NROEMPRESA);
|
||||
|
||||
IF r.SEQCATEGORIAN1 IS NOT NULL THEN
|
||||
v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN1), r.CATEGORIAN1, 2, r.NROEMPRESA);
|
||||
ELSE v_id_cat1 := v_id_empresa; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN2 IS NOT NULL THEN
|
||||
v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN2), r.CATEGORIAN2, 3, r.NROEMPRESA);
|
||||
ELSE v_id_cat2 := v_id_cat1; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN3 IS NOT NULL THEN
|
||||
v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN3), r.CATEGORIAN3, 4, r.NROEMPRESA);
|
||||
ELSE v_id_cat3 := v_id_cat2; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN4 IS NOT NULL THEN
|
||||
v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN4), r.CATEGORIAN4, 5, r.NROEMPRESA);
|
||||
ELSE v_id_cat4 := v_id_cat3; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN5 IS NOT NULL THEN
|
||||
v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN5), r.CATEGORIAN5, 6, r.NROEMPRESA);
|
||||
ELSE v_id_cat5 := v_id_cat4; END IF;
|
||||
|
||||
v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.SEQPRODUTO), r.PRODUTO, 7, r.NROEMPRESA, r.SEQPRODUTO, r.SEQPRODUTOBASE);
|
||||
|
||||
INSERT INTO TB_FLASH_FATO_CONTRIBUICAO (
|
||||
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_contribuicao, qtde_contribuicao,
|
||||
vlr_contribuicao, vl_ticket_medio, propqtdprodutobase, data_cadastro
|
||||
) VALUES (
|
||||
SEQ_TB_FLASH_FATO_CONTRIBUICAO.NEXTVAL,
|
||||
r.DTA, EXTRACT(YEAR FROM r.DTA), EXTRACT(MONTH FROM r.DTA), EXTRACT(DAY FROM r.DTA),
|
||||
TO_NUMBER(TO_CHAR(r.DTA, 'D')),
|
||||
v_id_produto, v_id_empresa, r.NROEMPRESA, r.NOMEEMPRESA, r.SEQPRODUTO, r.PRODUTO,
|
||||
r.SEQPRODUTOBASE, r.NRODIVISAO, r.NROSEGMENTO, r.QTDE_VENDA, r.VLR_IMP_VENDA,
|
||||
r.QTDE_VENDA, r.VLRCONTRIB,
|
||||
CASE WHEN r.QTDE_VENDA > 0 THEN r.VLRVENDA / r.QTDE_VENDA ELSE NULL END,
|
||||
r.PROPQTDPRODUTOBASE, SYSDATE
|
||||
);
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -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
|
||||
@@ -0,0 +1,867 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_CONTRIBUICAO (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE,
|
||||
p_empresa IN NUMBER
|
||||
) AS
|
||||
v_id_empresa NUMBER;
|
||||
v_id_cat1 NUMBER;
|
||||
v_id_cat2 NUMBER;
|
||||
v_id_cat3 NUMBER;
|
||||
v_id_cat4 NUMBER;
|
||||
v_id_cat5 NUMBER;
|
||||
v_id_produto NUMBER;
|
||||
v_contador NUMBER := 0;
|
||||
|
||||
FUNCTION FN_GET_OR_CREATE_NODO (
|
||||
p_id_nodo_pai IN NUMBER,
|
||||
p_tipo_nodo IN VARCHAR2,
|
||||
p_codigo IN VARCHAR2,
|
||||
p_nome IN VARCHAR2,
|
||||
p_nivel IN NUMBER,
|
||||
p_cod_empresa IN NUMBER DEFAULT NULL,
|
||||
p_cod_produto IN NUMBER DEFAULT NULL,
|
||||
p_seqprodutobase IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER
|
||||
IS
|
||||
v_id_nodo NUMBER;
|
||||
BEGIN
|
||||
SELECT n.id_nodo
|
||||
INTO v_id_nodo
|
||||
FROM TB_FLASH_NODO n
|
||||
WHERE (
|
||||
n.id_nodo_pai = p_id_nodo_pai
|
||||
OR (n.id_nodo_pai IS NULL AND p_id_nodo_pai IS NULL)
|
||||
)
|
||||
AND n.tipo_nodo = p_tipo_nodo
|
||||
AND n.codigo = p_codigo
|
||||
AND (
|
||||
p_tipo_nodo <> 'PRODUTO'
|
||||
OR (
|
||||
n.cod_empresa = p_cod_empresa
|
||||
OR (n.cod_empresa IS NULL AND p_cod_empresa IS NULL)
|
||||
)
|
||||
);
|
||||
|
||||
UPDATE TB_FLASH_NODO n
|
||||
SET n.nome = p_nome,
|
||||
n.cod_empresa = p_cod_empresa,
|
||||
n.cod_produto = p_cod_produto,
|
||||
n.seqprodutobase = p_seqprodutobase,
|
||||
n.data_atualizacao = SYSDATE
|
||||
WHERE n.id_nodo = v_id_nodo
|
||||
AND (
|
||||
NVL(n.nome, '#') <> NVL(p_nome, '#')
|
||||
OR NVL(n.cod_empresa, -1) <> NVL(p_cod_empresa, -1)
|
||||
OR NVL(n.cod_produto, -1) <> NVL(p_cod_produto, -1)
|
||||
OR NVL(n.seqprodutobase, -1) <> NVL(p_seqprodutobase, -1)
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
v_id_nodo := SEQ_TB_FLASH_NODO.NEXTVAL;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO (
|
||||
id_nodo, id_nodo_pai, tipo_nodo, codigo, nome, nivel,
|
||||
ordem_exibicao, ativo, cod_empresa, cod_produto, seqprodutobase,
|
||||
data_cadastro, data_atualizacao
|
||||
) VALUES (
|
||||
v_id_nodo, p_id_nodo_pai, p_tipo_nodo, p_codigo, p_nome, p_nivel,
|
||||
NULL, 'S', p_cod_empresa, p_cod_produto, p_seqprodutobase,
|
||||
SYSDATE, NULL
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_FATO_CONTRIBUICAO
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
FOR r IN (
|
||||
SELECT Z.DTA,
|
||||
Z.NROEMPRESA,
|
||||
Z.NOMEEMPRESA,
|
||||
Z.NROSEGMENTO,
|
||||
Z.NRODIVISAO,
|
||||
Z.SEQPRODUTO,
|
||||
Z.SEQPRODUTOBASE,
|
||||
Z.PRODUTO,
|
||||
Z.SEQCATEGORIAN1,
|
||||
Z.CATEGORIAN1,
|
||||
Z.SEQCATEGORIAN2,
|
||||
Z.CATEGORIAN2,
|
||||
Z.SEQCATEGORIAN3,
|
||||
Z.CATEGORIAN3,
|
||||
Z.SEQCATEGORIAN4,
|
||||
Z.CATEGORIAN4,
|
||||
Z.SEQCATEGORIAN5,
|
||||
Z.CATEGORIAN5,
|
||||
Z.VLRVENDA,
|
||||
(CASE WHEN (Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) < TO_DATE('01/09/2022','DD/MM/YYYY'))
|
||||
OR ( Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) > TO_DATE('01/01/2024','DD/MM/YYYY')) THEN
|
||||
Z.VLRVENDA - (Z.QTDE_VENDA * (SELECT nvl(ROUND((CD.CMDIAVLRNF + CD.CMDIAIPI + CD.CMDIAICMSST + CD.CMDIADESPNF + CD.CMDIADESPFORANF -
|
||||
CD.CMDIACREDICMS - CD.CMDIACREDICMSPRESUM - CD.CMDIACREDICMSANTECIP - CD.CMDIACREDPIS - CD.CMDIACREDCOFINS- CD.CMDIADCTOFORANF),4),0)
|
||||
FROM consinco.MRL_CUSTODIA CD
|
||||
WHERE CD.SEQPRODUTO = (CASE WHEN Z.SEQPRODUTOBASE IS NULL THEN Z.SEQPRODUTO ELSE Z.SEQPRODUTOBASE END)
|
||||
AND CD.NROEMPRESA = 301
|
||||
AND CD.DTAENTRADASAIDA = (
|
||||
SELECT MAX(CD1.DTAENTRADASAIDA)
|
||||
FROM consinco.MRL_CUSTODIA CD1
|
||||
WHERE CD1.SEQPRODUTO = CD.SEQPRODUTO
|
||||
AND CD1.NROEMPRESA = 301
|
||||
AND CD1.DTAENTRADASAIDA <= Z.DTA
|
||||
)
|
||||
)) - Z.VLR_IMP_VENDA
|
||||
ELSE
|
||||
Z.VLRCONTRIB
|
||||
END) AS VLRCONTRIB,
|
||||
Z.VLRVENDA_MES_ANT,
|
||||
Z.VLRCONTRIB_MES_ANT,
|
||||
Z.VLRVENDA_ANO_ANT,
|
||||
Z.VLRCONTRIB_ANO_ANT,
|
||||
Z.QTDE_VENDA,
|
||||
Z.VLR_IMP_VENDA,
|
||||
Z.PROPQTDPRODUTOBASE
|
||||
FROM (SELECT /*+OPTIMIZER_FEATURES_ENABLE('10.2.0.4')*/
|
||||
TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' ) DTA,
|
||||
V.NROEMPRESA,
|
||||
E.NOMEREDUZIDO AS NOMEEMPRESA,
|
||||
V.NROSEGMENTO,
|
||||
V.NRODIVISAO,
|
||||
V.SEQPRODUTO,
|
||||
A.SEQPRODUTOBASE,
|
||||
A.DESCCOMPLETA PRODUTO,
|
||||
CC1.SEQCATEGORIA AS SEQCATEGORIAN1,
|
||||
CC1.CATEGORIA AS CATEGORIAN1,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS SEQCATEGORIAN2,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS CATEGORIAN2,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN3,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN3,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN4,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN4,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN5,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN5,
|
||||
SUM( ( V.QTDITEM - NVL( V.QTDDEVOLITEM, 0 ) ) ) AS QTDE_VENDA,
|
||||
SUM( ( ROUND( V.VLRITEM, 2 ) ) - ( ROUND( V.VLRDEVOLITEM, 2 ) - ( 0 ) ) ) AS VLRVENDA,
|
||||
SUM( DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDITEM, 0, 0, ( Y.VLRIMPOSTOVDA - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDITEM )
|
||||
)
|
||||
- DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRDEVOLITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDDEVOLITEM, 0, 0, ( Y.VLRIMPOSTODEVOL - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDDEVOLITEM )
|
||||
)
|
||||
+ DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', 0,
|
||||
DECODE( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ V.VLRFCPICMS + V.PISITEM + V.COFINSITEM -
|
||||
DECODE( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
- V.DVLRFCPICMS - V.PISDEVOLITEM - V.COFINSDEVOLITEM
|
||||
)
|
||||
) AS VLR_IMP_VENDA
|
||||
, sum(
|
||||
consinco.fC5_AbcDistribLucratividade(
|
||||
'L',
|
||||
'L',
|
||||
'N',
|
||||
V.VLRITEM ,
|
||||
'N',
|
||||
V.VLRICMSST,
|
||||
V.VLRFCPST,
|
||||
V.VLRICMSSTEMPORIG,
|
||||
E.UF,
|
||||
V.UFPESSOA,
|
||||
'S',
|
||||
null,
|
||||
'N',
|
||||
V.VLRIPIITEM,
|
||||
V.VLRIPIDEVOLITEM,
|
||||
'N',
|
||||
V.VLRDESCFORANF,
|
||||
Y.CMDIAVLRNF - 0 ,
|
||||
Y.CMDIAIPI,
|
||||
nvl( Y.CMDIACREDPIS, 0 ),
|
||||
nvl( Y.CMDIACREDCOFINS, 0 ),
|
||||
Y.CMDIAICMSST,
|
||||
Y.CMDIADESPNF,
|
||||
Y.CMDIADESPFORANF,
|
||||
Y.CMDIADCTOFORANF,
|
||||
'S',
|
||||
a.propqtdprodutobase,
|
||||
V.QTDITEM,
|
||||
V.VLREMBDESCRESSARCST,
|
||||
V.ACMCOMPRAVENDA,
|
||||
V.PISITEM,
|
||||
V.COFINSITEM,
|
||||
decode( V.TIPCGO, 'S', Y.QTDVDA, nvl( Y.QTDDEVOL, Y.QTDVDA ) ),
|
||||
( decode( V.TIPCGO, 'S', Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ),
|
||||
nvl( Y.VLRIMPOSTODEVOL - nvl( V.VLRIPIDEVOLITEM, 0 ),
|
||||
Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ) ) ) ) ,
|
||||
'N',
|
||||
V.VLRDESPOPERACIONALITEM,
|
||||
Y.VLRDESPESAVDA,
|
||||
'N',
|
||||
nvl( Y.VLRVERBAVDAACR, 0 ),
|
||||
DECODE( V.TIPDOCFISCALCGO, 'T', 0, Y.QTDVERBAVDA ),
|
||||
Y.VLRVERBAVDA - nvl( Y.VLRVERBAVDAINDEVIDA, 0 ),
|
||||
'N',
|
||||
NVL(V.VLRTOTCOMISSAOITEM, 0),
|
||||
V.VLRDEVOLITEM,
|
||||
VLRDEVOLICMSST,
|
||||
V.DVLRFCPST,
|
||||
V.QTDDEVOLITEM,
|
||||
V.PISDEVOLITEM,
|
||||
V.COFINSDEVOLITEM,
|
||||
V.VLRDESPOPERACIONALITEMDEVOL,
|
||||
V.VLRTOTCOMISSAOITEMDEVOL,
|
||||
E.PERIRLUCRAT,
|
||||
E.PERCSLLLUCRAT,
|
||||
Y.CMDIACREDICMS,
|
||||
decode( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ 0 ,
|
||||
V.VLRFCPICMS,
|
||||
V.PERCPMF,
|
||||
V.PEROUTROIMPOSTO,
|
||||
decode( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
+ 0 ,
|
||||
V.DVLRFCPICMS,
|
||||
case when ( 'N' ) = 'N' then
|
||||
(nvl(y.cmdiavlrdescpistransf,0) + nvl(y.cmdiavlrdesccofinstransf,0) + nvl(y.cmdiavlrdescicmstransf,0) +
|
||||
nvl(y.cmdiavlrdescipitransf,0) + nvl(y.cmdiavlrdesclucrotransf,0) + nvl(y.cmdiavlrdescverbatransf,0) )
|
||||
else 0
|
||||
end,
|
||||
case when DV.UTILACRESCCUSTPRODRELAC = 'S' and nvl( A.SEQPRODUTOBASE, A.SEQPRODUTOBASEANTIGO ) is not null then
|
||||
coalesce( PR.PERCACRESCCUSTORELACVIG, nvl( consinco.F_RETACRESCCUSTORELACABC( V.SEQPRODUTO, V.DTAVDA ), 1 ) )
|
||||
else 1
|
||||
end,
|
||||
'N',
|
||||
0,
|
||||
0,
|
||||
'S',
|
||||
V.VLRDESCMEDALHA,
|
||||
'S',
|
||||
V.VLRDESCFORNEC,
|
||||
V.VLRDESCFORNECDEVOL,
|
||||
'N',
|
||||
V.VLRFRETEITEMRATEIO,
|
||||
V.VLRFRETEITEMRATEIODEV,
|
||||
'S',
|
||||
V.VLRICMSSTEMBUTPROD,
|
||||
V.VLRICMSSTEMBUTPRODDEV,
|
||||
V.VLREMBDESCRESSARCSTDEVOL,
|
||||
case when 'N' = 'S' then nvl( V.VLRDESCACORDOVERBAPDV, 0 ) else 0 end,
|
||||
nvl( Y.CMDIACREDIPI, 0 ),
|
||||
NVL(V.VLRITEMRATEIOCTE,0),
|
||||
'N',
|
||||
'C',
|
||||
V.VLRIPIPRECOVDA,
|
||||
V.VLRIPIPRECODEVOL,
|
||||
V.VLRDESCMEDALHADEVOL,
|
||||
'N'
|
||||
)) AS VLRCONTRIB
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_ANO_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_ANO_ANT
|
||||
, MAX(A.PROPQTDPRODUTOBASE) AS PROPQTDPRODUTOBASE
|
||||
FROM consinco.MRL_CUSTODIA Y
|
||||
JOIN consinco.MAXV_ABCDISTRIBBASE V ON Y.DTAENTRADASAIDA = V.DTAVDA
|
||||
JOIN consinco.MAP_PRODUTO A ON A.SEQPRODUTO = V.SEQPRODUTO
|
||||
JOIN consinco.MAP_PRODUTO PB ON PB.SEQPRODUTO = V.SEQPRODUTOCUSTO AND PB.SEQPRODUTO = Y.SEQPRODUTO
|
||||
JOIN consinco.MAP_FAMDIVISAO D ON D.SEQFAMILIA = A.SEQFAMILIA AND D.NRODIVISAO = V.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMEMBALAGEM K ON K.SEQFAMILIA = A.SEQFAMILIA AND K.QTDEMBALAGEM = 1
|
||||
JOIN consinco.MAX_EMPRESA E ON E.NROEMPRESA = V.NROEMPRESA AND Y.NROEMPRESA = NVL( E.NROEMPCUSTOABC, E.NROEMPRESA )
|
||||
JOIN consinco.MAX_DIVISAO DV ON E.NRODIVISAO = DV.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMDIVCATEG DC ON DC.NRODIVISAO = D.NRODIVISAO AND DC.STATUS = 'A' AND DC.SEQFAMILIA = D.SEQFAMILIA
|
||||
JOIN consinco.MAP_CATEGORIA CC1 ON CC1.SEQCATEGORIA = DC.SEQCATEGORIA AND CC1.STATUSCATEGOR in ('A', 'F') AND CC1.NIVELHIERARQUIA = 1 AND CC1.NRODIVISAO = DC.NRODIVISAO AND CC1.TIPCATEGORIA = 'M'
|
||||
LEFT JOIN consinco.MAP_PRODACRESCCUSTORELAC PR ON PR.SEQPRODUTO = V.SEQPRODUTO AND PR.DTAMOVIMENTACAO = V.DTAVDA
|
||||
WHERE V.NROEMPRESA IN ( SELECT E.EMPRESA_ID FROM EMPRESA_PARAMETROS E WHERE E.PARTICIPA_FLASH = 1 )
|
||||
AND V.NROEMPRESA = p_empresa
|
||||
AND V.NROSEGMENTO IN ( SELECT A.NROSEGMENTO FROM CONSINCO.MAD_SEGMENTO A WHERE A.STATUS = 'A' )
|
||||
AND DECODE(V.TIPTABELA, 'S', V.CGOACMCOMPRAVENDA, V.ACMCOMPRAVENDA) IN ( 'S','I' )
|
||||
AND V.DTAVDA BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' )
|
||||
, V.NROEMPRESA
|
||||
, E.NOMEREDUZIDO
|
||||
, V.NRODIVISAO
|
||||
, V.NROSEGMENTO
|
||||
, V.SEQPRODUTO
|
||||
, A.SEQPRODUTOBASE
|
||||
, A.SEQFAMILIA
|
||||
, A.DESCCOMPLETA
|
||||
, CC1.SEQCATEGORIA
|
||||
, CC1.CATEGORIA) Z
|
||||
) LOOP
|
||||
|
||||
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.NROEMPRESA), r.NOMEEMPRESA, 1, r.NROEMPRESA);
|
||||
|
||||
IF r.SEQCATEGORIAN1 IS NOT NULL THEN
|
||||
v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN1), r.CATEGORIAN1, 2, r.NROEMPRESA);
|
||||
ELSE v_id_cat1 := v_id_empresa; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN2 IS NOT NULL THEN
|
||||
v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN2), r.CATEGORIAN2, 3, r.NROEMPRESA);
|
||||
ELSE v_id_cat2 := v_id_cat1; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN3 IS NOT NULL THEN
|
||||
v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN3), r.CATEGORIAN3, 4, r.NROEMPRESA);
|
||||
ELSE v_id_cat3 := v_id_cat2; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN4 IS NOT NULL THEN
|
||||
v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN4), r.CATEGORIAN4, 5, r.NROEMPRESA);
|
||||
ELSE v_id_cat4 := v_id_cat3; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN5 IS NOT NULL THEN
|
||||
v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN5), r.CATEGORIAN5, 6, r.NROEMPRESA);
|
||||
ELSE v_id_cat5 := v_id_cat4; END IF;
|
||||
|
||||
v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.SEQPRODUTO), r.PRODUTO, 7, r.NROEMPRESA, r.SEQPRODUTO, r.SEQPRODUTOBASE);
|
||||
|
||||
INSERT INTO TB_FLASH_FATO_CONTRIBUICAO (
|
||||
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_contribuicao, qtde_contribuicao,
|
||||
vlr_contribuicao, vl_ticket_medio, propqtdprodutobase, data_cadastro
|
||||
) VALUES (
|
||||
SEQ_TB_FLASH_FATO_CONTRIBUICAO.NEXTVAL,
|
||||
r.DTA, EXTRACT(YEAR FROM r.DTA), EXTRACT(MONTH FROM r.DTA), EXTRACT(DAY FROM r.DTA),
|
||||
TO_NUMBER(TO_CHAR(r.DTA, 'D')),
|
||||
v_id_produto, v_id_empresa, r.NROEMPRESA, r.NOMEEMPRESA, r.SEQPRODUTO, r.PRODUTO,
|
||||
r.SEQPRODUTOBASE, r.NRODIVISAO, r.NROSEGMENTO, r.QTDE_VENDA, r.VLR_IMP_VENDA,
|
||||
r.QTDE_VENDA, r.VLRCONTRIB,
|
||||
CASE WHEN r.QTDE_VENDA > 0 THEN r.VLRVENDA / r.QTDE_VENDA ELSE NULL END,
|
||||
r.PROPQTDPRODUTOBASE, SYSDATE
|
||||
);
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_CONTRIBUICAO (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE,
|
||||
p_empresa IN NUMBER
|
||||
) AS
|
||||
v_id_empresa NUMBER;
|
||||
v_id_cat1 NUMBER;
|
||||
v_id_cat2 NUMBER;
|
||||
v_id_cat3 NUMBER;
|
||||
v_id_cat4 NUMBER;
|
||||
v_id_cat5 NUMBER;
|
||||
v_id_produto NUMBER;
|
||||
v_contador NUMBER := 0;
|
||||
|
||||
FUNCTION FN_GET_OR_CREATE_NODO (
|
||||
p_id_nodo_pai IN NUMBER,
|
||||
p_tipo_nodo IN VARCHAR2,
|
||||
p_codigo IN VARCHAR2,
|
||||
p_nome IN VARCHAR2,
|
||||
p_nivel IN NUMBER,
|
||||
p_cod_empresa IN NUMBER DEFAULT NULL,
|
||||
p_cod_produto IN NUMBER DEFAULT NULL,
|
||||
p_seqprodutobase IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER
|
||||
IS
|
||||
v_id_nodo NUMBER;
|
||||
BEGIN
|
||||
SELECT n.id_nodo
|
||||
INTO v_id_nodo
|
||||
FROM TB_FLASH_NODO n
|
||||
WHERE (
|
||||
n.id_nodo_pai = p_id_nodo_pai
|
||||
OR (n.id_nodo_pai IS NULL AND p_id_nodo_pai IS NULL)
|
||||
)
|
||||
AND n.tipo_nodo = p_tipo_nodo
|
||||
AND n.codigo = p_codigo
|
||||
AND (
|
||||
p_tipo_nodo <> 'PRODUTO'
|
||||
OR (
|
||||
n.cod_empresa = p_cod_empresa
|
||||
OR (n.cod_empresa IS NULL AND p_cod_empresa IS NULL)
|
||||
)
|
||||
);
|
||||
|
||||
UPDATE TB_FLASH_NODO n
|
||||
SET n.nome = p_nome,
|
||||
n.cod_empresa = p_cod_empresa,
|
||||
n.cod_produto = p_cod_produto,
|
||||
n.seqprodutobase = p_seqprodutobase,
|
||||
n.data_atualizacao = SYSDATE
|
||||
WHERE n.id_nodo = v_id_nodo
|
||||
AND (
|
||||
NVL(n.nome, '#') <> NVL(p_nome, '#')
|
||||
OR NVL(n.cod_empresa, -1) <> NVL(p_cod_empresa, -1)
|
||||
OR NVL(n.cod_produto, -1) <> NVL(p_cod_produto, -1)
|
||||
OR NVL(n.seqprodutobase, -1) <> NVL(p_seqprodutobase, -1)
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
v_id_nodo := SEQ_TB_FLASH_NODO.NEXTVAL;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO (
|
||||
id_nodo, id_nodo_pai, tipo_nodo, codigo, nome, nivel,
|
||||
ordem_exibicao, ativo, cod_empresa, cod_produto, seqprodutobase,
|
||||
data_cadastro, data_atualizacao
|
||||
) VALUES (
|
||||
v_id_nodo, p_id_nodo_pai, p_tipo_nodo, p_codigo, p_nome, p_nivel,
|
||||
NULL, 'S', p_cod_empresa, p_cod_produto, p_seqprodutobase,
|
||||
SYSDATE, NULL
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_FATO_CONTRIBUICAO
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
FOR r IN (
|
||||
SELECT Z.DTA,
|
||||
Z.NROEMPRESA,
|
||||
Z.NOMEEMPRESA,
|
||||
Z.NROSEGMENTO,
|
||||
Z.NRODIVISAO,
|
||||
Z.SEQPRODUTO,
|
||||
Z.SEQPRODUTOBASE,
|
||||
Z.PRODUTO,
|
||||
Z.SEQCATEGORIAN1,
|
||||
Z.CATEGORIAN1,
|
||||
Z.SEQCATEGORIAN2,
|
||||
Z.CATEGORIAN2,
|
||||
Z.SEQCATEGORIAN3,
|
||||
Z.CATEGORIAN3,
|
||||
Z.SEQCATEGORIAN4,
|
||||
Z.CATEGORIAN4,
|
||||
Z.SEQCATEGORIAN5,
|
||||
Z.CATEGORIAN5,
|
||||
Z.VLRVENDA,
|
||||
(CASE WHEN (Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) < TO_DATE('01/09/2022','DD/MM/YYYY'))
|
||||
OR ( Z.SEQCATEGORIAN2 = 15458 AND z.seqcategorian3 NOT IN (SELECT seqcategoria FROM TB_EXCECAO_CONTRIB_HORTI) AND TRUNC(SYSDATE) > TO_DATE('01/01/2024','DD/MM/YYYY')) THEN
|
||||
Z.VLRVENDA - (Z.QTDE_VENDA * (SELECT nvl(ROUND((CD.CMDIAVLRNF + CD.CMDIAIPI + CD.CMDIAICMSST + CD.CMDIADESPNF + CD.CMDIADESPFORANF -
|
||||
CD.CMDIACREDICMS - CD.CMDIACREDICMSPRESUM - CD.CMDIACREDICMSANTECIP - CD.CMDIACREDPIS - CD.CMDIACREDCOFINS- CD.CMDIADCTOFORANF),4),0)
|
||||
FROM MRL_CUSTODIA CD
|
||||
WHERE CD.SEQPRODUTO = (CASE WHEN Z.SEQPRODUTOBASE IS NULL THEN Z.SEQPRODUTO ELSE Z.SEQPRODUTOBASE END)
|
||||
AND CD.NROEMPRESA = 301
|
||||
AND CD.DTAENTRADASAIDA = (
|
||||
SELECT MAX(CD1.DTAENTRADASAIDA)
|
||||
FROM MRL_CUSTODIA CD1
|
||||
WHERE CD1.SEQPRODUTO = CD.SEQPRODUTO
|
||||
AND CD1.NROEMPRESA = 301
|
||||
AND CD1.DTAENTRADASAIDA <= Z.DTA
|
||||
)
|
||||
)) - Z.VLR_IMP_VENDA
|
||||
ELSE
|
||||
Z.VLRCONTRIB
|
||||
END) AS VLRCONTRIB,
|
||||
Z.VLRVENDA_MES_ANT,
|
||||
Z.VLRCONTRIB_MES_ANT,
|
||||
Z.VLRVENDA_ANO_ANT,
|
||||
Z.VLRCONTRIB_ANO_ANT,
|
||||
Z.QTDE_VENDA,
|
||||
Z.VLR_IMP_VENDA,
|
||||
Z.PROPQTDPRODUTOBASE
|
||||
FROM (SELECT /*+OPTIMIZER_FEATURES_ENABLE('10.2.0.4')*/
|
||||
TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' ) DTA,
|
||||
V.NROEMPRESA,
|
||||
E.FANTASIA AS NOMEEMPRESA,
|
||||
V.NROSEGMENTO,
|
||||
V.NRODIVISAO,
|
||||
V.SEQPRODUTO,
|
||||
A.SEQPRODUTOBASE,
|
||||
A.DESCCOMPLETA PRODUTO,
|
||||
CC1.SEQCATEGORIA AS SEQCATEGORIAN1,
|
||||
CC1.CATEGORIA AS CATEGORIAN1,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS SEQCATEGORIAN2,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR in ('A', 'F')
|
||||
AND CC2.NIVELHIERARQUIA = 2
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS in ('A', 'F')
|
||||
) AS CATEGORIAN2,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN3,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 3
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN3,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN4,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 4
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN4,
|
||||
( SELECT CC2.SEQCATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS SEQCATEGORIAN5,
|
||||
( SELECT CC2.CATEGORIA
|
||||
FROM consinco.MAP_FAMDIVCATEG DC2
|
||||
JOIN consinco.MAP_CATEGORIA CC2
|
||||
ON CC2.SEQCATEGORIA = DC2.SEQCATEGORIA
|
||||
AND CC2.STATUSCATEGOR = 'A'
|
||||
AND CC2.NIVELHIERARQUIA = 5
|
||||
AND CC2.NRODIVISAO = DC2.NRODIVISAO
|
||||
AND CC2.TIPCATEGORIA = 'M'
|
||||
WHERE DC2.SEQFAMILIA = A.SEQFAMILIA
|
||||
AND DC2.NRODIVISAO = V.NRODIVISAO
|
||||
AND DC2.STATUS = 'A'
|
||||
) AS CATEGORIAN5,
|
||||
SUM( ( V.QTDITEM - NVL( V.QTDDEVOLITEM, 0 ) ) ) AS QTDE_VENDA,
|
||||
SUM( ( ROUND( V.VLRITEM, 2 ) ) - ( ROUND( V.VLRDEVOLITEM, 2 ) - ( 0 ) ) ) AS VLRVENDA,
|
||||
SUM( DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDITEM, 0, 0, ( Y.VLRIMPOSTOVDA - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDITEM )
|
||||
)
|
||||
- DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', ( V.VLRDEVOLITEM * ( V.PERCPMF + V.PEROUTROIMPOSTO ) / 100 ),
|
||||
DECODE( Y.QTDVDA * V.QTDDEVOLITEM, 0, 0, ( Y.VLRIMPOSTODEVOL - NVL( Y.VLRIPIVDA, 0 ) ) * DECODE('S','N',1, NVL( A.PROPQTDPRODUTOBASE, 1) ) / Y.QTDVDA * V.QTDDEVOLITEM )
|
||||
)
|
||||
+ DECODE(
|
||||
V.ACMCOMPRAVENDA, 'I', 0,
|
||||
DECODE( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ V.VLRFCPICMS + V.PISITEM + V.COFINSITEM -
|
||||
DECODE( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
- V.DVLRFCPICMS - V.PISDEVOLITEM - V.COFINSDEVOLITEM
|
||||
)
|
||||
) AS VLR_IMP_VENDA
|
||||
, sum(
|
||||
consinco.fC5_AbcDistribLucratividade(
|
||||
'L',
|
||||
'L',
|
||||
'N',
|
||||
V.VLRITEM ,
|
||||
'N',
|
||||
V.VLRICMSST,
|
||||
V.VLRFCPST,
|
||||
V.VLRICMSSTEMPORIG,
|
||||
E.UF,
|
||||
V.UFPESSOA,
|
||||
'S',
|
||||
null,
|
||||
'N',
|
||||
V.VLRIPIITEM,
|
||||
V.VLRIPIDEVOLITEM,
|
||||
'N',
|
||||
V.VLRDESCFORANF,
|
||||
Y.CMDIAVLRNF - 0 ,
|
||||
Y.CMDIAIPI,
|
||||
nvl( Y.CMDIACREDPIS, 0 ),
|
||||
nvl( Y.CMDIACREDCOFINS, 0 ),
|
||||
Y.CMDIAICMSST,
|
||||
Y.CMDIADESPNF,
|
||||
Y.CMDIADESPFORANF,
|
||||
Y.CMDIADCTOFORANF,
|
||||
'S',
|
||||
a.propqtdprodutobase,
|
||||
V.QTDITEM,
|
||||
V.VLREMBDESCRESSARCST,
|
||||
V.ACMCOMPRAVENDA,
|
||||
V.PISITEM,
|
||||
V.COFINSITEM,
|
||||
decode( V.TIPCGO, 'S', Y.QTDVDA, nvl( Y.QTDDEVOL, Y.QTDVDA ) ),
|
||||
( decode( V.TIPCGO, 'S', Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ),
|
||||
nvl( Y.VLRIMPOSTODEVOL - nvl( V.VLRIPIDEVOLITEM, 0 ),
|
||||
Y.VLRIMPOSTOVDA - nvl( Y.VLRIPIVDA, 0 ) ) ) ) ,
|
||||
'N',
|
||||
V.VLRDESPOPERACIONALITEM,
|
||||
Y.VLRDESPESAVDA,
|
||||
'N',
|
||||
nvl( Y.VLRVERBAVDAACR, 0 ),
|
||||
DECODE( V.TIPDOCFISCALCGO, 'T', 0, Y.QTDVERBAVDA ),
|
||||
Y.VLRVERBAVDA - nvl( Y.VLRVERBAVDAINDEVIDA, 0 ),
|
||||
'N',
|
||||
NVL(V.VLRTOTCOMISSAOITEM, 0),
|
||||
V.VLRDEVOLITEM,
|
||||
VLRDEVOLICMSST,
|
||||
V.DVLRFCPST,
|
||||
V.QTDDEVOLITEM,
|
||||
V.PISDEVOLITEM,
|
||||
V.COFINSDEVOLITEM,
|
||||
V.VLRDESPOPERACIONALITEMDEVOL,
|
||||
V.VLRTOTCOMISSAOITEMDEVOL,
|
||||
E.PERIRLUCRAT,
|
||||
E.PERCSLLLUCRAT,
|
||||
Y.CMDIACREDICMS,
|
||||
decode( V.ICMSEFETIVOITEM, 0, V.ICMSITEM, V.ICMSEFETIVOITEM )
|
||||
+ 0 ,
|
||||
V.VLRFCPICMS,
|
||||
V.PERCPMF,
|
||||
V.PEROUTROIMPOSTO,
|
||||
decode( V.ICMSEFETIVODEVOLITEM, 0, V.ICMSDEVOLITEM, V.ICMSEFETIVODEVOLITEM )
|
||||
+ 0 ,
|
||||
V.DVLRFCPICMS,
|
||||
case when ( 'N' ) = 'N' then
|
||||
(nvl(y.cmdiavlrdescpistransf,0) + nvl(y.cmdiavlrdesccofinstransf,0) + nvl(y.cmdiavlrdescicmstransf,0) +
|
||||
nvl(y.cmdiavlrdescipitransf,0) + nvl(y.cmdiavlrdesclucrotransf,0) + nvl(y.cmdiavlrdescverbatransf,0) )
|
||||
else 0
|
||||
end,
|
||||
case when DV.UTILACRESCCUSTPRODRELAC = 'S' and nvl( A.SEQPRODUTOBASE, A.SEQPRODUTOBASEANTIGO ) is not null then
|
||||
coalesce( PR.PERCACRESCCUSTORELACVIG, nvl( consinco.F_RETACRESCCUSTORELACABC( V.SEQPRODUTO, V.DTAVDA ), 1 ) )
|
||||
else 1
|
||||
end,
|
||||
'N',
|
||||
0,
|
||||
0,
|
||||
'S',
|
||||
V.VLRDESCMEDALHA,
|
||||
'S',
|
||||
V.VLRDESCFORNEC,
|
||||
V.VLRDESCFORNECDEVOL,
|
||||
'N',
|
||||
V.VLRFRETEITEMRATEIO,
|
||||
V.VLRFRETEITEMRATEIODEV,
|
||||
'S',
|
||||
V.VLRICMSSTEMBUTPROD,
|
||||
V.VLRICMSSTEMBUTPRODDEV,
|
||||
V.VLREMBDESCRESSARCSTDEVOL,
|
||||
case when 'N' = 'S' then nvl( V.VLRDESCACORDOVERBAPDV, 0 ) else 0 end,
|
||||
nvl( Y.CMDIACREDIPI, 0 ),
|
||||
NVL(V.VLRITEMRATEIOCTE,0),
|
||||
'N',
|
||||
'C',
|
||||
V.VLRIPIPRECOVDA,
|
||||
V.VLRIPIPRECODEVOL,
|
||||
V.VLRDESCMEDALHADEVOL,
|
||||
'N'
|
||||
)) AS VLRCONTRIB
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_MES_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_ANO_ANT
|
||||
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_ANO_ANT
|
||||
, MAX(A.PROPQTDPRODUTOBASE) AS PROPQTDPRODUTOBASE
|
||||
FROM consinco.MRL_CUSTODIA Y
|
||||
JOIN consinco.MAXV_ABCDISTRIBBASE V ON Y.DTAENTRADASAIDA = V.DTAVDA
|
||||
JOIN consinco.MAP_PRODUTO A ON A.SEQPRODUTO = V.SEQPRODUTO
|
||||
JOIN consinco.MAP_PRODUTO PB ON PB.SEQPRODUTO = V.SEQPRODUTOCUSTO AND PB.SEQPRODUTO = Y.SEQPRODUTO
|
||||
JOIN consinco.MAP_FAMDIVISAO D ON D.SEQFAMILIA = A.SEQFAMILIA AND D.NRODIVISAO = V.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMEMBALAGEM K ON K.SEQFAMILIA = A.SEQFAMILIA AND K.QTDEMBALAGEM = 1
|
||||
JOIN consinco.MAX_EMPRESA E ON E.NROEMPRESA = V.NROEMPRESA AND Y.NROEMPRESA = NVL( E.NROEMPCUSTOABC, E.NROEMPRESA )
|
||||
JOIN consinco.MAX_DIVISAO DV ON E.NRODIVISAO = DV.NRODIVISAO
|
||||
JOIN consinco.MAP_FAMDIVCATEG DC ON DC.NRODIVISAO = D.NRODIVISAO AND DC.STATUS = 'A' AND DC.SEQFAMILIA = D.SEQFAMILIA
|
||||
JOIN consinco.MAP_CATEGORIA CC1 ON CC1.SEQCATEGORIA = DC.SEQCATEGORIA AND CC1.STATUSCATEGOR in ('A', 'F') AND CC1.NIVELHIERARQUIA = 1 AND CC1.NRODIVISAO = DC.NRODIVISAO AND CC1.TIPCATEGORIA = 'M'
|
||||
LEFT JOIN consinco.MAP_PRODACRESCCUSTORELAC PR ON PR.SEQPRODUTO = V.SEQPRODUTO AND PR.DTAMOVIMENTACAO = V.DTAVDA
|
||||
WHERE V.NROEMPRESA IN ( SELECT E.EMPRESA_ID FROM EMPRESA_PARAMETROS E WHERE E.PARTICIPA_FLASH = 1 )
|
||||
AND V.NROEMPRESA = p_empresa
|
||||
AND V.NROSEGMENTO IN ( SELECT A.NROSEGMENTO FROM CONSINCO.MAD_SEGMENTO A WHERE A.STATUS = 'A' )
|
||||
AND DECODE(V.TIPTABELA, 'S', V.CGOACMCOMPRAVENDA, V.ACMCOMPRAVENDA) IN ( 'S','I' )
|
||||
AND V.DTAVDA BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' )
|
||||
, V.NROEMPRESA
|
||||
, E.FANTASIA
|
||||
, V.NRODIVISAO
|
||||
, V.NROSEGMENTO
|
||||
, V.SEQPRODUTO
|
||||
, A.SEQPRODUTOBASE
|
||||
, A.SEQFAMILIA
|
||||
, A.DESCCOMPLETA
|
||||
, CC1.SEQCATEGORIA
|
||||
, CC1.CATEGORIA) Z
|
||||
) LOOP
|
||||
|
||||
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.NROEMPRESA), r.NOMEEMPRESA, 1, r.NROEMPRESA);
|
||||
|
||||
IF r.SEQCATEGORIAN1 IS NOT NULL THEN
|
||||
v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN1), r.CATEGORIAN1, 2, r.NROEMPRESA);
|
||||
ELSE v_id_cat1 := v_id_empresa; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN2 IS NOT NULL THEN
|
||||
v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN2), r.CATEGORIAN2, 3, r.NROEMPRESA);
|
||||
ELSE v_id_cat2 := v_id_cat1; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN3 IS NOT NULL THEN
|
||||
v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN3), r.CATEGORIAN3, 4, r.NROEMPRESA);
|
||||
ELSE v_id_cat3 := v_id_cat2; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN4 IS NOT NULL THEN
|
||||
v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN4), r.CATEGORIAN4, 5, r.NROEMPRESA);
|
||||
ELSE v_id_cat4 := v_id_cat3; END IF;
|
||||
|
||||
IF r.SEQCATEGORIAN5 IS NOT NULL THEN
|
||||
v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN5), r.CATEGORIAN5, 6, r.NROEMPRESA);
|
||||
ELSE v_id_cat5 := v_id_cat4; END IF;
|
||||
|
||||
v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.SEQPRODUTO), r.PRODUTO, 7, r.NROEMPRESA, r.SEQPRODUTO, r.SEQPRODUTOBASE);
|
||||
|
||||
INSERT INTO TB_FLASH_FATO_CONTRIBUICAO (
|
||||
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_contribuicao, qtde_contribuicao,
|
||||
vlr_contribuicao, vl_ticket_medio, propqtdprodutobase, data_cadastro
|
||||
) VALUES (
|
||||
SEQ_TB_FLASH_FATO_CONTRIBUICAO.NEXTVAL,
|
||||
r.DTA, EXTRACT(YEAR FROM r.DTA), EXTRACT(MONTH FROM r.DTA), EXTRACT(DAY FROM r.DTA),
|
||||
TO_NUMBER(TO_CHAR(r.DTA, 'D')),
|
||||
v_id_produto, v_id_empresa, r.NROEMPRESA, r.NOMEEMPRESA, r.SEQPRODUTO, r.PRODUTO,
|
||||
r.SEQPRODUTOBASE, r.NRODIVISAO, r.NROSEGMENTO, r.QTDE_VENDA, r.VLR_IMP_VENDA,
|
||||
r.QTDE_VENDA, r.VLRCONTRIB,
|
||||
CASE WHEN r.QTDE_VENDA > 0 THEN r.VLRVENDA / r.QTDE_VENDA ELSE NULL END,
|
||||
r.PROPQTDPRODUTOBASE, SYSDATE
|
||||
);
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,23 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_FATO_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_FATO_PERDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_FATO_PERDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_FATO_PERDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,109 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_FATO_PERDA (
|
||||
ID_FATO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2),
|
||||
DIA_SEMANA NUMBER(2),
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
ID_NODO_EMPRESA NUMBER NOT NULL,
|
||||
COD_EMPRESA NUMBER NOT NULL,
|
||||
NOME_EMPRESA VARCHAR2(200),
|
||||
COD_PRODUTO NUMBER NOT NULL,
|
||||
DESCRICAO_PRODUTO VARCHAR2(300),
|
||||
SEQPRODUTOBASE NUMBER,
|
||||
NRODIVISAO NUMBER,
|
||||
NROSEGMENTO NUMBER,
|
||||
VLR_CUSTO_PERDA NUMBER(18,6),
|
||||
QTDE_PERDA NUMBER(18,6),
|
||||
VLR_PERDA NUMBER(18,6),
|
||||
PROPQTDPRODUTOBASE NUMBER(18,6),
|
||||
DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL,
|
||||
CONSTRAINT PK_TB_FLASH_FATO_PERDA PRIMARY KEY (ID_FATO),
|
||||
CONSTRAINT FK_TB_FLASH_FATO_PERDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT FK_TB_FLASH_FATO_PERDA_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_FATO_PERDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_DATA ON TB_FLASH_FATO_PERDA (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_ANOMES';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_ANOMES ON TB_FLASH_FATO_PERDA (ANO_REFERENCIA, MES_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_NODO ON TB_FLASH_FATO_PERDA (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_EMP';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_EMP ON TB_FLASH_FATO_PERDA (COD_EMPRESA, ANO_REFERENCIA, MES_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_PROD';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_PROD ON TB_FLASH_FATO_PERDA (COD_PRODUTO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_FATO_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_PERDA ADD CONSTRAINT UK_TB_FLASH_FATO_PERDA UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_PERDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_FATO_PERDA CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,23 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_META_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_META_PERDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_META_PERDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_META_PERDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,80 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_META_PERDA (
|
||||
ID_META NUMBER NOT NULL,
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
PERCENTUAL_META NUMBER(10,4),
|
||||
VALOR_META NUMBER(18,6),
|
||||
OBSERVACAO VARCHAR2(500),
|
||||
DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL,
|
||||
DATA_ATUALIZACAO DATE,
|
||||
CONSTRAINT PK_TB_FLASH_META_PERDA PRIMARY KEY (ID_META),
|
||||
CONSTRAINT FK_TB_FLASH_META_PERDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_META_PERDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_META_PERDA_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_META_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_META_PERDA ADD CONSTRAINT UK_TB_FLASH_META_PERDA UNIQUE (ID_NODO, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_PERDA_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_PERDA_NODO ON TB_FLASH_META_PERDA (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_PERDA_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_PERDA_DATA ON TB_FLASH_META_PERDA (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_PERDA_AMSD';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_PERDA_AMSD ON TB_FLASH_META_PERDA (ANO_REFERENCIA, MES_REFERENCIA, DIA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_PERDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_META_PERDA CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,73 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_PERDA_STG';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_META_PERDA_STG (
|
||||
COD_EMPRESA NUMBER NOT NULL,
|
||||
TIPO_NODO VARCHAR2(30) NOT NULL,
|
||||
CODIGO_NODO VARCHAR2(60) NOT NULL,
|
||||
CODIGO_NODO_PAI VARCHAR2(60),
|
||||
TIPO_NODO_PAI VARCHAR2(30),
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
PERCENTUAL_META NUMBER(10,4),
|
||||
VALOR_META NUMBER(18,6),
|
||||
OBSERVACAO VARCHAR2(500),
|
||||
ORIGEM_META VARCHAR2(100),
|
||||
DATA_CARGA DATE DEFAULT SYSDATE,
|
||||
CONSTRAINT CK_TB_FLASH_META_PRD_STG_TIPO CHECK (TIPO_NODO IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'')),
|
||||
CONSTRAINT CK_TB_FLASH_META_PRD_STG_TPAI CHECK (TIPO_NODO_PAI IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'') OR TIPO_NODO_PAI IS NULL),
|
||||
CONSTRAINT CK_TB_FLASH_META_PRD_STG_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_META_PRD_STG_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_PRD_STG_01';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_PRD_STG_01 ON TB_FLASH_META_PERDA_STG (COD_EMPRESA, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_PRD_STG_02';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_PRD_STG_02 ON TB_FLASH_META_PERDA_STG (TIPO_NODO, CODIGO_NODO, CODIGO_NODO_PAI)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_PRD_STG_03';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_PRD_STG_03 ON TB_FLASH_META_PERDA_STG (ORIGEM_META)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_PERDA_STG';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_META_PERDA_STG CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,32 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE VIEW VW_FLASH_META_PERDA_STG AS
|
||||
SELECT
|
||||
CAST(NULL AS NUMBER) AS cod_empresa,
|
||||
CAST(NULL AS VARCHAR2(30)) AS tipo_nodo,
|
||||
CAST(NULL AS VARCHAR2(60)) AS codigo_nodo,
|
||||
CAST(NULL AS VARCHAR2(60)) AS codigo_nodo_pai,
|
||||
CAST(NULL AS VARCHAR2(30)) AS tipo_nodo_pai,
|
||||
CAST(NULL AS DATE) AS data_referencia,
|
||||
CAST(NULL AS NUMBER(4)) AS ano_referencia,
|
||||
CAST(NULL AS NUMBER(2)) AS mes_referencia,
|
||||
CAST(NULL AS NUMBER(2)) AS dia_referencia,
|
||||
CAST(NULL AS NUMBER(10,4)) AS percentual_meta,
|
||||
CAST(NULL AS NUMBER(18,6)) AS valor_meta,
|
||||
CAST(NULL AS VARCHAR2(500)) AS observacao,
|
||||
CAST(NULL AS VARCHAR2(100)) AS origem_meta
|
||||
FROM dual
|
||||
WHERE 1 = 0
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'VW_FLASH_META_PERDA_STG' AND object_type = 'VIEW';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP VIEW VW_FLASH_META_PERDA_STG';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,23 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO_RESUMO_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_NODO_RESUMO_PERDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO_RESUMO_PERDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_NODO_RESUMO_PERDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,85 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO_RESUMO_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE '
|
||||
CREATE TABLE TB_FLASH_NODO_RESUMO_PERDA (
|
||||
ID_RESUMO NUMBER NOT NULL,
|
||||
ID_NODO NUMBER NOT NULL,
|
||||
DATA_REFERENCIA DATE NOT NULL,
|
||||
ANO_REFERENCIA NUMBER(4) NOT NULL,
|
||||
MES_REFERENCIA NUMBER(2) NOT NULL,
|
||||
DIA_REFERENCIA NUMBER(2) NOT NULL,
|
||||
VALOR_VENDA NUMBER(18,6),
|
||||
VALOR_META_PROPRIA NUMBER(18,6),
|
||||
VALOR_META_FILHOS NUMBER(18,6),
|
||||
VALOR_META_EFETIVA NUMBER(18,6),
|
||||
PERCENTUAL_META_PROPRIA NUMBER(10,4),
|
||||
PERCENTUAL_META_FILHOS NUMBER(10,4),
|
||||
PERCENTUAL_META_EFETIVA NUMBER(10,4),
|
||||
DESVIO NUMBER(18,6),
|
||||
PERCENTUAL_ATINGIMENTO NUMBER(18,6),
|
||||
DATA_APURACAO DATE DEFAULT SYSDATE NOT NULL,
|
||||
CONSTRAINT PK_TB_FLASH_NODO_RES_PERDA PRIMARY KEY (ID_RESUMO),
|
||||
CONSTRAINT FK_TB_FLASH_NODO_RES_PERDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_RES_PERDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
||||
CONSTRAINT CK_TB_FLASH_NODO_RES_PERDA_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31)
|
||||
)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_NODO_RES_PERDA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_PERDA ADD CONSTRAINT UK_TB_FLASH_NODO_RES_PERDA UNIQUE (ID_NODO, DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_PERDA_NODO';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_PERDA_NODO ON TB_FLASH_NODO_RESUMO_PERDA (ID_NODO)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_PERDA_DATA';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_PERDA_DATA ON TB_FLASH_NODO_RESUMO_PERDA (DATA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_PERDA_AMSD';
|
||||
IF v_count = 0 THEN
|
||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_PERDA_AMSD ON TB_FLASH_NODO_RESUMO_PERDA (ANO_REFERENCIA, MES_REFERENCIA, DIA_REFERENCIA)';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DECLARE
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO_RESUMO_PERDA';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_NODO_RESUMO_PERDA CASCADE CONSTRAINTS PURGE';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,36 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_META_PERDA_STG (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE
|
||||
) AS
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_META_PERDA_STG
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||
|
||||
INSERT INTO TB_FLASH_META_PERDA_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_PERDA_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_PERDA_STG' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_META_PERDA_STG';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,109 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_META_PERDA (
|
||||
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_PERDA
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||
|
||||
FOR r IN (
|
||||
SELECT *
|
||||
FROM TB_FLASH_META_PERDA_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_PERDA 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_PERDA.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_PERDA' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_META_PERDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,107 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_RESUMO_PERDA (
|
||||
p_data_inicial IN DATE,
|
||||
p_data_final IN DATE
|
||||
) AS
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_NODO_RESUMO_PERDA
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO_RESUMO_PERDA (
|
||||
id_resumo, id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia,
|
||||
valor_venda, valor_meta_propria, valor_meta_filhos, valor_meta_efetiva,
|
||||
percentual_meta_propria, percentual_meta_filhos, percentual_meta_efetiva,
|
||||
desvio, percentual_atingimento, data_apuracao
|
||||
)
|
||||
WITH datas AS (
|
||||
SELECT TRUNC(p_data_inicial) + LEVEL - 1 AS data_referencia
|
||||
FROM dual
|
||||
CONNECT BY TRUNC(p_data_inicial) + LEVEL - 1 <= TRUNC(p_data_final)
|
||||
),
|
||||
perda_direta AS (
|
||||
SELECT f.id_nodo, TRUNC(f.data_referencia) AS data_referencia,
|
||||
f.ano_referencia, f.mes_referencia, f.dia_referencia,
|
||||
SUM(f.vlr_perda) AS valor_perda
|
||||
FROM TB_FLASH_FATO_PERDA f
|
||||
WHERE f.data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY f.id_nodo, TRUNC(f.data_referencia), f.ano_referencia, f.mes_referencia, f.dia_referencia
|
||||
),
|
||||
perda_hierarquia AS (
|
||||
SELECT a.id_nodo_ancestral AS id_nodo,
|
||||
d.data_referencia,
|
||||
EXTRACT(YEAR FROM d.data_referencia) AS ano_referencia,
|
||||
EXTRACT(MONTH FROM d.data_referencia) AS mes_referencia,
|
||||
EXTRACT(DAY FROM d.data_referencia) AS dia_referencia,
|
||||
SUM(NVL(pd.valor_perda, 0)) AS valor_perda
|
||||
FROM (
|
||||
SELECT CONNECT_BY_ROOT n.id_nodo AS id_nodo_ancestral,
|
||||
n.id_nodo AS id_nodo_descendente
|
||||
FROM TB_FLASH_NODO n
|
||||
CONNECT BY PRIOR n.id_nodo = n.id_nodo_pai
|
||||
) a
|
||||
CROSS JOIN datas d
|
||||
LEFT JOIN perda_direta pd
|
||||
ON pd.id_nodo = a.id_nodo_descendente
|
||||
AND pd.data_referencia = d.data_referencia
|
||||
GROUP BY a.id_nodo_ancestral, d.data_referencia
|
||||
),
|
||||
meta_propria_diaria AS (
|
||||
SELECT m.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia,
|
||||
MAX(m.percentual_meta) AS percentual_meta_propria,
|
||||
SUM(m.valor_meta) AS valor_meta_propria
|
||||
FROM TB_FLASH_META_PERDA m
|
||||
WHERE m.data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
GROUP BY m.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia
|
||||
),
|
||||
meta_filhos_diaria AS (
|
||||
SELECT pai.id_nodo, mpd.data_referencia, mpd.ano_referencia, mpd.mes_referencia, mpd.dia_referencia,
|
||||
SUM(mpd.valor_meta_propria) AS valor_meta_filhos
|
||||
FROM TB_FLASH_NODO pai
|
||||
JOIN TB_FLASH_NODO filho ON filho.id_nodo_pai = pai.id_nodo
|
||||
JOIN meta_propria_diaria mpd ON mpd.id_nodo = filho.id_nodo
|
||||
GROUP BY pai.id_nodo, mpd.data_referencia, mpd.ano_referencia, mpd.mes_referencia, mpd.dia_referencia
|
||||
),
|
||||
base AS (
|
||||
SELECT n.id_nodo, d.data_referencia,
|
||||
EXTRACT(YEAR FROM d.data_referencia) AS ano_referencia,
|
||||
EXTRACT(MONTH FROM d.data_referencia) AS mes_referencia,
|
||||
EXTRACT(DAY FROM d.data_referencia) AS dia_referencia
|
||||
FROM TB_FLASH_NODO n
|
||||
CROSS JOIN datas d
|
||||
)
|
||||
SELECT SEQ_TB_FLASH_NODO_RESUMO_PERDA.NEXTVAL,
|
||||
b.id_nodo, b.data_referencia, b.ano_referencia, b.mes_referencia, b.dia_referencia,
|
||||
ph.valor_perda,
|
||||
mpd.valor_meta_propria,
|
||||
mfd.valor_meta_filhos,
|
||||
CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END,
|
||||
mpd.percentual_meta_propria,
|
||||
CAST(NULL AS NUMBER(10,4)),
|
||||
CASE WHEN mpd.percentual_meta_propria IS NOT NULL THEN mpd.percentual_meta_propria ELSE NULL END,
|
||||
NVL(ph.valor_perda, 0) - NVL(CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, 0),
|
||||
CASE
|
||||
WHEN NVL(CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, 0) = 0 THEN NULL
|
||||
ELSE (NVL(ph.valor_perda, 0) / CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END) * 100
|
||||
END,
|
||||
SYSDATE
|
||||
FROM base b
|
||||
LEFT JOIN perda_hierarquia ph ON ph.id_nodo = b.id_nodo AND ph.data_referencia = b.data_referencia
|
||||
LEFT JOIN meta_propria_diaria mpd ON mpd.id_nodo = b.id_nodo AND mpd.data_referencia = b.data_referencia
|
||||
LEFT JOIN meta_filhos_diaria mfd ON mfd.id_nodo = b.id_nodo AND mfd.data_referencia = b.data_referencia;
|
||||
|
||||
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_RESUMO_PERDA' AND object_type = 'PROCEDURE';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_RESUMO_PERDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,81 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_PERDA_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_PERDA_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 perda da empresa: ' || r.codigo);
|
||||
|
||||
PRC_FLASH_CARGA_DADOS_PERDA(
|
||||
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 perda...');
|
||||
|
||||
PRC_FLASH_CARGA_META_PERDA_STG(
|
||||
p_data_inicial => p_data_inicial,
|
||||
p_data_final => p_data_final
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Carregando metas finais de perda...');
|
||||
|
||||
PRC_FLASH_CARGA_META_PERDA(
|
||||
p_data_inicial => p_data_inicial,
|
||||
p_data_final => p_data_final
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('Atualizando resumo de perda...');
|
||||
|
||||
PRC_FLASH_CARGA_RESUMO_PERDA(
|
||||
p_data_inicial => p_data_inicial,
|
||||
p_data_final => p_data_final
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE('PRC_FLASH_ATUALIZA_PERDA_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_PERDA_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_PERDA_DONO' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_PERDA_DONO';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
@@ -0,0 +1,186 @@
|
||||
-- +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
|
||||
) AS
|
||||
v_id_empresa NUMBER;
|
||||
v_id_cat1 NUMBER;
|
||||
v_id_cat2 NUMBER;
|
||||
v_id_cat3 NUMBER;
|
||||
v_id_cat4 NUMBER;
|
||||
v_id_cat5 NUMBER;
|
||||
v_id_produto NUMBER;
|
||||
|
||||
FUNCTION FN_GET_OR_CREATE_NODO (
|
||||
p_id_nodo_pai IN NUMBER,
|
||||
p_tipo_nodo IN VARCHAR2,
|
||||
p_codigo IN VARCHAR2,
|
||||
p_nome IN VARCHAR2,
|
||||
p_nivel IN NUMBER,
|
||||
p_cod_empresa IN NUMBER DEFAULT NULL,
|
||||
p_cod_produto IN NUMBER DEFAULT NULL,
|
||||
p_seqprodutobase IN NUMBER DEFAULT NULL
|
||||
) RETURN NUMBER
|
||||
IS
|
||||
v_id_nodo NUMBER;
|
||||
BEGIN
|
||||
SELECT n.id_nodo
|
||||
INTO v_id_nodo
|
||||
FROM TB_FLASH_NODO n
|
||||
WHERE (
|
||||
n.id_nodo_pai = p_id_nodo_pai
|
||||
OR (n.id_nodo_pai IS NULL AND p_id_nodo_pai IS NULL)
|
||||
)
|
||||
AND n.tipo_nodo = p_tipo_nodo
|
||||
AND n.codigo = p_codigo
|
||||
AND (
|
||||
p_tipo_nodo <> 'PRODUTO'
|
||||
OR (
|
||||
n.cod_empresa = p_cod_empresa
|
||||
OR (n.cod_empresa IS NULL AND p_cod_empresa IS NULL)
|
||||
)
|
||||
);
|
||||
|
||||
UPDATE TB_FLASH_NODO n
|
||||
SET n.nome = p_nome,
|
||||
n.cod_empresa = p_cod_empresa,
|
||||
n.cod_produto = p_cod_produto,
|
||||
n.seqprodutobase = p_seqprodutobase,
|
||||
n.data_atualizacao = SYSDATE
|
||||
WHERE n.id_nodo = v_id_nodo
|
||||
AND (
|
||||
NVL(n.nome, '#') <> NVL(p_nome, '#')
|
||||
OR NVL(n.cod_empresa, -1) <> NVL(p_cod_empresa, -1)
|
||||
OR NVL(n.cod_produto, -1) <> NVL(p_cod_produto, -1)
|
||||
OR NVL(n.seqprodutobase, -1) <> NVL(p_seqprodutobase, -1)
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
v_id_nodo := SEQ_TB_FLASH_NODO.NEXTVAL;
|
||||
|
||||
INSERT INTO TB_FLASH_NODO (
|
||||
id_nodo, id_nodo_pai, tipo_nodo, codigo, nome, nivel,
|
||||
ordem_exibicao, ativo, cod_empresa, cod_produto, seqprodutobase,
|
||||
data_cadastro, data_atualizacao
|
||||
) VALUES (
|
||||
v_id_nodo, p_id_nodo_pai, p_tipo_nodo, p_codigo, p_nome, p_nivel,
|
||||
NULL, 'S', p_cod_empresa, p_cod_produto, p_seqprodutobase,
|
||||
SYSDATE, NULL
|
||||
);
|
||||
|
||||
RETURN v_id_nodo;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DELETE FROM TB_FLASH_FATO_PERDA
|
||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
||||
AND cod_empresa = p_empresa;
|
||||
|
||||
FOR r IN (
|
||||
SELECT
|
||||
e.nroempresa AS empresa,
|
||||
e.nomereduzido AS nomeempresa,
|
||||
a.seqproduto AS cod_produto,
|
||||
a.seqprodutobase,
|
||||
a.desccompleta AS descricao,
|
||||
d.nrodivisao,
|
||||
seg1.nrosegmento,
|
||||
p.dtamovimento AS data_referencia,
|
||||
TO_NUMBER(TO_CHAR(p.dtamovimento, 'DD')) AS dia,
|
||||
TO_NUMBER(TO_CHAR(p.dtamovimento, 'MM')) AS mes,
|
||||
TO_NUMBER(TO_CHAR(p.dtamovimento, 'YYYY')) AS ano,
|
||||
TO_NUMBER(TO_CHAR(p.dtamovimento, 'D')) AS dia_semana,
|
||||
SUM(p.qtdperda) AS qtde_perda,
|
||||
SUM(p.vlrperda) AS vlr_perda,
|
||||
SUM(p.vlrcustoperda) AS vlr_custo_perda,
|
||||
a.propqtdprodutobase,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 1 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn1,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 1 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn1,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 2 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn2,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 2 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn2,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 3 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn3,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 3 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn3,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 4 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn4,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 4 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn4,
|
||||
( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 5 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn5,
|
||||
( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 5 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn5
|
||||
FROM max_empresa e
|
||||
JOIN mar_perda p
|
||||
ON p.nroempresa = e.nroempresa
|
||||
JOIN map_produto a
|
||||
ON a.seqproduto = p.seqproduto
|
||||
JOIN map_famdivisao d
|
||||
ON d.seqfamilia = a.seqfamilia
|
||||
AND d.nrodivisao = e.nrodivisao
|
||||
JOIN mad_famsegmento h
|
||||
ON h.seqfamilia = a.seqfamilia
|
||||
AND h.nrosegmento = e.nrosegmentoprinc
|
||||
JOIN mad_segmento seg1
|
||||
ON seg1.nrosegmento = h.nrosegmento
|
||||
AND seg1.nrodivisao = d.nrodivisao
|
||||
WHERE p.dtamovimento BETWEEN p_data_inicial AND p_data_final
|
||||
AND p.nroempresa = p_empresa
|
||||
GROUP BY e.nroempresa, e.nomereduzido, a.seqproduto, a.seqprodutobase,
|
||||
a.desccompleta, d.nrodivisao, seg1.nrosegmento, p.dtamovimento,
|
||||
a.propqtdprodutobase, a.seqfamilia, e.nrodivisao
|
||||
) LOOP
|
||||
|
||||
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.empresa), r.nomeempresa, 1, r.empresa);
|
||||
|
||||
IF r.codcatn1 IS NOT NULL THEN
|
||||
v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.codcatn1), r.nomecatn1, 2, r.empresa);
|
||||
ELSE v_id_cat1 := v_id_empresa; END IF;
|
||||
|
||||
IF r.codcatn2 IS NOT NULL THEN
|
||||
v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.codcatn2), r.nomecatn2, 3, r.empresa);
|
||||
ELSE v_id_cat2 := v_id_cat1; END IF;
|
||||
|
||||
IF r.codcatn3 IS NOT NULL THEN
|
||||
v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.codcatn3), r.nomecatn3, 4, r.empresa);
|
||||
ELSE v_id_cat3 := v_id_cat2; END IF;
|
||||
|
||||
IF r.codcatn4 IS NOT NULL THEN
|
||||
v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.codcatn4), r.nomecatn4, 5, r.empresa);
|
||||
ELSE v_id_cat4 := v_id_cat3; END IF;
|
||||
|
||||
IF r.codcatn5 IS NOT NULL THEN
|
||||
v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.codcatn5), r.nomecatn5, 6, r.empresa);
|
||||
ELSE v_id_cat5 := v_id_cat4; END IF;
|
||||
|
||||
v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.cod_produto), r.descricao, 7, r.empresa, r.cod_produto, r.seqprodutobase);
|
||||
|
||||
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, vlr_custo_perda, qtde_perda,
|
||||
vlr_perda, propqtdprodutobase, data_cadastro
|
||||
) VALUES (
|
||||
SEQ_TB_FLASH_FATO_PERDA.NEXTVAL,
|
||||
r.data_referencia, r.ano, r.mes, r.dia, r.dia_semana,
|
||||
v_id_produto, v_id_empresa, r.empresa, r.nomeempresa, r.cod_produto, r.descricao,
|
||||
r.seqprodutobase, r.nrodivisao, r.nrosegmento, r.vlr_custo_perda,
|
||||
r.qtde_perda, r.vlr_perda, r.propqtdprodutobase, SYSDATE
|
||||
);
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
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_CARGA_DADOS_PERDA' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO';
|
||||
IF v_count > 0 THEN
|
||||
EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_PERDA';
|
||||
END IF;
|
||||
END;
|
||||
-- +goose StatementEnd
|
||||
Reference in New Issue
Block a user