Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b468049cfb | |||
| c81d631cf0 |
Submodule .claude/worktrees/admiring-goldberg-781876 deleted from 5cdcb503b0
@@ -1,4 +1,2 @@
|
|||||||
node_modules
|
node_modules
|
||||||
dist
|
dist
|
||||||
.claude/
|
|
||||||
.claude/worktrees/admiring-goldberg-781876
|
|
||||||
|
|||||||
Vendored
-3
@@ -22,9 +22,6 @@ pipeline {
|
|||||||
echo "password ${GIT_TOKEN}" >> ~/.netrc
|
echo "password ${GIT_TOKEN}" >> ~/.netrc
|
||||||
chmod 600 ~/.netrc
|
chmod 600 ~/.netrc
|
||||||
|
|
||||||
npm config set @davinti:registry=https://git.davinti.com.br/api/packages/davinTI/npm/
|
|
||||||
npm config set -- '//git.davinti.com.br/api/packages/davinTI/npm/:_authToken' "${GIT_TOKEN}"
|
|
||||||
|
|
||||||
npm install
|
npm install
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
-- +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 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),
|
|
||||||
CONSTRAINT PK_TB_FLASH_NODO PRIMARY KEY (ID_NODO),
|
|
||||||
CONSTRAINT UK_TB_FLASH_NODO_PAI_TIPO_COD UNIQUE (ID_NODO_PAI, TIPO_NODO, CODIGO)
|
|
||||||
)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_NODO_PAI';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO ADD CONSTRAINT FK_TB_FLASH_NODO_PAI FOREIGN KEY (ID_NODO_PAI) REFERENCES TB_FLASH_NODO (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_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_indexes WHERE index_name = 'IX_TB_FLASH_NODO_EMP_PROD';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_EMP_PROD ON TB_FLASH_NODO (TIPO_NODO, COD_EMPRESA, COD_PRODUTO)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'TB_FLASH_NODO_ID_NODO_PAI_IDX';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'CREATE INDEX TB_FLASH_NODO_ID_NODO_PAI_IDX ON TB_FLASH_NODO (ID_NODO_PAI, TIPO_NODO, CODIGO, COD_EMPRESA)';
|
|
||||||
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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0),
|
|
||||||
DIA_SEMANA NUMBER(2,0),
|
|
||||||
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_VENDA 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,
|
|
||||||
NOME_SEGMENTO VARCHAR2(300),
|
|
||||||
CONSTRAINT CK_TB_FLASH_FATO_VENDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
|
||||||
CONSTRAINT PK_TB_FLASH_FATO_VENDA PRIMARY KEY (ID_FATO),
|
|
||||||
CONSTRAINT UK_TB_FLASH_FATO_VENDA UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)
|
|
||||||
)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_FATO_VENDA_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA ADD CONSTRAINT FK_TB_FLASH_FATO_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_FATO_VENDA_EMP';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA ADD CONSTRAINT FK_TB_FLASH_FATO_VENDA_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (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_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_indexes WHERE index_name = 'TB_FLASH_FATO_VENDA_DATA_REFERENCIA_IDX';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'CREATE INDEX TB_FLASH_FATO_VENDA_DATA_REFERENCIA_IDX ON TB_FLASH_FATO_VENDA (DATA_REFERENCIA, COD_EMPRESA)';
|
|
||||||
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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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 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),
|
|
||||||
CONSTRAINT PK_TB_FLASH_META_VENDA PRIMARY KEY (ID_META),
|
|
||||||
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_constraints WHERE constraint_name = 'FK_TB_FLASH_META_VENDA_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_META_VENDA ADD CONSTRAINT FK_TB_FLASH_META_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (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_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
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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,
|
|
||||||
NRO_SEGMENTO NUMBER(24,0),
|
|
||||||
NOME_SEGMENTO VARCHAR2(300),
|
|
||||||
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),
|
|
||||||
CONSTRAINT PK_TB_FLASH_NODO_RES_VENDA PRIMARY KEY (ID_RESUMO),
|
|
||||||
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_constraints WHERE constraint_name = 'FK_TB_FLASH_NODO_RES_VENDA_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_VENDA ADD CONSTRAINT FK_TB_FLASH_NODO_RES_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (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_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
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.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
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.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
|
|
||||||
@@ -1,112 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.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 >= TRUNC(p_data_inicial)
|
|
||||||
AND data_referencia < TRUNC(p_data_final) + 1;
|
|
||||||
|
|
||||||
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, nro_segmento, nome_segmento
|
|
||||||
)
|
|
||||||
WITH venda_direta AS (
|
|
||||||
SELECT f.id_nodo,
|
|
||||||
TRUNC(f.data_referencia) AS data_referencia,
|
|
||||||
EXTRACT(YEAR FROM TRUNC(f.data_referencia)) AS ano_referencia,
|
|
||||||
EXTRACT(MONTH FROM TRUNC(f.data_referencia)) AS mes_referencia,
|
|
||||||
EXTRACT(DAY FROM TRUNC(f.data_referencia)) AS dia_referencia,
|
|
||||||
SUM(f.vlr_venda) AS valor_venda,
|
|
||||||
MAX(f.nrosegmento) AS nro_segmento,
|
|
||||||
MAX(f.nome_segmento) AS nome_segmento
|
|
||||||
FROM TB_FLASH_FATO_VENDA f
|
|
||||||
WHERE f.data_referencia >= TRUNC(p_data_inicial)
|
|
||||||
AND f.data_referencia < TRUNC(p_data_final) + 1
|
|
||||||
GROUP BY f.id_nodo, TRUNC(f.data_referencia)
|
|
||||||
),
|
|
||||||
hierarquia AS (
|
|
||||||
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
|
|
||||||
),
|
|
||||||
venda_hierarquia AS (
|
|
||||||
SELECT h.id_nodo_ancestral AS id_nodo,
|
|
||||||
vd.data_referencia, vd.ano_referencia, vd.mes_referencia, vd.dia_referencia,
|
|
||||||
SUM(vd.valor_venda) AS valor_venda
|
|
||||||
FROM hierarquia h
|
|
||||||
JOIN venda_direta vd ON vd.id_nodo = h.id_nodo_descendente
|
|
||||||
GROUP BY h.id_nodo_ancestral, vd.data_referencia, vd.ano_referencia, vd.mes_referencia, vd.dia_referencia
|
|
||||||
),
|
|
||||||
meta_propria_diaria AS (
|
|
||||||
SELECT m.id_nodo,
|
|
||||||
TRUNC(m.data_referencia) AS data_referencia,
|
|
||||||
EXTRACT(YEAR FROM TRUNC(m.data_referencia)) AS ano_referencia,
|
|
||||||
EXTRACT(MONTH FROM TRUNC(m.data_referencia)) AS mes_referencia,
|
|
||||||
EXTRACT(DAY FROM TRUNC(m.data_referencia)) AS 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 >= TRUNC(p_data_inicial)
|
|
||||||
AND m.data_referencia < TRUNC(p_data_final) + 1
|
|
||||||
GROUP BY m.id_nodo, TRUNC(m.data_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 id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia FROM venda_hierarquia
|
|
||||||
UNION
|
|
||||||
SELECT id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia FROM meta_propria_diaria
|
|
||||||
UNION
|
|
||||||
SELECT id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia FROM meta_filhos_diaria
|
|
||||||
)
|
|
||||||
SELECT SEQ_TB_FLASH_NODO_RESUMO_VENDA.NEXTVAL,
|
|
||||||
b.id_nodo, b.data_referencia, b.ano_referencia, b.mes_referencia, b.dia_referencia,
|
|
||||||
NVL(vh.valor_venda, 0) AS 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 AS valor_meta_efetiva,
|
|
||||||
mpd.percentual_meta_propria,
|
|
||||||
CAST(NULL AS NUMBER(10,4)) AS percentual_meta_filhos,
|
|
||||||
CASE WHEN mpd.percentual_meta_propria IS NOT NULL THEN mpd.percentual_meta_propria ELSE NULL END AS percentual_meta_efetiva,
|
|
||||||
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) AS desvio,
|
|
||||||
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 AS percentual_atingimento,
|
|
||||||
SYSDATE,
|
|
||||||
vd.nro_segmento,
|
|
||||||
vd.nome_segmento
|
|
||||||
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
|
|
||||||
LEFT JOIN venda_direta vd ON vd.id_nodo = b.id_nodo AND vd.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
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_VENDA (
|
|
||||||
p_data_inicial IN DATE,
|
|
||||||
p_data_final IN DATE,
|
|
||||||
p_empresa IN NUMBER,
|
|
||||||
p_divisao IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_cgos IN VARCHAR2 DEFAULT NULL
|
|
||||||
) AS
|
|
||||||
BEGIN
|
|
||||||
DELETE FROM TB_FLASH_FATO_VENDA
|
|
||||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
|
||||||
AND cod_empresa = p_empresa;
|
|
||||||
|
|
||||||
INSERT INTO TB_FLASH_FATO_VENDA (
|
|
||||||
id_fato, data_referencia, ano_referencia, mes_referencia, dia_referencia, dia_semana,
|
|
||||||
id_nodo, id_nodo_empresa, cod_empresa, nome_empresa, cod_produto, descricao_produto,
|
|
||||||
seqprodutobase, nrodivisao, nrosegmento, nro_tickets, vlr_imp_venda, qtde_venda,
|
|
||||||
vlr_venda, vl_ticket_medio, propqtdprodutobase, data_cadastro, nome_segmento
|
|
||||||
)
|
|
||||||
WITH pg AS (
|
|
||||||
SELECT MAX(indutilicmstaresugprabc) AS indutilicmstaresugprabc
|
|
||||||
FROM consinco.max_paramgeral
|
|
||||||
),
|
|
||||||
cat AS (
|
|
||||||
SELECT dc.nrodivisao, dc.seqfamilia,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 1 THEN dc.seqcategoria END) AS codcatn1,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 1 THEN cc.categoria END) AS nomecatn1,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 2 THEN dc.seqcategoria END) AS codcatn2,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 2 THEN cc.categoria END) AS nomecatn2,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 3 THEN dc.seqcategoria END) AS codcatn3,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 3 THEN cc.categoria END) AS nomecatn3,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 4 THEN dc.seqcategoria END) AS codcatn4,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 4 THEN cc.categoria END) AS nomecatn4,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 5 THEN dc.seqcategoria END) AS codcatn5,
|
|
||||||
MAX(CASE WHEN cc.nivelhierarquia = 5 THEN cc.categoria END) AS nomecatn5
|
|
||||||
FROM consinco.map_famdivcateg dc
|
|
||||||
JOIN consinco.map_categoria cc
|
|
||||||
ON cc.seqcategoria = dc.seqcategoria AND cc.nrodivisao = dc.nrodivisao
|
|
||||||
AND cc.statuscategor = 'A' AND cc.tipcategoria = 'M' AND cc.nivelhierarquia BETWEEN 1 AND 5
|
|
||||||
WHERE dc.status = 'A'
|
|
||||||
GROUP BY dc.nrodivisao, dc.seqfamilia
|
|
||||||
),
|
|
||||||
dados AS (
|
|
||||||
SELECT dv.nrodivisao, seg1.nrosegmento, seg1.descsegmento,
|
|
||||||
e.nroempresa AS empresa, e.nomereduzido AS nomeempresa,
|
|
||||||
a.seqproduto AS cod_produto, a.seqprodutobase, a.desccompleta AS descricao,
|
|
||||||
z.dtaentradasaida AS data_referencia,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'D')) AS dia_semana,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'DD')) AS dia,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'MM')) AS mes,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida, 'YYYY')) AS ano,
|
|
||||||
0 AS nro_tickets,
|
|
||||||
SUM(DECODE(y.qtdvda,0,0,(y.vlrimpostovda+NVL(DECODE(pg.indutilicmstaresugprabc,'S',COALESCE(y.vlricmsvdasolicit,y.vlricmsvda),y.vlricmsvda),0)+NVL(y.vlrpisvda,0)+NVL(y.vlrcofinsvda,0))/y.qtdvda)*z.qtdvda)
|
|
||||||
+SUM(DECODE(NVL(y.qtddevol,0),0,0,(NVL(y.vlrimpostodevol,0)+NVL(DECODE(pg.indutilicmstaresugprabc,'S',DECODE(y.qtdvda,0,0,COALESCE((y.vlricmsvdasolicit/y.qtdvda)*y.qtddevol,y.vlricmsdevol)),((z.vlricmsvda/GREATEST(z.qtdvda,1))*NVL(z.qtddevol,0))),0)+NVL(y.vlrpisdevol,0)+NVL(y.vlrcofinsdevol,0))/y.qtddevol)*(0-NVL(z.qtddevol,0))) AS vlr_imp_venda,
|
|
||||||
SUM((z.qtdvda - NVL(z.qtddevol,0)) / k.qtdembalagem) AS qtde_venda,
|
|
||||||
SUM(z.vlrtotalvda) - SUM(NVL(z.vlrtotaldevol,0)) AS vlr_venda,
|
|
||||||
0 AS vl_ticket_medio,
|
|
||||||
a.propqtdprodutobase
|
|
||||||
FROM consinco.mrl_custodia z
|
|
||||||
JOIN consinco.max_empresa e ON e.nroempresa = z.nroempresa
|
|
||||||
JOIN consinco.mrl_custodia y ON y.seqproduto = z.seqproduto AND y.dtaentradasaida = z.dtaentradasaida AND y.nroempresa = z.nroempresa
|
|
||||||
JOIN consinco.map_famdivisao d ON d.seqfamilia = z.seqfamilia AND d.nrodivisao = e.nrodivisao
|
|
||||||
JOIN consinco.max_divisao dv ON dv.nrodivisao = d.nrodivisao
|
|
||||||
JOIN consinco.mad_segmento seg1 ON seg1.nrodivisao = d.nrodivisao
|
|
||||||
JOIN consinco.mad_famsegmento h ON h.seqfamilia = z.seqfamilia AND h.nrosegmento = e.nrosegmentoprinc AND h.nrosegmento = seg1.nrosegmento
|
|
||||||
JOIN consinco.map_famembalagem k ON k.seqfamilia = h.seqfamilia AND k.qtdembalagem = 1
|
|
||||||
JOIN consinco.map_produto a ON a.seqproduto = z.seqproduto AND a.seqfamilia = d.seqfamilia
|
|
||||||
JOIN cat ON cat.nrodivisao = d.nrodivisao AND cat.seqfamilia = d.seqfamilia
|
|
||||||
CROSS JOIN pg
|
|
||||||
WHERE z.dtaentradasaida BETWEEN p_data_inicial AND p_data_final
|
|
||||||
AND z.nroempresa = p_empresa
|
|
||||||
AND (p_divisao IS NULL OR d.nrodivisao IN (SELECT TO_NUMBER(REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL)) FROM dual CONNECT BY REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL) IS NOT NULL))
|
|
||||||
AND (z.vlrtotalvda > 0 OR z.vlrtotaldevol > 0)
|
|
||||||
AND EXISTS (SELECT 1 FROM consinco.maxv_abcdistribbase b WHERE b.seqproduto=z.seqproduto AND b.nroempresa=z.nroempresa AND b.dtavda=z.dtaentradasaida AND (p_cgos IS NULL OR b.codgeraloper IN (SELECT TO_NUMBER(REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL)) FROM dual CONNECT BY REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL) IS NOT NULL)))
|
|
||||||
GROUP BY dv.nrodivisao, seg1.nrosegmento, seg1.descsegmento, e.nroempresa, e.nomereduzido,
|
|
||||||
a.seqproduto, a.seqprodutobase, a.desccompleta, z.dtaentradasaida, a.propqtdprodutobase
|
|
||||||
),
|
|
||||||
nodo_empresa AS (
|
|
||||||
SELECT codigo, MAX(id_nodo) AS id_nodo
|
|
||||||
FROM TB_FLASH_NODO WHERE tipo_nodo = 'EMPRESA' AND id_nodo_pai IS NULL GROUP BY codigo
|
|
||||||
),
|
|
||||||
nodo_produto AS (
|
|
||||||
SELECT codigo, cod_empresa, seqprodutobase, MAX(id_nodo) AS id_nodo
|
|
||||||
FROM TB_FLASH_NODO WHERE tipo_nodo = 'PRODUTO' GROUP BY codigo, cod_empresa, seqprodutobase
|
|
||||||
)
|
|
||||||
SELECT SEQ_TB_FLASH_FATO_VENDA.NEXTVAL,
|
|
||||||
r.data_referencia, r.ano, r.mes, r.dia, r.dia_semana,
|
|
||||||
np.id_nodo AS id_nodo, ne.id_nodo AS id_nodo_empresa,
|
|
||||||
r.empresa, r.nomeempresa, r.cod_produto, r.descricao, r.seqprodutobase,
|
|
||||||
r.nrodivisao, r.nrosegmento, r.nro_tickets, r.vlr_imp_venda, r.qtde_venda,
|
|
||||||
r.vlr_venda, r.vl_ticket_medio, r.propqtdprodutobase, SYSDATE, r.descsegmento
|
|
||||||
FROM dados r
|
|
||||||
JOIN nodo_empresa ne ON ne.codigo = TO_CHAR(r.empresa)
|
|
||||||
JOIN nodo_produto np ON np.codigo = TO_CHAR(r.cod_produto) AND np.cod_empresa = r.empresa AND NVL(np.seqprodutobase,-1) = NVL(r.seqprodutobase,-1);
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'PRC_FLASH_CARGA_DADOS_VENDA' AND object_type = 'PROCEDURE';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_DADOS_VENDA';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA_DONO (
|
|
||||||
p_data_inicial IN DATE,
|
|
||||||
p_data_final IN DATE,
|
|
||||||
p_empresas IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_divisao IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_cgos IN VARCHAR2 DEFAULT NULL
|
|
||||||
) AS
|
|
||||||
v_inicio_execucao DATE := SYSDATE;
|
|
||||||
BEGIN
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Iniciando PRC_FLASH_ATUALIZA_VENDA_DONO em ' || TO_CHAR(v_inicio_execucao, 'DD/MM/YYYY HH24:MI:SS'));
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Período: ' || TO_CHAR(p_data_inicial, 'DD/MM/YYYY') || ' até ' || TO_CHAR(p_data_final, 'DD/MM/YYYY'));
|
|
||||||
|
|
||||||
FOR r IN (
|
|
||||||
SELECT CODIGO_EXTERNO AS CODIGO
|
|
||||||
FROM vitruvio.vi_lojas V
|
|
||||||
WHERE p_empresas IS NULL
|
|
||||||
OR CODIGO_EXTERNO IN (
|
|
||||||
SELECT REGEXP_SUBSTR(p_empresas, '[^,]+', 1, LEVEL)
|
|
||||||
FROM dual
|
|
||||||
CONNECT BY REGEXP_SUBSTR(p_empresas, '[^,]+', 1, LEVEL) IS NOT NULL
|
|
||||||
)
|
|
||||||
ORDER BY CODIGO_EXTERNO
|
|
||||||
) 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,
|
|
||||||
p_divisao => p_divisao,
|
|
||||||
p_cgos => p_cgos
|
|
||||||
);
|
|
||||||
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 user_objects WHERE object_name = 'PRC_FLASH_ATUALIZA_VENDA_DONO' AND object_type = 'PROCEDURE';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_ATUALIZA_VENDA_DONO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0),
|
|
||||||
DIA_SEMANA NUMBER(2,0),
|
|
||||||
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,
|
|
||||||
NOME_SEGMENTO VARCHAR2(300),
|
|
||||||
CONSTRAINT CK_TB_FLASH_FATO_CONTRIB_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
|
||||||
CONSTRAINT PK_TB_FLASH_FATO_CONTRIBUICAO PRIMARY KEY (ID_FATO),
|
|
||||||
CONSTRAINT UK_TB_FLASH_FATO_CONTRIBUICAO UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)
|
|
||||||
)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_FATO_CONTRIB_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_CONTRIBUICAO ADD CONSTRAINT FK_TB_FLASH_FATO_CONTRIB_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_FATO_CONTRIB_EMP';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_CONTRIBUICAO ADD CONSTRAINT FK_TB_FLASH_FATO_CONTRIB_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (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_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 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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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 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),
|
|
||||||
CONSTRAINT PK_TB_FLASH_META_CONTRIBUICAO PRIMARY KEY (ID_META),
|
|
||||||
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_constraints WHERE constraint_name = 'FK_TB_FLASH_META_CONTRIBUICAO_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_META_CONTRIBUICAO ADD CONSTRAINT FK_TB_FLASH_META_CONTRIBUICAO_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (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_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
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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,
|
|
||||||
NRO_SEGMENTO NUMBER(24,0),
|
|
||||||
NOME_SEGMENTO VARCHAR2(300),
|
|
||||||
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),
|
|
||||||
CONSTRAINT PK_TB_FLASH_NODO_RES_CONTRIB PRIMARY KEY (ID_RESUMO),
|
|
||||||
CONSTRAINT UK_TB_FLASH_NODO_RES_CONTRIB UNIQUE (ID_NODO, DATA_REFERENCIA, NRO_SEGMENTO)
|
|
||||||
)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_NODO_RES_CONTRIB_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_CONTRIBUICAO ADD CONSTRAINT FK_TB_FLASH_NODO_RES_CONTRIB_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (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_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
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.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
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.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
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.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 TRUNC(p_data_inicial) AND TRUNC(p_data_final);
|
|
||||||
|
|
||||||
INSERT /*+ APPEND */ 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, nro_segmento, nome_segmento
|
|
||||||
)
|
|
||||||
WITH
|
|
||||||
hierarquia AS (
|
|
||||||
SELECT /*+ MATERIALIZE */
|
|
||||||
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
|
|
||||||
),
|
|
||||||
contribuicao_direta AS (
|
|
||||||
SELECT /*+ MATERIALIZE */
|
|
||||||
f.id_nodo,
|
|
||||||
TRUNC(f.data_referencia) AS data_referencia,
|
|
||||||
f.ano_referencia, f.mes_referencia, f.dia_referencia,
|
|
||||||
f.nrosegmento, f.nome_segmento,
|
|
||||||
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 TRUNC(p_data_inicial) AND TRUNC(p_data_final)
|
|
||||||
GROUP BY f.id_nodo, TRUNC(f.data_referencia), f.ano_referencia, f.mes_referencia, f.dia_referencia, f.nrosegmento, f.nome_segmento
|
|
||||||
),
|
|
||||||
contribuicao_hierarquia AS (
|
|
||||||
SELECT h.id_nodo_ancestral AS id_nodo,
|
|
||||||
cd.data_referencia, cd.ano_referencia, cd.mes_referencia, cd.dia_referencia,
|
|
||||||
cd.nrosegmento, cd.nome_segmento,
|
|
||||||
SUM(cd.nro_tickets) AS nro_tickets,
|
|
||||||
SUM(cd.vlr_imp_contribuicao) AS vlr_imp_contribuicao,
|
|
||||||
SUM(cd.qtde_contribuicao) AS qtde_contribuicao,
|
|
||||||
SUM(cd.vlr_contribuicao) AS vlr_contribuicao
|
|
||||||
FROM hierarquia h
|
|
||||||
JOIN contribuicao_direta cd ON cd.id_nodo = h.id_nodo_descendente
|
|
||||||
GROUP BY h.id_nodo_ancestral, cd.data_referencia, cd.ano_referencia, cd.mes_referencia, cd.dia_referencia, cd.nrosegmento, cd.nome_segmento
|
|
||||||
),
|
|
||||||
meta_propria_diaria AS (
|
|
||||||
SELECT /*+ MATERIALIZE */
|
|
||||||
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 TRUNC(p_data_inicial) AND TRUNC(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 DISTINCT n.id_nodo, ch.data_referencia, ch.ano_referencia, ch.mes_referencia, ch.dia_referencia, ch.nrosegmento, ch.nome_segmento
|
|
||||||
FROM contribuicao_hierarquia ch JOIN TB_FLASH_NODO n ON n.id_nodo = ch.id_nodo
|
|
||||||
UNION
|
|
||||||
SELECT DISTINCT n.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia, NULL AS nrosegmento, NULL AS nome_segmento
|
|
||||||
FROM meta_propria_diaria m JOIN TB_FLASH_NODO n ON n.id_nodo = m.id_nodo
|
|
||||||
),
|
|
||||||
calculo AS (
|
|
||||||
SELECT b.id_nodo, b.data_referencia, b.ano_referencia, b.mes_referencia, b.dia_referencia,
|
|
||||||
b.nrosegmento, b.nome_segmento,
|
|
||||||
NVL(ch.nro_tickets, 0) AS nro_tickets,
|
|
||||||
NVL(ch.vlr_imp_contribuicao, 0) AS vlr_imp_contribuicao,
|
|
||||||
NVL(ch.qtde_contribuicao, 0) AS qtde_contribuicao,
|
|
||||||
NVL(ch.vlr_contribuicao, 0) AS vlr_contribuicao,
|
|
||||||
mpd.valor_meta_propria, mfd.valor_meta_filhos, mpd.percentual_meta_propria,
|
|
||||||
CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END AS valor_meta_efetiva
|
|
||||||
FROM base b
|
|
||||||
LEFT JOIN contribuicao_hierarquia ch ON ch.id_nodo = b.id_nodo AND ch.data_referencia = b.data_referencia AND ch.nrosegmento = b.nrosegmento
|
|
||||||
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
|
|
||||||
)
|
|
||||||
SELECT SEQ_TB_FLASH_NODO_RESUMO_CONTRIBUICAO.NEXTVAL,
|
|
||||||
c.id_nodo, c.data_referencia, c.ano_referencia, c.mes_referencia, c.dia_referencia,
|
|
||||||
c.nro_tickets, c.vlr_imp_contribuicao, c.qtde_contribuicao, c.vlr_contribuicao,
|
|
||||||
CASE WHEN c.nro_tickets > 0 THEN c.vlr_contribuicao / c.nro_tickets ELSE NULL END,
|
|
||||||
c.valor_meta_propria, c.valor_meta_filhos, c.valor_meta_efetiva,
|
|
||||||
c.percentual_meta_propria,
|
|
||||||
CAST(NULL AS NUMBER(10,4)),
|
|
||||||
CASE WHEN c.percentual_meta_propria IS NOT NULL THEN c.percentual_meta_propria ELSE NULL END,
|
|
||||||
c.vlr_contribuicao - NVL(c.valor_meta_efetiva, 0),
|
|
||||||
CASE WHEN NVL(c.valor_meta_efetiva, 0) = 0 THEN NULL ELSE (c.vlr_contribuicao / c.valor_meta_efetiva) * 100 END,
|
|
||||||
SYSDATE, c.nrosegmento, c.nome_segmento
|
|
||||||
FROM calculo c;
|
|
||||||
|
|
||||||
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
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
-- +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,
|
|
||||||
p_divisao IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_cgos IN VARCHAR2 DEFAULT NULL
|
|
||||||
) AS
|
|
||||||
BEGIN
|
|
||||||
DELETE FROM TB_FLASH_FATO_CONTRIBUICAO
|
|
||||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
|
||||||
AND cod_empresa = p_empresa;
|
|
||||||
|
|
||||||
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, nome_segmento
|
|
||||||
)
|
|
||||||
WITH
|
|
||||||
CGOS AS (SELECT TO_NUMBER(TRIM(REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL))) AS CODGERALOPER FROM DUAL CONNECT BY REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL) IS NOT NULL),
|
|
||||||
DIVISOES AS (SELECT TO_NUMBER(TRIM(REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL))) AS NRODIVISAO FROM DUAL CONNECT BY REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL) IS NOT NULL),
|
|
||||||
CATEG AS (
|
|
||||||
SELECT DC.SEQFAMILIA, DC.NRODIVISAO,
|
|
||||||
MAX(CASE WHEN CC.NIVELHIERARQUIA=2 THEN CC.SEQCATEGORIA END) AS SEQCATEGORIAN2,
|
|
||||||
MAX(CASE WHEN CC.NIVELHIERARQUIA=2 THEN CC.CATEGORIA END) AS CATEGORIAN2,
|
|
||||||
MAX(CASE WHEN CC.NIVELHIERARQUIA=3 THEN CC.SEQCATEGORIA END) AS SEQCATEGORIAN3,
|
|
||||||
MAX(CASE WHEN CC.NIVELHIERARQUIA=3 THEN CC.CATEGORIA END) AS CATEGORIAN3,
|
|
||||||
MAX(CASE WHEN CC.NIVELHIERARQUIA=4 THEN CC.SEQCATEGORIA END) AS SEQCATEGORIAN4,
|
|
||||||
MAX(CASE WHEN CC.NIVELHIERARQUIA=4 THEN CC.CATEGORIA END) AS CATEGORIAN4,
|
|
||||||
MAX(CASE WHEN CC.NIVELHIERARQUIA=5 THEN CC.SEQCATEGORIA END) AS SEQCATEGORIAN5,
|
|
||||||
MAX(CASE WHEN CC.NIVELHIERARQUIA=5 THEN CC.CATEGORIA END) AS CATEGORIAN5
|
|
||||||
FROM consinco.MAP_FAMDIVCATEG DC
|
|
||||||
JOIN DIVISOES DI ON DI.NRODIVISAO=DC.NRODIVISAO
|
|
||||||
JOIN consinco.MAP_CATEGORIA CC ON CC.SEQCATEGORIA=DC.SEQCATEGORIA AND CC.NRODIVISAO=DC.NRODIVISAO AND CC.TIPCATEGORIA='M' AND CC.NIVELHIERARQUIA BETWEEN 2 AND 5
|
|
||||||
AND ((CC.NIVELHIERARQUIA=2 AND CC.STATUSCATEGOR IN ('A','F') AND DC.STATUS IN ('A','F')) OR (CC.NIVELHIERARQUIA IN (3,4,5) AND CC.STATUSCATEGOR='A' AND DC.STATUS='A'))
|
|
||||||
GROUP BY DC.SEQFAMILIA, DC.NRODIVISAO
|
|
||||||
),
|
|
||||||
NODO_EMPRESA AS (SELECT codigo, MAX(id_nodo) AS id_nodo FROM TB_FLASH_NODO WHERE tipo_nodo='EMPRESA' AND id_nodo_pai IS NULL GROUP BY codigo),
|
|
||||||
NODO_PRODUTO AS (SELECT codigo, cod_empresa, seqprodutobase, MAX(id_nodo) AS id_nodo FROM TB_FLASH_NODO WHERE tipo_nodo='PRODUTO' GROUP BY codigo, cod_empresa, seqprodutobase)
|
|
||||||
SELECT
|
|
||||||
SEQ_TB_FLASH_FATO_CONTRIBUICAO.NEXTVAL,
|
|
||||||
Z.DTA, EXTRACT(YEAR FROM Z.DTA), EXTRACT(MONTH FROM Z.DTA), EXTRACT(DAY FROM Z.DTA),
|
|
||||||
TO_NUMBER(TO_CHAR(Z.DTA,'D')),
|
|
||||||
NP.id_nodo, NE.id_nodo, Z.NROEMPRESA, Z.NOMEEMPRESA, Z.SEQPRODUTO, Z.PRODUTO,
|
|
||||||
Z.SEQPRODUTOBASE, Z.NRODIVISAO, Z.NROSEGMENTO,
|
|
||||||
Z.QTDE_VENDA, Z.VLR_IMP_VENDA, Z.QTDE_VENDA, Z.VLRCONTRIB,
|
|
||||||
CASE WHEN Z.QTDE_VENDA>0 THEN Z.VLRVENDA/Z.QTDE_VENDA ELSE NULL END,
|
|
||||||
Z.PROPQTDPRODUTOBASE, SYSDATE, Z.DESCSEGMENTO
|
|
||||||
FROM (
|
|
||||||
SELECT /*+ OPTIMIZER_FEATURES_ENABLE('10.2.0.4') */
|
|
||||||
Y.DTAENTRADASAIDA AS DTA, V.NROEMPRESA, E.NOMEREDUZIDO AS NOMEEMPRESA,
|
|
||||||
V.NROSEGMENTO, seg1.descsegmento, V.NRODIVISAO, V.SEQPRODUTO, A.SEQPRODUTOBASE,
|
|
||||||
A.DESCCOMPLETA AS PRODUTO,
|
|
||||||
CC1.SEQCATEGORIA AS SEQCATEGORIAN1, CC1.CATEGORIA AS CATEGORIAN1,
|
|
||||||
C.SEQCATEGORIAN2, C.CATEGORIAN2, C.SEQCATEGORIAN3, C.CATEGORIAN3,
|
|
||||||
C.SEQCATEGORIAN4, C.CATEGORIAN4, C.SEQCATEGORIAN5, C.CATEGORIAN5,
|
|
||||||
SUM(V.QTDITEM-NVL(V.QTDDEVOLITEM,0)) AS QTDE_VENDA,
|
|
||||||
SUM(ROUND(V.VLRITEM,2)-ROUND(V.VLRDEVOLITEM,2)) 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,V.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 CGOS CG ON CG.CODGERALOPER=V.CODGERALOPER
|
|
||||||
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.MAD_SEGMENTO seg1 ON seg1.NRODIVISAO=D.NRODIVISAO AND seg1.NROSEGMENTO=V.NROSEGMENTO AND seg1.STATUS='A'
|
|
||||||
JOIN DIVISOES DI ON DI.NRODIVISAO=D.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 CATEG C ON C.SEQFAMILIA=A.SEQFAMILIA AND C.NRODIVISAO=V.NRODIVISAO
|
|
||||||
LEFT JOIN consinco.MAP_PRODACRESCCUSTORELAC PR ON PR.SEQPRODUTO=V.SEQPRODUTO AND PR.DTAMOVIMENTACAO=V.DTAVDA
|
|
||||||
WHERE V.NROEMPRESA=p_empresa AND V.DTAVDA>=p_data_inicial AND V.DTAVDA<p_data_final+1
|
|
||||||
AND ((V.TIPTABELA='S' AND V.CGOACMCOMPRAVENDA IN ('S','I')) OR (V.TIPTABELA<>'S' AND V.ACMCOMPRAVENDA IN ('S','I')))
|
|
||||||
GROUP BY Y.DTAENTRADASAIDA, V.NROEMPRESA, E.NOMEREDUZIDO, V.NRODIVISAO, V.NROSEGMENTO, SEG1.DESCSEGMENTO,
|
|
||||||
V.SEQPRODUTO, A.SEQPRODUTOBASE, A.SEQFAMILIA, A.DESCCOMPLETA, CC1.SEQCATEGORIA, CC1.CATEGORIA,
|
|
||||||
C.SEQCATEGORIAN2, C.CATEGORIAN2, C.SEQCATEGORIAN3, C.CATEGORIAN3, C.SEQCATEGORIAN4, C.CATEGORIAN4,
|
|
||||||
C.SEQCATEGORIAN5, C.CATEGORIAN5
|
|
||||||
) Z
|
|
||||||
JOIN NODO_EMPRESA NE ON NE.codigo=TO_CHAR(Z.NROEMPRESA)
|
|
||||||
JOIN NODO_PRODUTO NP ON NP.codigo=TO_CHAR(Z.SEQPRODUTO) AND NP.cod_empresa=Z.NROEMPRESA AND NVL(NP.seqprodutobase,-1)=NVL(Z.SEQPRODUTOBASE,-1);
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'PRC_FLASH_CARGA_DADOS_CONTRIBUICAO' AND object_type = 'PROCEDURE';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_DADOS_CONTRIBUICAO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
-- +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_empresas IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_divisao IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_cgos IN VARCHAR2 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_EXTERNO AS CODIGO
|
|
||||||
FROM vitruvio.vi_lojas V
|
|
||||||
WHERE p_empresas IS NULL
|
|
||||||
OR CODIGO_EXTERNO IN (
|
|
||||||
SELECT REGEXP_SUBSTR(p_empresas, '[^,]+', 1, LEVEL)
|
|
||||||
FROM dual
|
|
||||||
CONNECT BY REGEXP_SUBSTR(p_empresas, '[^,]+', 1, LEVEL) IS NOT NULL
|
|
||||||
)
|
|
||||||
ORDER BY CODIGO_EXTERNO
|
|
||||||
) 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,
|
|
||||||
p_divisao => p_divisao,
|
|
||||||
p_cgos => p_cgos
|
|
||||||
);
|
|
||||||
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 user_objects WHERE object_name = 'PRC_FLASH_ATUALIZA_CONTRIBUICAO_DONO' AND object_type = 'PROCEDURE';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_ATUALIZA_CONTRIBUICAO_DONO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0),
|
|
||||||
DIA_SEMANA NUMBER(2,0),
|
|
||||||
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,
|
|
||||||
NOME_SEGMENTO VARCHAR2(300),
|
|
||||||
CONSTRAINT CK_TB_FLASH_FATO_PERDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
|
||||||
CONSTRAINT PK_TB_FLASH_FATO_PERDA PRIMARY KEY (ID_FATO),
|
|
||||||
CONSTRAINT UK_TB_FLASH_FATO_PERDA UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)
|
|
||||||
)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_FATO_PERDA_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_PERDA ADD CONSTRAINT FK_TB_FLASH_FATO_PERDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO)';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_FATO_PERDA_EMP';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_PERDA ADD CONSTRAINT FK_TB_FLASH_FATO_PERDA_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (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_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 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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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 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),
|
|
||||||
CONSTRAINT PK_TB_FLASH_META_PERDA PRIMARY KEY (ID_META),
|
|
||||||
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_constraints WHERE constraint_name = 'FK_TB_FLASH_META_PERDA_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_META_PERDA ADD CONSTRAINT FK_TB_FLASH_META_PERDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (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_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
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
-- +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,0) NOT NULL,
|
|
||||||
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
||||||
DIA_REFERENCIA NUMBER(2,0) 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,
|
|
||||||
NRO_SEGMENTO NUMBER(24,0),
|
|
||||||
NOME_SEGMENTO VARCHAR2(300),
|
|
||||||
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),
|
|
||||||
CONSTRAINT PK_TB_FLASH_NODO_RES_PERDA PRIMARY KEY (ID_RESUMO),
|
|
||||||
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_constraints WHERE constraint_name = 'FK_TB_FLASH_NODO_RES_PERDA_NODO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_PERDA ADD CONSTRAINT FK_TB_FLASH_NODO_RES_PERDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (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_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
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.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
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.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
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_RESUMO_PERDA (
|
|
||||||
p_data_inicial IN DATE,
|
|
||||||
p_data_final IN DATE
|
|
||||||
) AS
|
|
||||||
v_dt_ini DATE := TRUNC(p_data_inicial);
|
|
||||||
v_dt_fim DATE := TRUNC(p_data_final) + 1;
|
|
||||||
BEGIN
|
|
||||||
DELETE FROM TB_FLASH_NODO_RESUMO_PERDA
|
|
||||||
WHERE data_referencia >= v_dt_ini
|
|
||||||
AND data_referencia < v_dt_fim;
|
|
||||||
|
|
||||||
INSERT /*+ APPEND */ 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, nro_segmento, nome_segmento
|
|
||||||
)
|
|
||||||
WITH
|
|
||||||
hierarquia AS (
|
|
||||||
SELECT /*+ MATERIALIZE */
|
|
||||||
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
|
|
||||||
),
|
|
||||||
venda_direta AS (
|
|
||||||
SELECT f.id_nodo,
|
|
||||||
TRUNC(f.data_referencia) AS data_referencia,
|
|
||||||
EXTRACT(YEAR FROM TRUNC(f.data_referencia)) AS ano_referencia,
|
|
||||||
EXTRACT(MONTH FROM TRUNC(f.data_referencia)) AS mes_referencia,
|
|
||||||
EXTRACT(DAY FROM TRUNC(f.data_referencia)) AS dia_referencia,
|
|
||||||
SUM(f.vlr_perda) AS valor_venda,
|
|
||||||
MAX(f.nrosegmento) AS nro_segmento,
|
|
||||||
MAX(f.nome_segmento) AS nome_segmento
|
|
||||||
FROM TB_FLASH_FATO_PERDA f
|
|
||||||
WHERE f.data_referencia >= v_dt_ini
|
|
||||||
AND f.data_referencia < v_dt_fim
|
|
||||||
GROUP BY f.id_nodo, TRUNC(f.data_referencia)
|
|
||||||
),
|
|
||||||
venda_hierarquia AS (
|
|
||||||
SELECT h.id_nodo_ancestral AS id_nodo,
|
|
||||||
vd.data_referencia, vd.ano_referencia, vd.mes_referencia, vd.dia_referencia,
|
|
||||||
SUM(vd.valor_venda) AS valor_venda
|
|
||||||
FROM hierarquia h
|
|
||||||
JOIN venda_direta vd ON vd.id_nodo = h.id_nodo_descendente
|
|
||||||
GROUP BY h.id_nodo_ancestral, vd.data_referencia, vd.ano_referencia, vd.mes_referencia, vd.dia_referencia
|
|
||||||
),
|
|
||||||
meta_propria_diaria AS (
|
|
||||||
SELECT /*+ MATERIALIZE */
|
|
||||||
m.id_nodo,
|
|
||||||
TRUNC(m.data_referencia) AS data_referencia,
|
|
||||||
EXTRACT(YEAR FROM TRUNC(m.data_referencia)) AS ano_referencia,
|
|
||||||
EXTRACT(MONTH FROM TRUNC(m.data_referencia)) AS mes_referencia,
|
|
||||||
EXTRACT(DAY FROM TRUNC(m.data_referencia)) AS 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 >= v_dt_ini
|
|
||||||
AND m.data_referencia < v_dt_fim
|
|
||||||
GROUP BY m.id_nodo, TRUNC(m.data_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
|
|
||||||
),
|
|
||||||
combinado AS (
|
|
||||||
SELECT
|
|
||||||
COALESCE(vh.id_nodo, mpd.id_nodo, mfd.id_nodo) AS id_nodo,
|
|
||||||
COALESCE(vh.data_referencia, mpd.data_referencia, mfd.data_referencia) AS data_referencia,
|
|
||||||
COALESCE(vh.ano_referencia, mpd.ano_referencia, mfd.ano_referencia) AS ano_referencia,
|
|
||||||
COALESCE(vh.mes_referencia, mpd.mes_referencia, mfd.mes_referencia) AS mes_referencia,
|
|
||||||
COALESCE(vh.dia_referencia, mpd.dia_referencia, mfd.dia_referencia) AS dia_referencia,
|
|
||||||
NVL(vh.valor_venda, 0) AS valor_venda,
|
|
||||||
mpd.valor_meta_propria,
|
|
||||||
mpd.percentual_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 AS valor_meta_efetiva
|
|
||||||
FROM venda_hierarquia vh
|
|
||||||
FULL OUTER JOIN meta_propria_diaria mpd
|
|
||||||
ON mpd.id_nodo = vh.id_nodo
|
|
||||||
AND mpd.data_referencia = vh.data_referencia
|
|
||||||
FULL OUTER JOIN meta_filhos_diaria mfd
|
|
||||||
ON mfd.id_nodo = COALESCE(vh.id_nodo, mpd.id_nodo)
|
|
||||||
AND mfd.data_referencia = COALESCE(vh.data_referencia, mpd.data_referencia)
|
|
||||||
)
|
|
||||||
SELECT SEQ_TB_FLASH_NODO_RESUMO_PERDA.NEXTVAL,
|
|
||||||
c.id_nodo, c.data_referencia, c.ano_referencia, c.mes_referencia, c.dia_referencia,
|
|
||||||
c.valor_venda,
|
|
||||||
c.valor_meta_propria,
|
|
||||||
c.valor_meta_filhos,
|
|
||||||
c.valor_meta_efetiva,
|
|
||||||
c.percentual_meta_propria,
|
|
||||||
CAST(NULL AS NUMBER(10,4)) AS percentual_meta_filhos,
|
|
||||||
c.percentual_meta_propria AS percentual_meta_efetiva,
|
|
||||||
c.valor_venda - NVL(c.valor_meta_efetiva, 0) AS desvio,
|
|
||||||
CASE WHEN NVL(c.valor_meta_efetiva, 0) = 0 THEN NULL ELSE c.valor_venda / c.valor_meta_efetiva * 100 END AS percentual_atingimento,
|
|
||||||
SYSDATE,
|
|
||||||
vd.nro_segmento,
|
|
||||||
vd.nome_segmento
|
|
||||||
FROM combinado c
|
|
||||||
LEFT JOIN venda_direta vd ON vd.id_nodo = c.id_nodo AND vd.data_referencia = c.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
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_PERDA (
|
|
||||||
p_data_inicial IN DATE,
|
|
||||||
p_data_final IN DATE,
|
|
||||||
p_empresa IN NUMBER,
|
|
||||||
p_divisao IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_cgos IN VARCHAR2 DEFAULT NULL
|
|
||||||
) AS
|
|
||||||
BEGIN
|
|
||||||
DELETE FROM TB_FLASH_FATO_PERDA
|
|
||||||
WHERE data_referencia BETWEEN p_data_inicial AND p_data_final
|
|
||||||
AND cod_empresa = p_empresa;
|
|
||||||
|
|
||||||
INSERT INTO TB_FLASH_FATO_PERDA (
|
|
||||||
id_fato, data_referencia, ano_referencia, mes_referencia, dia_referencia, dia_semana,
|
|
||||||
id_nodo, id_nodo_empresa, cod_empresa, nome_empresa, cod_produto, descricao_produto,
|
|
||||||
seqprodutobase, nrodivisao, nrosegmento, qtde_perda, vlr_perda,
|
|
||||||
propqtdprodutobase, data_cadastro, nome_segmento
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
SEQ_TB_FLASH_FATO_PERDA.NEXTVAL,
|
|
||||||
x.data_referencia, x.ano_referencia, x.mes_referencia, x.dia_referencia, x.dia_semana,
|
|
||||||
x.id_nodo, x.id_nodo_empresa, x.cod_empresa, x.nome_empresa,
|
|
||||||
x.cod_produto, x.descricao_produto, x.seqprodutobase, x.nrodivisao, x.nrosegmento,
|
|
||||||
x.qtde_perda, x.vlr_perda, x.propqtdprodutobase, x.data_cadastro, x.nome_segmento
|
|
||||||
FROM (
|
|
||||||
SELECT
|
|
||||||
TRUNC(a.DTAVDA) AS data_referencia,
|
|
||||||
EXTRACT(YEAR FROM a.DTAVDA) AS ano_referencia,
|
|
||||||
EXTRACT(MONTH FROM a.DTAVDA) AS mes_referencia,
|
|
||||||
EXTRACT(DAY FROM a.DTAVDA) AS dia_referencia,
|
|
||||||
TO_NUMBER(TO_CHAR(a.DTAVDA,'D')) AS dia_semana,
|
|
||||||
MIN(b.id_nodo) AS id_nodo,
|
|
||||||
MIN(c.id_nodo) AS id_nodo_empresa,
|
|
||||||
b.cod_empresa AS cod_empresa,
|
|
||||||
MAX(d.fantasia) AS nome_empresa,
|
|
||||||
a.seqproduto AS cod_produto,
|
|
||||||
MAX(e.descreduzida) AS descricao_produto,
|
|
||||||
MAX(e.seqprodutobase) AS seqprodutobase,
|
|
||||||
MIN(a.nrodivisao) AS nrodivisao,
|
|
||||||
a.nrosegmento AS nrosegmento,
|
|
||||||
SUM(a.qtditem) AS qtde_perda,
|
|
||||||
SUM(a.vlritem) AS vlr_perda,
|
|
||||||
MAX(e.propqtdprodutobase) AS propqtdprodutobase,
|
|
||||||
SYSDATE AS data_cadastro,
|
|
||||||
MAX(seg1.descsegmento) AS nome_segmento
|
|
||||||
FROM consinco.maxv_abcdistribbase a
|
|
||||||
INNER JOIN vitruvio.TB_FLASH_NODO b ON b.tipo_nodo = 'PRODUTO' AND b.cod_empresa = a.nroempresa AND b.cod_produto = a.seqproduto
|
|
||||||
INNER JOIN vitruvio.TB_FLASH_NODO c ON c.tipo_nodo = 'EMPRESA' AND c.cod_empresa = a.nroempresa
|
|
||||||
INNER JOIN consinco.max_empresa d ON d.nroempresa = c.cod_empresa
|
|
||||||
INNER JOIN consinco.map_produto e ON e.seqproduto = a.seqproduto
|
|
||||||
INNER JOIN consinco.mad_segmento seg1 ON seg1.nrodivisao = a.nrodivisao AND seg1.nrosegmento = a.nrosegmento
|
|
||||||
WHERE a.nroempresa = p_empresa
|
|
||||||
AND a.dtavda BETWEEN p_data_inicial AND p_data_final
|
|
||||||
AND (p_cgos IS NULL OR a.codgeraloper IN (SELECT TO_NUMBER(REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL)) FROM dual CONNECT BY REGEXP_SUBSTR(p_cgos,'[^,]+',1,LEVEL) IS NOT NULL))
|
|
||||||
AND (p_divisao IS NULL OR a.nrodivisao IN (SELECT TO_NUMBER(REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL)) FROM dual CONNECT BY REGEXP_SUBSTR(p_divisao,'[^,]+',1,LEVEL) IS NOT NULL))
|
|
||||||
GROUP BY TRUNC(a.dtavda), EXTRACT(YEAR FROM a.dtavda), EXTRACT(MONTH FROM a.dtavda),
|
|
||||||
EXTRACT(DAY FROM a.dtavda), TO_NUMBER(TO_CHAR(a.dtavda,'D')), b.cod_empresa, a.seqproduto, a.nrosegmento
|
|
||||||
) x;
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'PRC_FLASH_CARGA_DADOS_PERDA' AND object_type = 'PROCEDURE';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_DADOS_PERDA';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
-- +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_empresas IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_divisao IN VARCHAR2 DEFAULT NULL,
|
|
||||||
p_cgos IN VARCHAR2 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_EXTERNO AS CODIGO
|
|
||||||
FROM vitruvio.vi_lojas V
|
|
||||||
WHERE p_empresas IS NULL
|
|
||||||
OR CODIGO_EXTERNO IN (
|
|
||||||
SELECT REGEXP_SUBSTR(p_empresas, '[^,]+', 1, LEVEL)
|
|
||||||
FROM dual
|
|
||||||
CONNECT BY REGEXP_SUBSTR(p_empresas, '[^,]+', 1, LEVEL) IS NOT NULL
|
|
||||||
)
|
|
||||||
ORDER BY CODIGO_EXTERNO
|
|
||||||
) 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,
|
|
||||||
p_divisao => p_divisao,
|
|
||||||
p_cgos => p_cgos
|
|
||||||
);
|
|
||||||
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 user_objects WHERE object_name = 'PRC_FLASH_ATUALIZA_PERDA_DONO' AND object_type = 'PROCEDURE';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_ATUALIZA_PERDA_DONO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,228 +0,0 @@
|
|||||||
-- +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,
|
|
||||||
seg1.descsegmento,
|
|
||||||
e.nroempresa AS empresa,
|
|
||||||
e.nomereduzido AS nomeempresa,
|
|
||||||
a.seqproduto AS cod_produto,
|
|
||||||
a.seqprodutobase,
|
|
||||||
a.desccompleta AS descricao,
|
|
||||||
z.dtaentradasaida AS data_referencia,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'D')) AS dia_semana,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'DD')) AS dia,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'MM')) AS mes,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'YYYY')) AS ano,
|
|
||||||
0 AS nro_tickets,
|
|
||||||
SUM(DECODE(y.qtdvda, 0, 0,
|
|
||||||
((y.vlrimpostovda +
|
|
||||||
NVL(DECODE(pg.indutilicmstaresugprabc,
|
|
||||||
'S', COALESCE(y.vlricmsvdasolicit, y.vlricmsvda),
|
|
||||||
y.vlricmsvda), 0)
|
|
||||||
+ NVL(y.vlrpisvda, 0)
|
|
||||||
+ NVL(y.vlrcofinsvda, 0)) / y.qtdvda)) * z.qtdvda)
|
|
||||||
+
|
|
||||||
SUM(DECODE(NVL(y.qtddevol, 0), 0, 0,
|
|
||||||
((NVL(y.vlrimpostodevol, 0) +
|
|
||||||
NVL(DECODE(pg.indutilicmstaresugprabc,
|
|
||||||
'S',
|
|
||||||
DECODE(y.qtdvda, 0, 0,
|
|
||||||
COALESCE((y.vlricmsvdasolicit / y.qtdvda) * y.qtddevol,
|
|
||||||
y.vlricmsdevol)),
|
|
||||||
((z.vlricmsvda / GREATEST(z.qtdvda, 1)) * NVL(z.qtddevol, 0))),
|
|
||||||
0)
|
|
||||||
+ NVL(y.vlrpisdevol, 0)
|
|
||||||
+ NVL(y.vlrcofinsdevol, 0)) / y.qtddevol)) * (0 - NVL(z.qtddevol, 0))
|
|
||||||
) AS vlr_imp_venda,
|
|
||||||
SUM((z.qtdvda - NVL(z.qtddevol, 0)) / k.qtdembalagem) AS qtde_venda,
|
|
||||||
(SUM(z.vlrtotalvda) - SUM(NVL(z.vlrtotaldevol, 0))) AS vlr_venda,
|
|
||||||
0 AS vl_ticket_medio,
|
|
||||||
a.propqtdprodutobase,
|
|
||||||
( SELECT dc.seqcategoria FROM consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.map_famdivcateg dc JOIN consinco.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 consinco.maxv_categoria g, consinco.map_famdivcateg u, consinco.map_produto a, consinco.map_famdivisao d,
|
|
||||||
consinco.map_famembalagem k, consinco.mad_segmento seg1, consinco.mrl_produtoempresa c,
|
|
||||||
consinco.mad_famsegmento h, consinco.max_empresa e, consinco.mrl_custodia y, consinco.mrl_custodia z,
|
|
||||||
consinco.mrlv_descontoregra re, consinco.max_divisao dv, consinco.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, seg1.descsegmento, 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
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
-- +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
|
|
||||||
|
|
||||||
@@ -1,112 +0,0 @@
|
|||||||
-- +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
|
|
||||||
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
-- +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
|
|
||||||
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
-- +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
|
|
||||||
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
-- +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
|
|
||||||
|
|
||||||
@@ -1,444 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
-- +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
|
|
||||||
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
-- +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
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,866 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,867 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,186 +0,0 @@
|
|||||||
-- +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
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_FATO_VENDA' AND column_name = 'NOME_SEGMENTO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA ADD (NOME_SEGMENTO VARCHAR2(300))';
|
|
||||||
EXECUTE IMMEDIATE 'COMMENT ON COLUMN TB_FLASH_FATO_VENDA.NOME_SEGMENTO IS ''Nome do segmento''';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_FATO_VENDA' AND column_name = 'NOME_SEGMENTO';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA DROP COLUMN NOME_SEGMENTO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,432 +0,0 @@
|
|||||||
-- +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,
|
|
||||||
seg1.descsegmento,
|
|
||||||
e.nroempresa AS empresa,
|
|
||||||
e.nomereduzido AS nomeempresa,
|
|
||||||
a.seqproduto AS cod_produto,
|
|
||||||
a.seqprodutobase,
|
|
||||||
a.desccompleta AS descricao,
|
|
||||||
z.dtaentradasaida AS data_referencia,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'D')) AS dia_semana,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'DD')) AS dia,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'MM')) AS mes,
|
|
||||||
TO_NUMBER(TO_CHAR(z.dtaentradasaida,'YYYY')) AS ano,
|
|
||||||
0 AS nro_tickets,
|
|
||||||
SUM(DECODE(y.qtdvda, 0, 0,
|
|
||||||
((y.vlrimpostovda +
|
|
||||||
NVL(DECODE(pg.indutilicmstaresugprabc,
|
|
||||||
'S', COALESCE(y.vlricmsvdasolicit, y.vlricmsvda),
|
|
||||||
y.vlricmsvda), 0)
|
|
||||||
+ NVL(y.vlrpisvda, 0)
|
|
||||||
+ NVL(y.vlrcofinsvda, 0)) / y.qtdvda)) * z.qtdvda)
|
|
||||||
+
|
|
||||||
SUM(DECODE(NVL(y.qtddevol, 0), 0, 0,
|
|
||||||
((NVL(y.vlrimpostodevol, 0) +
|
|
||||||
NVL(DECODE(pg.indutilicmstaresugprabc,
|
|
||||||
'S',
|
|
||||||
DECODE(y.qtdvda, 0, 0,
|
|
||||||
COALESCE((y.vlricmsvdasolicit / y.qtdvda) * y.qtddevol,
|
|
||||||
y.vlricmsdevol)),
|
|
||||||
((z.vlricmsvda / GREATEST(z.qtdvda, 1)) * NVL(z.qtddevol, 0))),
|
|
||||||
0)
|
|
||||||
+ NVL(y.vlrpisdevol, 0)
|
|
||||||
+ NVL(y.vlrcofinsdevol, 0)) / y.qtddevol)) * (0 - NVL(z.qtddevol, 0))
|
|
||||||
) AS vlr_imp_venda,
|
|
||||||
SUM((z.qtdvda - NVL(z.qtddevol, 0)) / k.qtdembalagem) AS qtde_venda,
|
|
||||||
(SUM(z.vlrtotalvda) - SUM(NVL(z.vlrtotaldevol, 0))) AS vlr_venda,
|
|
||||||
0 AS vl_ticket_medio,
|
|
||||||
a.propqtdprodutobase,
|
|
||||||
( 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, seg1.descsegmento, 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, nome_segmento
|
|
||||||
) 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, r.descsegmento
|
|
||||||
);
|
|
||||||
|
|
||||||
END LOOP;
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +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
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_NODO_RESUMO_VENDA' AND column_name = 'NRO_SEGMENTO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_VENDA ADD (NRO_SEGMENTO NUMBER(24,0))';
|
|
||||||
EXECUTE IMMEDIATE 'COMMENT ON COLUMN TB_FLASH_NODO_RESUMO_VENDA.NRO_SEGMENTO IS ''Código do Segmento''';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_NODO_RESUMO_VENDA' AND column_name = 'NOME_SEGMENTO';
|
|
||||||
IF v_count = 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_VENDA ADD (NOME_SEGMENTO VARCHAR2(300))';
|
|
||||||
EXECUTE IMMEDIATE 'COMMENT ON COLUMN TB_FLASH_NODO_RESUMO_VENDA.NOME_SEGMENTO IS ''Nome do Segmento''';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_NODO_RESUMO_VENDA' AND column_name = 'NRO_SEGMENTO';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_VENDA DROP COLUMN NRO_SEGMENTO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM user_tab_columns WHERE table_name = 'TB_FLASH_NODO_RESUMO_VENDA' AND column_name = 'NOME_SEGMENTO';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_VENDA DROP COLUMN NOME_SEGMENTO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
-- +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,
|
|
||||||
nro_segmento, nome_segmento
|
|
||||||
)
|
|
||||||
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,
|
|
||||||
MAX(f.nrosegmento) AS nro_segmento,
|
|
||||||
MAX(f.nome_segmento) AS nome_segmento
|
|
||||||
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,
|
|
||||||
vd.nro_segmento,
|
|
||||||
vd.nome_segmento
|
|
||||||
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
|
|
||||||
LEFT JOIN venda_direta vd ON vd.id_nodo = b.id_nodo AND vd.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
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
-- +goose Up
|
|
||||||
-- +goose StatementBegin
|
|
||||||
CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA_DONO (
|
|
||||||
p_data_inicial IN DATE,
|
|
||||||
p_data_final IN DATE,
|
|
||||||
p_empresa_ini IN NUMBER DEFAULT NULL,
|
|
||||||
p_empresa_fim IN NUMBER DEFAULT NULL
|
|
||||||
) AS
|
|
||||||
v_inicio_execucao DATE := SYSDATE;
|
|
||||||
BEGIN
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Iniciando PRC_FLASH_ATUALIZA_VENDA_DONO em ' || TO_CHAR(v_inicio_execucao, 'DD/MM/YYYY HH24:MI:SS'));
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Período: ' || TO_CHAR(p_data_inicial, 'DD/MM/YYYY') || ' até ' || TO_CHAR(p_data_final, 'DD/MM/YYYY'));
|
|
||||||
|
|
||||||
FOR r IN (
|
|
||||||
SELECT codigo
|
|
||||||
FROM vitruvio.vi_lojas
|
|
||||||
WHERE codigo NOT IN (301, 401, 500)
|
|
||||||
AND (p_empresa_ini IS NULL OR codigo >= p_empresa_ini)
|
|
||||||
AND (p_empresa_fim IS NULL OR codigo <= p_empresa_fim)
|
|
||||||
ORDER BY codigo
|
|
||||||
) LOOP
|
|
||||||
BEGIN
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Carregando venda da empresa: ' || r.codigo);
|
|
||||||
|
|
||||||
PRC_FLASH_CARGA_DADOS_VENDA(
|
|
||||||
p_data_inicial => p_data_inicial,
|
|
||||||
p_data_final => p_data_final,
|
|
||||||
p_empresa => r.codigo
|
|
||||||
);
|
|
||||||
|
|
||||||
EXCEPTION
|
|
||||||
WHEN OTHERS THEN
|
|
||||||
DBMS_OUTPUT.PUT_LINE(
|
|
||||||
'Erro ao carregar empresa ' || r.codigo || ': ' || SQLERRM
|
|
||||||
);
|
|
||||||
RAISE;
|
|
||||||
END;
|
|
||||||
END LOOP;
|
|
||||||
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Carregando stage de metas de venda...');
|
|
||||||
|
|
||||||
PRC_FLASH_CARGA_META_VENDA_STG(
|
|
||||||
p_data_inicial => p_data_inicial,
|
|
||||||
p_data_final => p_data_final
|
|
||||||
);
|
|
||||||
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Carregando metas finais de venda...');
|
|
||||||
|
|
||||||
PRC_FLASH_CARGA_META_VENDA(
|
|
||||||
p_data_inicial => p_data_inicial,
|
|
||||||
p_data_final => p_data_final
|
|
||||||
);
|
|
||||||
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Atualizando resumo de venda...');
|
|
||||||
|
|
||||||
PRC_FLASH_CARGA_RESUMO_VENDA(
|
|
||||||
p_data_inicial => p_data_inicial,
|
|
||||||
p_data_final => p_data_final
|
|
||||||
);
|
|
||||||
|
|
||||||
DBMS_OUTPUT.PUT_LINE('PRC_FLASH_ATUALIZA_VENDA_DONO finalizada em ' || TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Tempo em segundos: ' || ROUND((SYSDATE - v_inicio_execucao) * 86400, 2));
|
|
||||||
|
|
||||||
EXCEPTION
|
|
||||||
WHEN OTHERS THEN
|
|
||||||
DBMS_OUTPUT.PUT_LINE('Erro geral na PRC_FLASH_ATUALIZA_VENDA_DONO: ' || SQLERRM);
|
|
||||||
RAISE;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM all_objects WHERE object_name = 'PRC_FLASH_ATUALIZA_VENDA_DONO_DONO' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA_DONO_DONO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
|
|
||||||
-- +goose Down
|
|
||||||
-- +goose StatementBegin
|
|
||||||
DECLARE
|
|
||||||
v_count NUMBER;
|
|
||||||
BEGIN
|
|
||||||
SELECT COUNT(*) INTO v_count FROM all_objects WHERE object_name = 'PRC_FLASH_ATUALIZA_VENDA_DONO' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO';
|
|
||||||
IF v_count > 0 THEN
|
|
||||||
EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA_DONO';
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
-- +goose StatementEnd
|
|
||||||
Generated
+3
-4
@@ -9,16 +9,15 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@davinti/jeff": "^1.0.18"
|
"@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"tsx": "^4.21.0"
|
"tsx": "^4.21.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@davinti/jeff": {
|
"node_modules/@davinti/jeff": {
|
||||||
"version": "1.0.18",
|
"version": "1.0.8",
|
||||||
"resolved": "https://git.davinti.com.br/api/packages/davinTI/npm/%40davinti%2Fjeff/-/1.0.18/jeff-1.0.18.tgz",
|
"resolved": "git+https://git.davinti.com.br/davinTI/jeff.git#aa32d9bc6e5ab4b6a4c5f2748fa68e4bfdd2b4e2",
|
||||||
"integrity": "sha512-xRUhKQ4hQ8ojouQ1S/hBZ/pZiNYhyTHDCw71EHXd06SVCRAIwqLL5K+nbTGsPrlG+dF42tJshp+TU1V0Y/ULGA==",
|
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/glob": "^8.1.0",
|
"@types/glob": "^8.1.0",
|
||||||
|
|||||||
+1
-2
@@ -6,14 +6,13 @@
|
|||||||
"generate": "jeff generate -i \"src/**/*.module.ts\"",
|
"generate": "jeff generate -i \"src/**/*.module.ts\"",
|
||||||
"generate:output": "jeff generate -i \"src/**/*.module.ts\" -o dist/manifest.json",
|
"generate:output": "jeff generate -i \"src/**/*.module.ts\" -o dist/manifest.json",
|
||||||
"vet": "jeff vet -i \"src/**/*.module.ts\"",
|
"vet": "jeff vet -i \"src/**/*.module.ts\"",
|
||||||
"test:app": "tsx scripts/module-test-app.ts",
|
|
||||||
"jeff": "jeff"
|
"jeff": "jeff"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"description": "",
|
"description": "",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@davinti/jeff": "^1.0.18"
|
"@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"tsx": "^4.21.0"
|
"tsx": "^4.21.0"
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB |
@@ -1,123 +0,0 @@
|
|||||||
# Teste local de módulos
|
|
||||||
|
|
||||||
Esta tela ajuda a testar as queries dos módulos do `app-dono-modulos` sem precisar alterar o app principal.
|
|
||||||
|
|
||||||
## Como abrir
|
|
||||||
|
|
||||||
Execute o app de teste e acesse a URL exibida no terminal:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run test:app
|
|
||||||
```
|
|
||||||
|
|
||||||
Também é possível escolher uma porta:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run test:app -- --port=4320
|
|
||||||
```
|
|
||||||
|
|
||||||
## Campos principais
|
|
||||||
|
|
||||||
- **Módulo**: seleciona o módulo do manifesto, por exemplo `flash-de-perdas`.
|
|
||||||
- **Login remoto**: URL do endpoint de login usado para gerar o bearer.
|
|
||||||
- **Email/Senha**: credenciais enviadas ao endpoint de login.
|
|
||||||
- **Query**: seleciona a query do módulo, por exemplo `flash_categorias`.
|
|
||||||
- **Sistema**: seleciona a implementação local da query, como `C5_big`.
|
|
||||||
- **Parâmetros**: mostra os parâmetros declarados na query.
|
|
||||||
- **Manifesto remoto**: base usada para montar a chamada remota.
|
|
||||||
- **Bearer token**: token de autenticação usado na chamada remota.
|
|
||||||
- **Client ID**: valor enviado no header `x-client-id`.
|
|
||||||
|
|
||||||
## Gerar bearer
|
|
||||||
|
|
||||||
Antes de executar o manifesto remoto, preencha a URL de login, o email e a senha.
|
|
||||||
|
|
||||||
O botão **Gerar bearer** chama o endpoint de login com o JSON:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"email": "usuario@exemplo.com",
|
|
||||||
"senha": "senha"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Quando o login responde com sucesso, o app usa a propriedade `token` do JSON de retorno. Como apoio,
|
|
||||||
também procura em campos comuns como `access_token`, `accessToken`, `bearer`, `bearerToken` ou `jwt`. O valor encontrado é inserido
|
|
||||||
automaticamente no campo **Bearer token**.
|
|
||||||
|
|
||||||
## Renderizar SQL
|
|
||||||
|
|
||||||
O botão **Renderizar SQL** executa a implementação local da query e mostra o SQL final no quadro preto.
|
|
||||||
|
|
||||||
Para valores usados diretamente no SQL, informe literais SQL. Exemplo:
|
|
||||||
|
|
||||||
```sql
|
|
||||||
'2026-05-05'
|
|
||||||
```
|
|
||||||
|
|
||||||
Para parâmetros de contexto, como `ctx_user_companies_for_module`, use uma lista SQL:
|
|
||||||
|
|
||||||
```sql
|
|
||||||
1,2,3
|
|
||||||
```
|
|
||||||
|
|
||||||
## Executar manifesto
|
|
||||||
|
|
||||||
O botão **Executar manifesto** chama a API remota usando os valores da tela.
|
|
||||||
|
|
||||||
A URL é montada no formato do Postman:
|
|
||||||
|
|
||||||
```text
|
|
||||||
{baseUrl}/api/manifest/modules/{modulo}/queries/{query}/execute
|
|
||||||
```
|
|
||||||
|
|
||||||
Com o `baseUrl` preenchido como:
|
|
||||||
|
|
||||||
```text
|
|
||||||
https://app-dono.vitruvio.com.br/api
|
|
||||||
```
|
|
||||||
|
|
||||||
a chamada fica:
|
|
||||||
|
|
||||||
```text
|
|
||||||
https://app-dono.vitruvio.com.br/api/api/manifest/modules/{modulo}/queries/{query}/execute
|
|
||||||
```
|
|
||||||
|
|
||||||
O quadro preto mostra somente o body retornado pela API, como no Postman. O status HTTP e a URL chamada aparecem abaixo dos botões.
|
|
||||||
|
|
||||||
## Parâmetros nulos
|
|
||||||
|
|
||||||
Para enviar `null` no JSON remoto, escreva:
|
|
||||||
|
|
||||||
```text
|
|
||||||
null
|
|
||||||
```
|
|
||||||
|
|
||||||
Exemplo para `flash-de-perdas` / `flash_categorias`:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"data_perda": "2026-05-05",
|
|
||||||
"codigo_categoria_pai": null,
|
|
||||||
"cod_empresa": null
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Na tela, preencha:
|
|
||||||
|
|
||||||
```text
|
|
||||||
data_perda = '2026-05-05'
|
|
||||||
codigo_categoria_pai = null
|
|
||||||
cod_empresa = null
|
|
||||||
```
|
|
||||||
|
|
||||||
## Botões auxiliares
|
|
||||||
|
|
||||||
- **Copiar**: copia o conteúdo atual do quadro preto.
|
|
||||||
- **Copiar resposta**: copia o conteúdo atual do quadro preto depois de uma chamada remota.
|
|
||||||
- **Rodar vet**: executa `npm run vet` para validar os módulos.
|
|
||||||
- **Recarregar**: recarrega a lista de módulos e queries.
|
|
||||||
|
|
||||||
## Observação
|
|
||||||
|
|
||||||
O teste local usa os arquivos atuais do projeto. A execução remota usa o manifesto publicado no ambiente remoto.
|
|
||||||
@@ -1,885 +0,0 @@
|
|||||||
import http from "node:http";
|
|
||||||
import { spawn } from "node:child_process";
|
|
||||||
import { pathToFileURL } from "node:url";
|
|
||||||
import path from "node:path";
|
|
||||||
import { readFile, readdir } from "node:fs/promises";
|
|
||||||
|
|
||||||
type ModuleDefinition = {
|
|
||||||
id: string;
|
|
||||||
label: string;
|
|
||||||
entrypoint: string;
|
|
||||||
queries: Record<string, { name: string; params: string[]; display: unknown }>;
|
|
||||||
implementations: Record<string, Record<string, (args: Record<string, unknown>) => { sql: string }>>;
|
|
||||||
schedules?: Record<string, unknown>;
|
|
||||||
};
|
|
||||||
|
|
||||||
const root = process.cwd();
|
|
||||||
const srcDir = path.join(root, "src");
|
|
||||||
const portArg = Number(process.argv.find((arg) => arg.startsWith("--port="))?.split("=")[1]);
|
|
||||||
const startPort = Number.isFinite(portArg) && portArg > 0 ? portArg : 4317;
|
|
||||||
|
|
||||||
async function findModuleFiles(dir: string): Promise<string[]> {
|
|
||||||
const entries = await readdir(dir, { withFileTypes: true });
|
|
||||||
const files = await Promise.all(
|
|
||||||
entries.map(async (entry) => {
|
|
||||||
const fullPath = path.join(dir, entry.name);
|
|
||||||
if (entry.isDirectory()) return findModuleFiles(fullPath);
|
|
||||||
if (entry.isFile() && entry.name.endsWith(".module.ts")) return [fullPath];
|
|
||||||
return [];
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
return files.flat();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function loadModules() {
|
|
||||||
const files = await findModuleFiles(srcDir);
|
|
||||||
const modules = await Promise.all(
|
|
||||||
files.map(async (file) => {
|
|
||||||
const imported = await import(pathToFileURL(file).href + `?t=${Date.now()}`);
|
|
||||||
const module = imported.default as ModuleDefinition;
|
|
||||||
return {
|
|
||||||
file: path.relative(root, file).replace(/\\/g, "/"),
|
|
||||||
module,
|
|
||||||
};
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
return modules.sort((a, b) => a.module.id.localeCompare(b.module.id));
|
|
||||||
}
|
|
||||||
|
|
||||||
function json(res: http.ServerResponse, status: number, data: unknown) {
|
|
||||||
res.writeHead(status, { "content-type": "application/json; charset=utf-8" });
|
|
||||||
res.end(JSON.stringify(data, null, 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
function text(res: http.ServerResponse, status: number, data: string) {
|
|
||||||
res.writeHead(status, { "content-type": "text/plain; charset=utf-8" });
|
|
||||||
res.end(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
function html(res: http.ServerResponse, status: number, data: string) {
|
|
||||||
res.writeHead(status, { "content-type": "text/html; charset=utf-8" });
|
|
||||||
res.end(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
function jpg(res: http.ServerResponse, status: number, data: Buffer) {
|
|
||||||
res.writeHead(status, {
|
|
||||||
"content-type": "image/jpeg",
|
|
||||||
"cache-control": "public, max-age=3600",
|
|
||||||
});
|
|
||||||
res.end(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function readJsonBody(req: http.IncomingMessage) {
|
|
||||||
const chunks: Buffer[] = [];
|
|
||||||
for await (const chunk of req) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
||||||
const raw = Buffer.concat(chunks).toString("utf8");
|
|
||||||
return raw ? JSON.parse(raw) : {};
|
|
||||||
}
|
|
||||||
|
|
||||||
function defaultArgs(params: string[]) {
|
|
||||||
const args: Record<string, string> = {
|
|
||||||
ctx_user_companies: "1,2,3",
|
|
||||||
ctx_user_companies_for_module: "1,2,3",
|
|
||||||
};
|
|
||||||
for (const param of params) args[param] = `:${param}`;
|
|
||||||
return args;
|
|
||||||
}
|
|
||||||
|
|
||||||
function vetProject() {
|
|
||||||
return new Promise<{ code: number | null; output: string }>((resolve) => {
|
|
||||||
const child = spawn(process.platform === "win32" ? "npm.cmd" : "npm", ["run", "vet"], {
|
|
||||||
cwd: root,
|
|
||||||
shell: false,
|
|
||||||
});
|
|
||||||
let output = "";
|
|
||||||
child.stdout.on("data", (chunk) => (output += chunk.toString()));
|
|
||||||
child.stderr.on("data", (chunk) => (output += chunk.toString()));
|
|
||||||
child.on("close", (code) => resolve({ code, output }));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseManifestValue(value: string) {
|
|
||||||
const trimmed = value.trim();
|
|
||||||
if (trimmed.toLowerCase() === "null") return null;
|
|
||||||
if (trimmed.toLowerCase() === "true") return true;
|
|
||||||
if (trimmed.toLowerCase() === "false") return false;
|
|
||||||
if (/^-?\d+(\.\d+)?$/.test(trimmed)) return Number(trimmed);
|
|
||||||
if (
|
|
||||||
(trimmed.startsWith("'") && trimmed.endsWith("'")) ||
|
|
||||||
(trimmed.startsWith('"') && trimmed.endsWith('"'))
|
|
||||||
) {
|
|
||||||
return trimmed.slice(1, -1);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function findBearerToken(value: unknown): string | null {
|
|
||||||
if (!value || typeof value !== "object") return null;
|
|
||||||
|
|
||||||
if (
|
|
||||||
"token" in value &&
|
|
||||||
typeof (value as Record<string, unknown>).token === "string" &&
|
|
||||||
(value as Record<string, string>).token.trim()
|
|
||||||
) {
|
|
||||||
return (value as Record<string, string>).token.replace(/^Bearer\s+/i, "").trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
const preferredKeys = new Set([
|
|
||||||
"access_token",
|
|
||||||
"accessToken",
|
|
||||||
"bearer",
|
|
||||||
"bearerToken",
|
|
||||||
"token",
|
|
||||||
"jwt",
|
|
||||||
]);
|
|
||||||
const preferredLowerKeys = new Set([...preferredKeys].map((key) => key.toLowerCase()));
|
|
||||||
|
|
||||||
const queue: unknown[] = [value];
|
|
||||||
while (queue.length) {
|
|
||||||
const current = queue.shift();
|
|
||||||
if (!current || typeof current !== "object") continue;
|
|
||||||
|
|
||||||
for (const [key, nested] of Object.entries(current)) {
|
|
||||||
if (typeof nested === "string" && preferredKeys.has(key)) {
|
|
||||||
return nested.replace(/^Bearer\s+/i, "").trim();
|
|
||||||
}
|
|
||||||
if (typeof nested === "string" && preferredLowerKeys.has(key.toLowerCase())) {
|
|
||||||
return nested.replace(/^Bearer\s+/i, "").trim();
|
|
||||||
}
|
|
||||||
if (nested && typeof nested === "object") queue.push(nested);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function postLogin(loginUrl: string, payload: Record<string, string>) {
|
|
||||||
const response = await fetch(loginUrl, {
|
|
||||||
method: "POST",
|
|
||||||
headers: { "content-type": "application/json" },
|
|
||||||
body: JSON.stringify(payload),
|
|
||||||
});
|
|
||||||
|
|
||||||
const textBody = await response.text();
|
|
||||||
let parsedBody: unknown = textBody;
|
|
||||||
try {
|
|
||||||
parsedBody = textBody ? JSON.parse(textBody) : null;
|
|
||||||
} catch {
|
|
||||||
parsedBody = textBody;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
ok: response.ok,
|
|
||||||
status: response.status,
|
|
||||||
bearerToken: findBearerToken(parsedBody),
|
|
||||||
responseBody: parsedBody,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
async function handleApi(req: http.IncomingMessage, res: http.ServerResponse) {
|
|
||||||
const url = new URL(req.url || "/", `http://${req.headers.host || "localhost"}`);
|
|
||||||
|
|
||||||
if (req.method === "GET" && url.pathname === "/api/modules") {
|
|
||||||
const modules = await loadModules();
|
|
||||||
return json(
|
|
||||||
res,
|
|
||||||
200,
|
|
||||||
modules.map(({ file, module }) => ({
|
|
||||||
file,
|
|
||||||
id: module.id,
|
|
||||||
label: module.label,
|
|
||||||
entrypoint: module.entrypoint,
|
|
||||||
queries: Object.entries(module.queries).map(([key, query]) => ({
|
|
||||||
key,
|
|
||||||
name: query.name,
|
|
||||||
params: query.params,
|
|
||||||
})),
|
|
||||||
systems: Object.keys(module.implementations || {}),
|
|
||||||
})),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.method === "GET" && url.pathname === "/assets/logo-davinti.jpg") {
|
|
||||||
const image = await readFile(path.join(root, "scripts", "assets", "logo-davinti.jpg"));
|
|
||||||
return jpg(res, 200, image);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.method === "GET" && url.pathname === "/api/docs") {
|
|
||||||
const markdown = await readFile(path.join(root, "scripts", "module-test-app.md"), "utf8");
|
|
||||||
return json(res, 200, { markdown });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.method === "POST" && url.pathname === "/api/render") {
|
|
||||||
const body = await readJsonBody(req);
|
|
||||||
const modules = await loadModules();
|
|
||||||
const found = modules.find(({ module }) => module.id === body.moduleId);
|
|
||||||
if (!found) return json(res, 404, { error: "Module not found" });
|
|
||||||
|
|
||||||
const query = found.module.queries[body.queryKey];
|
|
||||||
const implementation = found.module.implementations?.[body.system]?.[body.queryKey];
|
|
||||||
if (!query || !implementation) return json(res, 404, { error: "Query implementation not found" });
|
|
||||||
|
|
||||||
const args = { ...defaultArgs(query.params), ...(body.args || {}) };
|
|
||||||
const result = implementation(args);
|
|
||||||
return json(res, 200, { sql: result.sql, args });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.method === "POST" && url.pathname === "/api/login") {
|
|
||||||
const body = await readJsonBody(req);
|
|
||||||
const loginUrl = String(body.loginUrl || "");
|
|
||||||
const email = String(body.email || "");
|
|
||||||
const senha = String(body.senha || "");
|
|
||||||
|
|
||||||
if (!loginUrl || !email || !senha) {
|
|
||||||
return json(res, 400, { error: "loginUrl, email e senha sao obrigatorios" });
|
|
||||||
}
|
|
||||||
|
|
||||||
const attempts = [
|
|
||||||
{ email, senha },
|
|
||||||
{ email, password: senha },
|
|
||||||
];
|
|
||||||
const results = [];
|
|
||||||
|
|
||||||
for (const payload of attempts) {
|
|
||||||
const result = await postLogin(loginUrl, payload);
|
|
||||||
results.push(result);
|
|
||||||
if (result.ok && result.bearerToken) {
|
|
||||||
return json(res, 200, {
|
|
||||||
status: result.status,
|
|
||||||
bearerToken: result.bearerToken,
|
|
||||||
responseBody: result.responseBody,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const lastResult = results[results.length - 1];
|
|
||||||
const successfulWithoutToken = results.find((result) => result.ok);
|
|
||||||
if (successfulWithoutToken) {
|
|
||||||
return json(res, 502, {
|
|
||||||
error: "Login realizado, mas nao encontrei token no retorno",
|
|
||||||
status: successfulWithoutToken.status,
|
|
||||||
responseBody: successfulWithoutToken.responseBody,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return json(res, lastResult.status, {
|
|
||||||
error: "Login retornou erro HTTP " + lastResult.status,
|
|
||||||
status: lastResult.status,
|
|
||||||
responseBody: lastResult.responseBody,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.method === "POST" && url.pathname === "/api/manifest-execute") {
|
|
||||||
const body = await readJsonBody(req);
|
|
||||||
const baseUrl = String(body.baseUrl || "").replace(/\/+$/, "");
|
|
||||||
const moduleId = String(body.moduleId || "");
|
|
||||||
const queryKey = String(body.queryKey || "");
|
|
||||||
const clientId = String(body.clientId || "");
|
|
||||||
const bearerToken = String(body.bearerToken || "");
|
|
||||||
const params = body.params || {};
|
|
||||||
|
|
||||||
if (!baseUrl || !moduleId || !queryKey) {
|
|
||||||
return json(res, 400, { error: "baseUrl, moduleId e queryKey sao obrigatorios" });
|
|
||||||
}
|
|
||||||
|
|
||||||
const endpoint = `${baseUrl}/api/manifest/modules/${encodeURIComponent(moduleId)}/queries/${encodeURIComponent(queryKey)}/execute`;
|
|
||||||
const headers: Record<string, string> = {
|
|
||||||
"content-type": "application/json",
|
|
||||||
};
|
|
||||||
if (clientId) headers["x-client-id"] = clientId;
|
|
||||||
if (bearerToken) headers.authorization = `Bearer ${bearerToken}`;
|
|
||||||
|
|
||||||
const response = await fetch(endpoint, {
|
|
||||||
method: "POST",
|
|
||||||
headers,
|
|
||||||
body: JSON.stringify(params),
|
|
||||||
});
|
|
||||||
|
|
||||||
const textBody = await response.text();
|
|
||||||
let parsedBody: unknown = textBody;
|
|
||||||
try {
|
|
||||||
parsedBody = textBody ? JSON.parse(textBody) : null;
|
|
||||||
} catch {
|
|
||||||
parsedBody = textBody;
|
|
||||||
}
|
|
||||||
|
|
||||||
return json(res, 200, {
|
|
||||||
status: response.status,
|
|
||||||
ok: response.ok,
|
|
||||||
url: endpoint,
|
|
||||||
requestBody: params,
|
|
||||||
responseBody: parsedBody,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.method === "POST" && url.pathname === "/api/vet") {
|
|
||||||
const result = await vetProject();
|
|
||||||
return json(res, result.code === 0 ? 200 : 500, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const page = String.raw`<!doctype html>
|
|
||||||
<html lang="pt-BR">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<title>App Dono Modulos - Teste Local</title>
|
|
||||||
<style>
|
|
||||||
:root {
|
|
||||||
color-scheme: light;
|
|
||||||
font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
|
|
||||||
--ink: #17212f;
|
|
||||||
--muted: #637186;
|
|
||||||
--line: #dce5ef;
|
|
||||||
--surface: #ffffff;
|
|
||||||
--surface-soft: #f5f8fb;
|
|
||||||
--brand-navy: #0f2b46;
|
|
||||||
--brand-blue: #0b74b8;
|
|
||||||
--brand-cyan: #14a8c9;
|
|
||||||
--brand-orange: #f28c28;
|
|
||||||
--brand-green: #22a06b;
|
|
||||||
--code-bg: #0b1726;
|
|
||||||
--code-border: #16314f;
|
|
||||||
}
|
|
||||||
* { box-sizing: border-box; }
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
min-height: 100vh;
|
|
||||||
background:
|
|
||||||
linear-gradient(180deg, rgba(11, 116, 184, 0.09), transparent 290px),
|
|
||||||
#eef4f8;
|
|
||||||
color: var(--ink);
|
|
||||||
}
|
|
||||||
header {
|
|
||||||
background: var(--brand-navy);
|
|
||||||
color: white;
|
|
||||||
border-bottom: 4px solid var(--brand-orange);
|
|
||||||
box-shadow: 0 16px 40px rgba(15, 43, 70, 0.18);
|
|
||||||
}
|
|
||||||
.topbar {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
gap: 18px;
|
|
||||||
max-width: 1440px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 18px 22px;
|
|
||||||
}
|
|
||||||
.brand {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 14px;
|
|
||||||
min-width: 0;
|
|
||||||
}
|
|
||||||
.brand-logo {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
width: 170px;
|
|
||||||
height: 50px;
|
|
||||||
padding: 7px 9px;
|
|
||||||
border-radius: 8px;
|
|
||||||
background: #ffffff;
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.72);
|
|
||||||
box-shadow: 0 10px 24px rgba(3, 18, 33, 0.18);
|
|
||||||
}
|
|
||||||
.brand-logo img {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.brand-title {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 2px;
|
|
||||||
min-width: 0;
|
|
||||||
}
|
|
||||||
.brand-title strong {
|
|
||||||
font-size: 18px;
|
|
||||||
letter-spacing: 0;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.brand-title span,
|
|
||||||
.environment {
|
|
||||||
color: #c9d8e8;
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
.environment {
|
|
||||||
padding: 8px 10px;
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.22);
|
|
||||||
border-radius: 8px;
|
|
||||||
background: rgba(255, 255, 255, 0.08);
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
main {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: minmax(330px, 410px) minmax(0, 1fr);
|
|
||||||
gap: 18px;
|
|
||||||
max-width: 1440px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 18px;
|
|
||||||
}
|
|
||||||
section {
|
|
||||||
background: var(--surface);
|
|
||||||
border: 1px solid var(--line);
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 12px 34px rgba(15, 43, 70, 0.08);
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
padding: 16px;
|
|
||||||
align-self: start;
|
|
||||||
}
|
|
||||||
.output {
|
|
||||||
padding: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
min-width: 0;
|
|
||||||
}
|
|
||||||
.panel-heading {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
gap: 12px;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
padding-bottom: 12px;
|
|
||||||
border-bottom: 1px solid var(--line);
|
|
||||||
}
|
|
||||||
.panel-heading h1 {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 18px;
|
|
||||||
line-height: 1.2;
|
|
||||||
letter-spacing: 0;
|
|
||||||
}
|
|
||||||
.panel-heading span {
|
|
||||||
color: var(--muted);
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.group {
|
|
||||||
margin-top: 14px;
|
|
||||||
padding-top: 14px;
|
|
||||||
border-top: 1px solid #edf2f7;
|
|
||||||
}
|
|
||||||
.group:first-of-type {
|
|
||||||
margin-top: 0;
|
|
||||||
padding-top: 0;
|
|
||||||
border-top: 0;
|
|
||||||
}
|
|
||||||
.group-title {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 8px;
|
|
||||||
margin: 0 0 10px;
|
|
||||||
color: var(--brand-navy);
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 800;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0;
|
|
||||||
}
|
|
||||||
.group-title::before {
|
|
||||||
content: "";
|
|
||||||
width: 8px;
|
|
||||||
height: 8px;
|
|
||||||
border-radius: 2px;
|
|
||||||
background: var(--brand-orange);
|
|
||||||
}
|
|
||||||
label {
|
|
||||||
display: block;
|
|
||||||
margin: 10px 0 6px;
|
|
||||||
color: #435166;
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 800;
|
|
||||||
}
|
|
||||||
select, input, textarea, button {
|
|
||||||
width: 100%;
|
|
||||||
font: inherit;
|
|
||||||
}
|
|
||||||
select, input, textarea {
|
|
||||||
border: 1px solid #cbd8e6;
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 10px 11px;
|
|
||||||
background: white;
|
|
||||||
color: var(--ink);
|
|
||||||
outline: none;
|
|
||||||
transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
|
|
||||||
}
|
|
||||||
select:focus, input:focus, textarea:focus {
|
|
||||||
border-color: var(--brand-blue);
|
|
||||||
box-shadow: 0 0 0 3px rgba(11, 116, 184, 0.16);
|
|
||||||
}
|
|
||||||
input::placeholder { color: #9aa8b8; }
|
|
||||||
button {
|
|
||||||
min-height: 42px;
|
|
||||||
border: 0;
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 10px 12px;
|
|
||||||
background: var(--brand-blue);
|
|
||||||
color: white;
|
|
||||||
font-weight: 800;
|
|
||||||
cursor: pointer;
|
|
||||||
box-shadow: 0 8px 18px rgba(11, 116, 184, 0.2);
|
|
||||||
transition: transform 120ms ease, filter 120ms ease, box-shadow 120ms ease;
|
|
||||||
}
|
|
||||||
button:hover {
|
|
||||||
filter: brightness(1.05);
|
|
||||||
transform: translateY(-1px);
|
|
||||||
box-shadow: 0 10px 22px rgba(11, 116, 184, 0.24);
|
|
||||||
}
|
|
||||||
button:active {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
button.secondary {
|
|
||||||
background: #31465e;
|
|
||||||
box-shadow: 0 8px 18px rgba(49, 70, 94, 0.16);
|
|
||||||
}
|
|
||||||
button.accent {
|
|
||||||
background: var(--brand-orange);
|
|
||||||
box-shadow: 0 8px 18px rgba(242, 140, 40, 0.22);
|
|
||||||
}
|
|
||||||
.row {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
||||||
gap: 8px;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
.params {
|
|
||||||
display: grid;
|
|
||||||
gap: 8px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 8px;
|
|
||||||
background: var(--surface-soft);
|
|
||||||
border: 1px solid #e3ebf3;
|
|
||||||
}
|
|
||||||
.params label {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
.hint {
|
|
||||||
color: var(--muted);
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 1.45;
|
|
||||||
margin-top: 8px;
|
|
||||||
overflow-wrap: anywhere;
|
|
||||||
}
|
|
||||||
.status {
|
|
||||||
margin-top: 12px;
|
|
||||||
padding: 10px 12px;
|
|
||||||
min-height: 38px;
|
|
||||||
border-radius: 8px;
|
|
||||||
background: #eef8f3;
|
|
||||||
border: 1px solid #ccebdd;
|
|
||||||
color: #22543d;
|
|
||||||
white-space: pre-wrap;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 1.45;
|
|
||||||
}
|
|
||||||
pre {
|
|
||||||
height: calc(100vh - 116px);
|
|
||||||
min-height: 560px;
|
|
||||||
overflow: auto;
|
|
||||||
margin: 0;
|
|
||||||
padding: 18px;
|
|
||||||
border-top: 4px solid var(--brand-cyan);
|
|
||||||
background:
|
|
||||||
linear-gradient(180deg, rgba(20, 168, 201, 0.09), transparent 160px),
|
|
||||||
var(--code-bg);
|
|
||||||
color: #d7f7ed;
|
|
||||||
font-family: "Cascadia Code", Consolas, "Courier New", monospace;
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 1.55;
|
|
||||||
tab-size: 2;
|
|
||||||
}
|
|
||||||
@media (max-width: 980px) {
|
|
||||||
main { grid-template-columns: 1fr; }
|
|
||||||
pre { height: auto; min-height: 460px; }
|
|
||||||
}
|
|
||||||
@media (max-width: 620px) {
|
|
||||||
.topbar { align-items: flex-start; flex-direction: column; }
|
|
||||||
.brand { align-items: flex-start; flex-direction: column; }
|
|
||||||
.brand-logo { width: 184px; }
|
|
||||||
main { padding: 12px; }
|
|
||||||
.row { grid-template-columns: 1fr; }
|
|
||||||
.environment { white-space: normal; }
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div class="topbar">
|
|
||||||
<div class="brand">
|
|
||||||
<div class="brand-logo">
|
|
||||||
<img src="/assets/logo-davinti.jpg" alt="Davinti solucoes em tecnologia" />
|
|
||||||
</div>
|
|
||||||
<div class="brand-title">
|
|
||||||
<strong>App Dono Modulos</strong>
|
|
||||||
<span>Teste local de queries e manifesto remoto</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="environment">Vitruvio manifest tools</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<main>
|
|
||||||
<section class="controls">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h1>Modulo de teste</h1>
|
|
||||||
<span>Local + remoto</span>
|
|
||||||
</div>
|
|
||||||
<div class="group">
|
|
||||||
<p class="group-title">Selecao</p>
|
|
||||||
<label>Modulo</label>
|
|
||||||
<select id="module"></select>
|
|
||||||
<label>Query</label>
|
|
||||||
<select id="query"></select>
|
|
||||||
<label>Sistema</label>
|
|
||||||
<select id="system"></select>
|
|
||||||
<div class="hint">Os valores sao expressoes SQL cruas. Para testar literal de data, use aspas: '2026-05-08'.</div>
|
|
||||||
</div>
|
|
||||||
<div class="group">
|
|
||||||
<p class="group-title">Autenticacao</p>
|
|
||||||
<label>Login remoto</label>
|
|
||||||
<input id="loginUrl" value="https://app-dono.vitruvio.com.br/api/login" />
|
|
||||||
<div class="row">
|
|
||||||
<input id="loginEmail" type="email" placeholder="email" autocomplete="username" />
|
|
||||||
<input id="loginPassword" type="password" placeholder="senha" autocomplete="current-password" />
|
|
||||||
</div>
|
|
||||||
<button id="login" class="accent" style="margin-top: 8px;">Gerar bearer</button>
|
|
||||||
<label>Bearer token</label>
|
|
||||||
<input id="bearerToken" placeholder="eyJ..." />
|
|
||||||
<label>Client ID</label>
|
|
||||||
<input id="clientId" placeholder="019d..." />
|
|
||||||
</div>
|
|
||||||
<div class="group">
|
|
||||||
<p class="group-title">Parametros</p>
|
|
||||||
<div id="params" class="params"></div>
|
|
||||||
</div>
|
|
||||||
<div class="group">
|
|
||||||
<p class="group-title">Manifesto</p>
|
|
||||||
<label>Manifesto remoto</label>
|
|
||||||
<input id="baseUrl" value="https://app-dono.vitruvio.com.br/api" />
|
|
||||||
<div class="hint" id="remoteUrl"></div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<button id="render">Renderizar SQL</button>
|
|
||||||
<button id="copy" class="secondary">Copiar</button>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<button id="executeManifest">Executar manifesto</button>
|
|
||||||
<button id="copyResponse" class="secondary">Copiar resposta</button>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<button id="vet" class="secondary">Rodar vet</button>
|
|
||||||
<button id="reload" class="secondary">Recarregar</button>
|
|
||||||
</div>
|
|
||||||
<div id="status" class="status"></div>
|
|
||||||
</section>
|
|
||||||
<section class="output">
|
|
||||||
<pre id="sql"></pre>
|
|
||||||
</section>
|
|
||||||
</main>
|
|
||||||
<script>
|
|
||||||
let modules = [];
|
|
||||||
const els = {
|
|
||||||
module: document.getElementById("module"),
|
|
||||||
query: document.getElementById("query"),
|
|
||||||
system: document.getElementById("system"),
|
|
||||||
params: document.getElementById("params"),
|
|
||||||
sql: document.getElementById("sql"),
|
|
||||||
status: document.getElementById("status"),
|
|
||||||
loginUrl: document.getElementById("loginUrl"),
|
|
||||||
loginEmail: document.getElementById("loginEmail"),
|
|
||||||
loginPassword: document.getElementById("loginPassword"),
|
|
||||||
baseUrl: document.getElementById("baseUrl"),
|
|
||||||
bearerToken: document.getElementById("bearerToken"),
|
|
||||||
clientId: document.getElementById("clientId"),
|
|
||||||
remoteUrl: document.getElementById("remoteUrl"),
|
|
||||||
};
|
|
||||||
|
|
||||||
async function api(path, options) {
|
|
||||||
const res = await fetch(path, options);
|
|
||||||
const data = await res.json();
|
|
||||||
if (!res.ok) {
|
|
||||||
const detail = data.responseBody ? "\\n" + JSON.stringify(data.responseBody, null, 2) : "";
|
|
||||||
throw new Error((data.error || data.output || "Erro") + detail);
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
function selectedModule() { return modules.find(m => m.id === els.module.value); }
|
|
||||||
function selectedQuery() { return selectedModule()?.queries.find(q => q.key === els.query.value); }
|
|
||||||
|
|
||||||
function fillSelect(select, items, valueFn, labelFn) {
|
|
||||||
select.innerHTML = "";
|
|
||||||
for (const item of items) {
|
|
||||||
const opt = document.createElement("option");
|
|
||||||
opt.value = valueFn(item);
|
|
||||||
opt.textContent = labelFn(item);
|
|
||||||
select.appendChild(opt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function refreshQueries() {
|
|
||||||
const mod = selectedModule();
|
|
||||||
fillSelect(els.query, mod?.queries || [], q => q.key, q => q.key + " - " + q.name);
|
|
||||||
fillSelect(els.system, mod?.systems || [], s => s, s => s);
|
|
||||||
refreshParams();
|
|
||||||
}
|
|
||||||
|
|
||||||
function refreshParams() {
|
|
||||||
const query = selectedQuery();
|
|
||||||
els.params.innerHTML = "";
|
|
||||||
const params = [...(query?.params || []), "ctx_user_companies_for_module", "ctx_user_companies"];
|
|
||||||
for (const param of params) {
|
|
||||||
const wrap = document.createElement("div");
|
|
||||||
const label = document.createElement("label");
|
|
||||||
const input = document.createElement("input");
|
|
||||||
label.textContent = param;
|
|
||||||
input.name = param;
|
|
||||||
input.value = param.startsWith("ctx_") ? "1,2,3" : ":" + param;
|
|
||||||
wrap.append(label, input);
|
|
||||||
els.params.appendChild(wrap);
|
|
||||||
}
|
|
||||||
refreshRemoteUrl();
|
|
||||||
}
|
|
||||||
|
|
||||||
function refreshRemoteUrl() {
|
|
||||||
const baseUrl = String(els.baseUrl.value || "").replace(/\/+$/, "");
|
|
||||||
els.remoteUrl.textContent = baseUrl + "/api/manifest/modules/" + els.module.value + "/queries/" + els.query.value + "/execute";
|
|
||||||
}
|
|
||||||
|
|
||||||
function collectArgs() {
|
|
||||||
return Object.fromEntries([...els.params.querySelectorAll("input")].map(input => [input.name, input.value]));
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseManifestValue(value) {
|
|
||||||
const trimmed = String(value).trim();
|
|
||||||
if (trimmed.toLowerCase() === "null") return null;
|
|
||||||
if (trimmed.toLowerCase() === "true") return true;
|
|
||||||
if (trimmed.toLowerCase() === "false") return false;
|
|
||||||
if (/^-?\d+(\.\d+)?$/.test(trimmed)) return Number(trimmed);
|
|
||||||
if ((trimmed.startsWith("'") && trimmed.endsWith("'")) || (trimmed.startsWith('"') && trimmed.endsWith('"'))) {
|
|
||||||
return trimmed.slice(1, -1);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function collectManifestParams() {
|
|
||||||
const query = selectedQuery();
|
|
||||||
const allArgs = collectArgs();
|
|
||||||
return Object.fromEntries((query?.params || []).map(param => [param, parseManifestValue(allArgs[param] || "")]));
|
|
||||||
}
|
|
||||||
|
|
||||||
async function render() {
|
|
||||||
els.status.textContent = "Renderizando...";
|
|
||||||
const data = await api("/api/render", {
|
|
||||||
method: "POST",
|
|
||||||
headers: { "content-type": "application/json" },
|
|
||||||
body: JSON.stringify({
|
|
||||||
moduleId: els.module.value,
|
|
||||||
queryKey: els.query.value,
|
|
||||||
system: els.system.value,
|
|
||||||
args: collectArgs(),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
els.sql.textContent = data.sql || "";
|
|
||||||
els.status.textContent = "OK";
|
|
||||||
}
|
|
||||||
|
|
||||||
async function login() {
|
|
||||||
els.status.textContent = "Gerando bearer...";
|
|
||||||
const data = await api("/api/login", {
|
|
||||||
method: "POST",
|
|
||||||
headers: { "content-type": "application/json" },
|
|
||||||
body: JSON.stringify({
|
|
||||||
loginUrl: els.loginUrl.value,
|
|
||||||
email: els.loginEmail.value,
|
|
||||||
senha: els.loginPassword.value,
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
els.bearerToken.value = data.bearerToken || "";
|
|
||||||
els.status.textContent = "Bearer gerado e preenchido";
|
|
||||||
}
|
|
||||||
|
|
||||||
async function executeManifest() {
|
|
||||||
els.status.textContent = "Executando manifesto...";
|
|
||||||
const data = await api("/api/manifest-execute", {
|
|
||||||
method: "POST",
|
|
||||||
headers: { "content-type": "application/json" },
|
|
||||||
body: JSON.stringify({
|
|
||||||
baseUrl: els.baseUrl.value,
|
|
||||||
bearerToken: els.bearerToken.value,
|
|
||||||
clientId: els.clientId.value,
|
|
||||||
moduleId: els.module.value,
|
|
||||||
queryKey: els.query.value,
|
|
||||||
params: collectManifestParams(),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
const body = data.responseBody;
|
|
||||||
els.sql.textContent = typeof body === "string" ? body : JSON.stringify(body, null, 2);
|
|
||||||
els.status.textContent = (data.ok ? "Manifesto executado" : "Manifesto retornou erro HTTP " + data.status)
|
|
||||||
+ "\\nHTTP " + data.status
|
|
||||||
+ "\\n" + data.url;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function load() {
|
|
||||||
modules = await api("/api/modules");
|
|
||||||
fillSelect(els.module, modules, m => m.id, m => m.id + " (" + m.file + ")");
|
|
||||||
refreshQueries();
|
|
||||||
const docs = await api("/api/docs");
|
|
||||||
els.sql.textContent = docs.markdown;
|
|
||||||
els.status.textContent = "Documentacao carregada";
|
|
||||||
}
|
|
||||||
|
|
||||||
els.module.addEventListener("change", refreshQueries);
|
|
||||||
els.query.addEventListener("change", refreshParams);
|
|
||||||
els.baseUrl.addEventListener("input", refreshRemoteUrl);
|
|
||||||
document.getElementById("render").addEventListener("click", render);
|
|
||||||
document.getElementById("login").addEventListener("click", login);
|
|
||||||
document.getElementById("reload").addEventListener("click", load);
|
|
||||||
document.getElementById("copy").addEventListener("click", async () => {
|
|
||||||
await navigator.clipboard.writeText(els.sql.textContent);
|
|
||||||
els.status.textContent = "SQL copiada";
|
|
||||||
});
|
|
||||||
document.getElementById("executeManifest").addEventListener("click", executeManifest);
|
|
||||||
document.getElementById("copyResponse").addEventListener("click", async () => {
|
|
||||||
await navigator.clipboard.writeText(els.sql.textContent);
|
|
||||||
els.status.textContent = "Resposta copiada";
|
|
||||||
});
|
|
||||||
document.getElementById("vet").addEventListener("click", async () => {
|
|
||||||
els.status.textContent = "Rodando vet...";
|
|
||||||
const data = await api("/api/vet", { method: "POST" });
|
|
||||||
els.status.textContent = data.output;
|
|
||||||
});
|
|
||||||
|
|
||||||
load().catch(err => els.status.textContent = err.message);
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>`;
|
|
||||||
|
|
||||||
const server = http.createServer(async (req, res) => {
|
|
||||||
try {
|
|
||||||
const handled = await handleApi(req, res);
|
|
||||||
if (handled !== false) return;
|
|
||||||
if (req.method === "GET" && (req.url === "/" || req.url?.startsWith("/?"))) {
|
|
||||||
return html(res, 200, page);
|
|
||||||
}
|
|
||||||
return text(res, 404, "Not found");
|
|
||||||
} catch (error) {
|
|
||||||
return json(res, 500, { error: error instanceof Error ? error.message : String(error) });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function listen(port: number) {
|
|
||||||
server.once("error", (error: NodeJS.ErrnoException) => {
|
|
||||||
if (error.code === "EADDRINUSE") listen(port + 1);
|
|
||||||
else throw error;
|
|
||||||
});
|
|
||||||
server.listen(port, () => {
|
|
||||||
const address = server.address();
|
|
||||||
const actualPort = typeof address === "object" && address ? address.port : port;
|
|
||||||
console.log(`Module test app: http://localhost:${actualPort}`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
listen(startPort);
|
|
||||||
+75
-1326
File diff suppressed because it is too large
Load Diff
@@ -1,671 +0,0 @@
|
|||||||
import { createModuleFactory, createSchedule } from "@davinti/jeff";
|
|
||||||
|
|
||||||
const moduleFactory = createModuleFactory(["C5", "C5_big", "C5_mambo"]);
|
|
||||||
|
|
||||||
export default moduleFactory
|
|
||||||
.createModule({
|
|
||||||
id: "flash-de-contribuicao",
|
|
||||||
description: "Flash de Contribuição",
|
|
||||||
label: "Flash de Contribuição",
|
|
||||||
icon: "bar-chart",
|
|
||||||
order: 2,
|
|
||||||
queries: {
|
|
||||||
flashContribuicao: {
|
|
||||||
name: "Flash de Contribuição",
|
|
||||||
display: {
|
|
||||||
type: "flash",
|
|
||||||
settings: {
|
|
||||||
group_column: "canalapp",
|
|
||||||
total_indicator_column: "is_total",
|
|
||||||
null_label_key: "Geral",
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
title_column: "canalapp",
|
|
||||||
value_column: "contribuicao_dia",
|
|
||||||
value_format: "currency",
|
|
||||||
},
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
label: "Meta Mês",
|
|
||||||
column: "meta_mes",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Mês Atual",
|
|
||||||
column: "mes_atual",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_mes_atual",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_atual",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Mês Anterior",
|
|
||||||
column: "mes_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_mes_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_mes_anterior",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Ano Anterior",
|
|
||||||
column: "ano_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_ano_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_ano_anterior",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
params: ["data_contribuicao"],
|
|
||||||
},
|
|
||||||
flash_categorias: {
|
|
||||||
name: "Flash de Contribuição por Categorias",
|
|
||||||
display: {
|
|
||||||
type: "flash",
|
|
||||||
settings: {
|
|
||||||
group_column: "categoriaapp",
|
|
||||||
total_indicator_column: "is_total",
|
|
||||||
null_label_key: "Geral",
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
title_column: "categoriaapp",
|
|
||||||
value_column: "contribuicao_dia",
|
|
||||||
value_format: "currency",
|
|
||||||
},
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
label: "Meta Mês",
|
|
||||||
column: "meta_mes",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Mês Atual",
|
|
||||||
column: "mes_atual",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_mes_atual",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_atual",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Mês Anterior",
|
|
||||||
column: "mes_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_mes_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_mes_anterior",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Ano Anterior",
|
|
||||||
column: "ano_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_ano_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_ano_anterior",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
params: ["data_contribuicao", "codigo_categoria_pai", "cod_empresa"],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
entrypoint: "flashContribuicao" as "flashContribuicao" | "flash_categorias",
|
|
||||||
})
|
|
||||||
.withImplementations({
|
|
||||||
C5: {
|
|
||||||
flashContribuicao: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
SELECT
|
|
||||||
'Lojas' AS categoriaapp,
|
|
||||||
x.codigo AS cod_empresa,
|
|
||||||
x.nomeempresaapp AS nomeempresaapp,
|
|
||||||
CASE
|
|
||||||
WHEN GROUPING(x.codigo) = 1 THEN 1
|
|
||||||
ELSE 0
|
|
||||||
END AS is_total,
|
|
||||||
SUM(CASE WHEN x.data_referencia = TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD') THEN x.vlr_contribuicao ELSE 0 END) AS contribuicao_dia,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) AS mes_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS dif_mes_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS dif_ano_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_ano_anterior
|
|
||||||
FROM
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
n.codigo,
|
|
||||||
n.nome AS nomeempresaapp,
|
|
||||||
r.data_referencia,
|
|
||||||
r.valor_meta_efetiva,
|
|
||||||
r.vlr_contribuicao,
|
|
||||||
CASE
|
|
||||||
WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD')
|
|
||||||
THEN 'ATUAL'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), -1)
|
|
||||||
THEN 'MES_ANTERIOR'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), -12)
|
|
||||||
THEN 'ANO_ANTERIOR'
|
|
||||||
END AS periodo
|
|
||||||
FROM
|
|
||||||
tb_flash_nodo_resumo_contribuicao r
|
|
||||||
JOIN tb_flash_nodo n
|
|
||||||
ON
|
|
||||||
n.id_nodo = r.id_nodo
|
|
||||||
WHERE
|
|
||||||
n.tipo_nodo = 'EMPRESA'
|
|
||||||
and (n.cod_empresa in (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD')
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), -1)
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), -12)
|
|
||||||
)
|
|
||||||
) x
|
|
||||||
GROUP BY
|
|
||||||
GROUPING SETS (
|
|
||||||
(x.codigo, x.nomeempresaapp),
|
|
||||||
()
|
|
||||||
)
|
|
||||||
`,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
flash_categorias: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
WITH params AS (
|
|
||||||
SELECT
|
|
||||||
TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD') AS data_contribuicao,
|
|
||||||
${args.codigo_categoria_pai} AS codigo_categoria_pai,
|
|
||||||
${args.cod_empresa} AS cod_empresa
|
|
||||||
FROM dual
|
|
||||||
),
|
|
||||||
nodo_pai_param AS (
|
|
||||||
SELECT n.*
|
|
||||||
FROM tb_flash_nodo n
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE p.codigo_categoria_pai IS NOT NULL
|
|
||||||
AND n.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n.codigo = p.codigo_categoria_pai
|
|
||||||
AND (n.cod_empresa IN (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
),
|
|
||||||
nodos_filtrados AS (
|
|
||||||
SELECT filho.*
|
|
||||||
FROM tb_flash_nodo filho
|
|
||||||
JOIN nodo_pai_param pai_param
|
|
||||||
ON pai_param.id_nodo = filho.id_nodo_pai
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE filho.tipo_nodo IN ('CATEGORIA', 'PRODUTO')
|
|
||||||
AND filho.ativo = 'S'
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR filho.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
|
|
||||||
UNION ALL
|
|
||||||
|
|
||||||
SELECT n.*
|
|
||||||
FROM tb_flash_nodo n
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE p.codigo_categoria_pai IS NULL
|
|
||||||
AND n.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n.ativo = 'S'
|
|
||||||
AND (n.cod_empresa IN (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
AND n.nivel = (
|
|
||||||
SELECT MIN(n2.nivel)
|
|
||||||
FROM tb_flash_nodo n2
|
|
||||||
WHERE n2.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n2.ativo = 'S'
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n2.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
x.tipo_nodo AS categoriaapp,
|
|
||||||
x.codigo AS cod_empresa,
|
|
||||||
x.nomeempresaapp AS nomeempresaapp,
|
|
||||||
CASE
|
|
||||||
WHEN GROUPING(x.codigo) = 1 THEN 1
|
|
||||||
ELSE 0
|
|
||||||
END AS is_total,
|
|
||||||
SUM(CASE WHEN x.data_referencia = TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD') THEN x.vlr_contribuicao ELSE 0 END) AS contribuicao_dia,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) AS mes_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS dif_mes_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS dif_ano_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_ano_anterior
|
|
||||||
FROM (
|
|
||||||
SELECT
|
|
||||||
cat.codigo AS codigo,
|
|
||||||
cat.nome AS nomeempresaapp,
|
|
||||||
cat.tipo_nodo,
|
|
||||||
r.data_referencia,
|
|
||||||
r.valor_meta_efetiva,
|
|
||||||
r.vlr_contribuicao,
|
|
||||||
CASE
|
|
||||||
WHEN r.data_referencia BETWEEN TRUNC(p.data_contribuicao, 'MM') AND p.data_contribuicao
|
|
||||||
THEN 'ATUAL'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_contribuicao, 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(p.data_contribuicao, -1)
|
|
||||||
THEN 'MES_ANTERIOR'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_contribuicao, 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(p.data_contribuicao, -12)
|
|
||||||
THEN 'ANO_ANTERIOR'
|
|
||||||
END AS periodo
|
|
||||||
FROM tb_flash_nodo_resumo_contribuicao r
|
|
||||||
JOIN nodos_filtrados cat
|
|
||||||
ON cat.id_nodo = r.id_nodo
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE (
|
|
||||||
r.data_referencia BETWEEN TRUNC(p.data_contribuicao, 'MM') AND p.data_contribuicao
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_contribuicao, 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(p.data_contribuicao, -1)
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_contribuicao, 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(p.data_contribuicao, -12)
|
|
||||||
)
|
|
||||||
) x
|
|
||||||
GROUP BY
|
|
||||||
GROUPING SETS (
|
|
||||||
(x.codigo, x.nomeempresaapp, x.tipo_nodo),
|
|
||||||
()
|
|
||||||
)
|
|
||||||
ORDER BY
|
|
||||||
is_total,
|
|
||||||
nomeempresaapp
|
|
||||||
`,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
C5_big: {
|
|
||||||
flashContribuicao: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
SELECT
|
|
||||||
'Lojas' AS categoriaapp,
|
|
||||||
x.codigo AS cod_empresa,
|
|
||||||
x.nomeempresaapp AS nomeempresaapp,
|
|
||||||
CASE
|
|
||||||
WHEN GROUPING(x.codigo) = 1 THEN 1
|
|
||||||
ELSE 0
|
|
||||||
END AS is_total,
|
|
||||||
SUM(CASE WHEN x.data_referencia = TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD') THEN x.vlr_contribuicao ELSE 0 END) AS contribuicao_dia,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) AS mes_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS dif_mes_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS dif_ano_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_ano_anterior
|
|
||||||
FROM
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
n.codigo,
|
|
||||||
n.nome AS nomeempresaapp,
|
|
||||||
r.data_referencia,
|
|
||||||
r.valor_meta_efetiva,
|
|
||||||
r.vlr_contribuicao,
|
|
||||||
CASE
|
|
||||||
WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD')
|
|
||||||
THEN 'ATUAL'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), -1)
|
|
||||||
THEN 'MES_ANTERIOR'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), -12)
|
|
||||||
THEN 'ANO_ANTERIOR'
|
|
||||||
END AS periodo
|
|
||||||
FROM
|
|
||||||
tb_flash_nodo_resumo_contribuicao r
|
|
||||||
JOIN tb_flash_nodo n
|
|
||||||
ON
|
|
||||||
n.id_nodo = r.id_nodo
|
|
||||||
WHERE
|
|
||||||
n.tipo_nodo = 'EMPRESA'
|
|
||||||
and (n.cod_empresa in (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD')
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), -1)
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD'), -12)
|
|
||||||
)
|
|
||||||
) x
|
|
||||||
GROUP BY
|
|
||||||
GROUPING SETS (
|
|
||||||
(x.codigo, x.nomeempresaapp),
|
|
||||||
()
|
|
||||||
)
|
|
||||||
`,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
flash_categorias: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
WITH params AS (
|
|
||||||
SELECT
|
|
||||||
TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD') AS data_contribuicao,
|
|
||||||
${args.codigo_categoria_pai} AS codigo_categoria_pai,
|
|
||||||
${args.cod_empresa} AS cod_empresa
|
|
||||||
FROM dual
|
|
||||||
),
|
|
||||||
nodo_pai_param AS (
|
|
||||||
SELECT n.*
|
|
||||||
FROM tb_flash_nodo n
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE p.codigo_categoria_pai IS NOT NULL
|
|
||||||
AND n.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n.codigo = p.codigo_categoria_pai
|
|
||||||
AND (n.cod_empresa IN (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
),
|
|
||||||
nodos_filtrados AS (
|
|
||||||
SELECT filho.*
|
|
||||||
FROM tb_flash_nodo filho
|
|
||||||
JOIN nodo_pai_param pai_param
|
|
||||||
ON pai_param.id_nodo = filho.id_nodo_pai
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE filho.tipo_nodo IN ('CATEGORIA', 'PRODUTO')
|
|
||||||
AND filho.ativo = 'S'
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR filho.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
|
|
||||||
UNION ALL
|
|
||||||
|
|
||||||
SELECT n.*
|
|
||||||
FROM tb_flash_nodo n
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE p.codigo_categoria_pai IS NULL
|
|
||||||
AND n.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n.ativo = 'S'
|
|
||||||
AND (n.cod_empresa IN (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
AND n.nivel = (
|
|
||||||
SELECT MIN(n2.nivel)
|
|
||||||
FROM tb_flash_nodo n2
|
|
||||||
WHERE n2.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n2.ativo = 'S'
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n2.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
x.tipo_nodo AS categoriaapp,
|
|
||||||
x.codigo AS cod_empresa,
|
|
||||||
x.nomeempresaapp AS nomeempresaapp,
|
|
||||||
CASE
|
|
||||||
WHEN GROUPING(x.codigo) = 1 THEN 1
|
|
||||||
ELSE 0
|
|
||||||
END AS is_total,
|
|
||||||
SUM(CASE WHEN x.data_referencia = TO_DATE(${args.data_contribuicao}, 'YYYY-MM-DD') THEN x.vlr_contribuicao ELSE 0 END) AS contribuicao_dia,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) AS mes_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS dif_mes_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) AS dif_ano_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.vlr_contribuicao ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.vlr_contribuicao ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_ano_anterior
|
|
||||||
FROM (
|
|
||||||
SELECT
|
|
||||||
cat.codigo AS codigo,
|
|
||||||
cat.nome AS nomeempresaapp,
|
|
||||||
cat.tipo_nodo,
|
|
||||||
r.data_referencia,
|
|
||||||
r.valor_meta_efetiva,
|
|
||||||
r.vlr_contribuicao,
|
|
||||||
CASE
|
|
||||||
WHEN r.data_referencia BETWEEN TRUNC(p.data_contribuicao, 'MM') AND p.data_contribuicao
|
|
||||||
THEN 'ATUAL'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_contribuicao, 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(p.data_contribuicao, -1)
|
|
||||||
THEN 'MES_ANTERIOR'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_contribuicao, 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(p.data_contribuicao, -12)
|
|
||||||
THEN 'ANO_ANTERIOR'
|
|
||||||
END AS periodo
|
|
||||||
FROM tb_flash_nodo_resumo_contribuicao r
|
|
||||||
JOIN nodos_filtrados cat
|
|
||||||
ON cat.id_nodo = r.id_nodo
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE (
|
|
||||||
r.data_referencia BETWEEN TRUNC(p.data_contribuicao, 'MM') AND p.data_contribuicao
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_contribuicao, 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(p.data_contribuicao, -1)
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_contribuicao, 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(p.data_contribuicao, -12)
|
|
||||||
)
|
|
||||||
) x
|
|
||||||
GROUP BY
|
|
||||||
GROUPING SETS (
|
|
||||||
(x.codigo, x.nomeempresaapp, x.tipo_nodo),
|
|
||||||
()
|
|
||||||
)
|
|
||||||
ORDER BY
|
|
||||||
is_total,
|
|
||||||
nomeempresaapp
|
|
||||||
`,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
C5_mambo: {
|
|
||||||
flashContribuicao: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ ``,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
flash_categorias: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ ``,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}).withSchedules({
|
|
||||||
C5: [
|
|
||||||
createSchedule({
|
|
||||||
name: "Procedure que atualiza os dados do flash de Contribuição",
|
|
||||||
params: ["contribuicao_empresas", "contribuicao_divisao", "contribuicao_cgos", "contribuicao_dias_atualizacao"],
|
|
||||||
command: (args) => ({
|
|
||||||
sql: /*sql*/ `BEGIN
|
|
||||||
PRC_FLASH_ATUALIZA_CONTRIBUICAO_DONO(
|
|
||||||
p_data_inicial => TRUNC(SYSDATE) - ${args.contribuicao_dias_atualizacao},
|
|
||||||
p_data_final => TRUNC(SYSDATE),
|
|
||||||
p_empresas => ${args.contribuicao_empresas},
|
|
||||||
p_divisao => ${args.contribuicao_divisao},
|
|
||||||
p_cgos => ${args.contribuicao_cgos}
|
|
||||||
);
|
|
||||||
END;`,
|
|
||||||
}),
|
|
||||||
cron: "0 * * * *",
|
|
||||||
timeout_seconds: 2400,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
C5_big: [
|
|
||||||
{
|
|
||||||
name: "Procedure que atualiza os dados do flash de contribuição",
|
|
||||||
command: /*sql*/ `BEGIN
|
|
||||||
PRC_FLASH_ATUALIZA_CONTRIBUICAO_DONO(
|
|
||||||
p_data_inicial => TRUNC(SYSDATE) - 30,
|
|
||||||
p_data_final => TRUNC(SYSDATE),
|
|
||||||
p_empresa_ini => 1,
|
|
||||||
p_empresa_fim => 10
|
|
||||||
);
|
|
||||||
END;`,
|
|
||||||
cron: "0 * * * *",
|
|
||||||
timeout_seconds: 2400,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
C5_mambo: [
|
|
||||||
{
|
|
||||||
name: "Procedure que atualiza os dados do flash de contribuição",
|
|
||||||
command: /*sql*/ `BEGIN
|
|
||||||
END`,
|
|
||||||
cron: "0 * * * *",
|
|
||||||
timeout_seconds: 2400,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
@@ -1,776 +0,0 @@
|
|||||||
import { createModuleFactory, createSchedule } from "@davinti/jeff";
|
|
||||||
|
|
||||||
const moduleFactory = createModuleFactory(["C5", "C5_big", "C5_mambo"]);
|
|
||||||
|
|
||||||
export default moduleFactory
|
|
||||||
.createModule({
|
|
||||||
id: "flash-de-perdas",
|
|
||||||
description: "Flash de Perdas",
|
|
||||||
label: "Flash de Perdas",
|
|
||||||
icon: "bar-chart",
|
|
||||||
order: 3,
|
|
||||||
queries: {
|
|
||||||
flashPerdas: {
|
|
||||||
name: "Flash de Perdas",
|
|
||||||
display: {
|
|
||||||
type: "flash",
|
|
||||||
settings: {
|
|
||||||
group_column: "canalapp",
|
|
||||||
total_indicator_column: "is_total",
|
|
||||||
null_label_key: "Geral",
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
title_column: "canalapp",
|
|
||||||
value_column: "perda_dia",
|
|
||||||
value_format: "currency",
|
|
||||||
},
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
label: "Meta Mês",
|
|
||||||
column: "meta_mes",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Mês Atual",
|
|
||||||
column: "mes_atual",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_mes_atual",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_atual",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Mês Anterior",
|
|
||||||
column: "mes_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_mes_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_mes_anterior",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Ano Anterior",
|
|
||||||
column: "ano_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_ano_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_ano_anterior",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
params: ["data_perda"],
|
|
||||||
},
|
|
||||||
flash_categorias: {
|
|
||||||
name: "Flash de Perdas por Categorias",
|
|
||||||
display: {
|
|
||||||
type: "flash",
|
|
||||||
settings: {
|
|
||||||
group_column: "categoriaapp",
|
|
||||||
total_indicator_column: "is_total",
|
|
||||||
null_label_key: "Geral",
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
title_column: "categoriaapp",
|
|
||||||
value_column: "perda_dia",
|
|
||||||
value_format: "currency",
|
|
||||||
},
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
label: "Meta Mês",
|
|
||||||
column: "meta_mes",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Mês Atual",
|
|
||||||
column: "mes_atual",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_mes_atual",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_atual",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Mês Anterior",
|
|
||||||
column: "mes_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_mes_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_mes_anterior",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Ano Anterior",
|
|
||||||
column: "ano_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Dif ($)",
|
|
||||||
column: "dif_ano_anterior",
|
|
||||||
format: "currency_short",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "% Variação",
|
|
||||||
column: "variacao_ano_anterior",
|
|
||||||
format: "percentage",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
params: ["data_perda", "codigo_categoria_pai", "cod_empresa"],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
entrypoint: "flashPerdas" as "flashPerdas" | "flash_categorias",
|
|
||||||
})
|
|
||||||
.withImplementations({
|
|
||||||
C5: {
|
|
||||||
flashPerdas: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
SELECT
|
|
||||||
'Lojas' AS categoriaapp,
|
|
||||||
x.codigo AS cod_empresa,
|
|
||||||
x.nomeempresaapp AS nomeempresaapp,
|
|
||||||
CASE
|
|
||||||
WHEN GROUPING(x.codigo) = 1 THEN 1
|
|
||||||
ELSE 0
|
|
||||||
END AS is_total,
|
|
||||||
SUM(CASE WHEN x.data_referencia = TO_DATE(${args.data_perda}, 'YYYY-MM-DD') THEN x.valor_venda ELSE 0 END) AS contribuicao_dia,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_mes_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_ano_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_ano_anterior
|
|
||||||
FROM
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
n.codigo,
|
|
||||||
n.nome AS nomeempresaapp,
|
|
||||||
r.data_referencia,
|
|
||||||
r.valor_meta_efetiva,
|
|
||||||
r.valor_venda,
|
|
||||||
CASE
|
|
||||||
WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_perda}, 'YYYY-MM-DD')
|
|
||||||
THEN 'ATUAL'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -1)
|
|
||||||
THEN 'MES_ANTERIOR'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -12)
|
|
||||||
THEN 'ANO_ANTERIOR'
|
|
||||||
END AS periodo
|
|
||||||
FROM
|
|
||||||
tb_flash_nodo_resumo_perda r
|
|
||||||
JOIN tb_flash_nodo n
|
|
||||||
ON
|
|
||||||
n.id_nodo = r.id_nodo
|
|
||||||
WHERE
|
|
||||||
n.tipo_nodo = 'EMPRESA'
|
|
||||||
and (n.cod_empresa in (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_perda}, 'YYYY-MM-DD')
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -1)
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -12)
|
|
||||||
)
|
|
||||||
) x
|
|
||||||
GROUP BY
|
|
||||||
GROUPING SETS (
|
|
||||||
(x.codigo, x.nomeempresaapp),
|
|
||||||
()
|
|
||||||
)
|
|
||||||
`,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
flash_categorias: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
WITH params AS (
|
|
||||||
SELECT
|
|
||||||
TO_DATE(${args.data_perda}, 'YYYY-MM-DD') AS data_venda,
|
|
||||||
${args.codigo_categoria_pai} AS codigo_categoria_pai,
|
|
||||||
${args.cod_empresa} AS cod_empresa
|
|
||||||
FROM dual
|
|
||||||
),
|
|
||||||
nodo_pai_param AS (
|
|
||||||
SELECT n.*
|
|
||||||
FROM tb_flash_nodo n
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE p.codigo_categoria_pai IS NOT NULL
|
|
||||||
AND n.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n.codigo = p.codigo_categoria_pai
|
|
||||||
and (n.cod_empresa in (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
),
|
|
||||||
nodos_filtrados AS (
|
|
||||||
SELECT filho.*
|
|
||||||
FROM tb_flash_nodo filho
|
|
||||||
JOIN nodo_pai_param pai_param
|
|
||||||
ON pai_param.id_nodo = filho.id_nodo_pai
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE filho.tipo_nodo IN ('CATEGORIA', 'PRODUTO')
|
|
||||||
AND filho.ativo = 'S'
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR filho.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
|
|
||||||
UNION ALL
|
|
||||||
|
|
||||||
SELECT n.*
|
|
||||||
FROM tb_flash_nodo n
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE p.codigo_categoria_pai IS NULL
|
|
||||||
AND n.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n.ativo = 'S'
|
|
||||||
and (n.cod_empresa in (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
AND n.nivel = (
|
|
||||||
SELECT MIN(n2.nivel)
|
|
||||||
FROM tb_flash_nodo n2
|
|
||||||
WHERE n2.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n2.ativo = 'S'
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n2.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
x.tipo_nodo AS categoriaapp,
|
|
||||||
|
|
||||||
x.codigo AS cod_empresa,
|
|
||||||
|
|
||||||
x.nomeempresaapp AS nomeempresaapp,
|
|
||||||
|
|
||||||
CASE
|
|
||||||
WHEN GROUPING(x.codigo) = 1 THEN 1
|
|
||||||
ELSE 0
|
|
||||||
END AS is_total,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) * 1.02 AS dif_mes_atual,
|
|
||||||
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) * 1.02 = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END)
|
|
||||||
/
|
|
||||||
(SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) * 1.02)
|
|
||||||
) * 100
|
|
||||||
) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_atual,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) * 1.02 AS meta_mes_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_mes_anterior,
|
|
||||||
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END)
|
|
||||||
/
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END)
|
|
||||||
) * 100
|
|
||||||
) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_mes_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) * 1.02 AS meta_ano_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_ano_anterior,
|
|
||||||
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END)
|
|
||||||
/
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END)
|
|
||||||
) * 100
|
|
||||||
) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_ano_anterior
|
|
||||||
|
|
||||||
FROM (
|
|
||||||
SELECT
|
|
||||||
cat.codigo AS codigo,
|
|
||||||
cat.nome AS nomeempresaapp,
|
|
||||||
cat.tipo_nodo,
|
|
||||||
r.valor_meta_efetiva,
|
|
||||||
r.valor_venda,
|
|
||||||
CASE
|
|
||||||
WHEN r.data_referencia BETWEEN TRUNC(p.data_venda, 'MM') AND p.data_venda
|
|
||||||
THEN 'ATUAL'
|
|
||||||
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_venda, 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(p.data_venda, -1)
|
|
||||||
THEN 'MES_ANTERIOR'
|
|
||||||
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_venda, 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(p.data_venda, -12)
|
|
||||||
THEN 'ANO_ANTERIOR'
|
|
||||||
END AS periodo
|
|
||||||
FROM tb_flash_nodo_resumo_perda r
|
|
||||||
JOIN nodos_filtrados cat
|
|
||||||
ON cat.id_nodo = r.id_nodo
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE (
|
|
||||||
r.data_referencia BETWEEN TRUNC(p.data_venda, 'MM') AND p.data_venda
|
|
||||||
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_venda, 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(p.data_venda, -1)
|
|
||||||
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_venda, 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(p.data_venda, -12)
|
|
||||||
)
|
|
||||||
) x
|
|
||||||
|
|
||||||
GROUP BY
|
|
||||||
GROUPING SETS (
|
|
||||||
(x.codigo, x.nomeempresaapp, x.tipo_nodo),
|
|
||||||
()
|
|
||||||
)
|
|
||||||
|
|
||||||
ORDER BY
|
|
||||||
is_total,
|
|
||||||
nomeempresaapp
|
|
||||||
`,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
C5_big: {flashPerdas: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
SELECT
|
|
||||||
'Lojas' AS categoriaapp,
|
|
||||||
x.codigo AS cod_empresa,
|
|
||||||
x.nomeempresaapp AS nomeempresaapp,
|
|
||||||
CASE
|
|
||||||
WHEN GROUPING(x.nomeempresaapp) = 1 THEN 1
|
|
||||||
ELSE 0
|
|
||||||
END AS is_total,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_atual,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_mes_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_mes_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior,
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_ano_anterior,
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) /
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_ano_anterior
|
|
||||||
FROM
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
n.codigo,
|
|
||||||
n.nome AS nomeempresaapp,
|
|
||||||
r.valor_meta_efetiva,
|
|
||||||
r.valor_venda,
|
|
||||||
CASE
|
|
||||||
WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_perda}, 'YYYY-MM-DD')
|
|
||||||
THEN 'ATUAL'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -1)
|
|
||||||
THEN 'MES_ANTERIOR'
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -12)
|
|
||||||
THEN 'ANO_ANTERIOR'
|
|
||||||
END AS periodo
|
|
||||||
FROM
|
|
||||||
tb_flash_nodo_resumo_perda r
|
|
||||||
JOIN tb_flash_nodo n
|
|
||||||
ON
|
|
||||||
n.id_nodo = r.id_nodo
|
|
||||||
WHERE
|
|
||||||
n.tipo_nodo = 'EMPRESA'
|
|
||||||
AND (
|
|
||||||
r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_perda}, 'YYYY-MM-DD')
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -1)
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -12)
|
|
||||||
)
|
|
||||||
) x
|
|
||||||
GROUP BY
|
|
||||||
ROLLUP(x.nomeempresaapp)
|
|
||||||
`,};
|
|
||||||
},
|
|
||||||
flash_categorias: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
WITH params AS (
|
|
||||||
SELECT
|
|
||||||
TO_DATE(${args.data_perda}, 'YYYY-MM-DD') AS data_perda,
|
|
||||||
${args.codigo_categoria_pai} AS codigo_categoria_pai,
|
|
||||||
${args.cod_empresa} AS cod_empresa
|
|
||||||
FROM dual
|
|
||||||
),
|
|
||||||
nodo_pai_param AS (
|
|
||||||
SELECT n.*
|
|
||||||
FROM tb_flash_nodo n
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE p.codigo_categoria_pai IS NOT NULL
|
|
||||||
AND n.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n.codigo = p.codigo_categoria_pai
|
|
||||||
and (n.cod_empresa in (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
),
|
|
||||||
nodos_filtrados AS (
|
|
||||||
SELECT filho.*
|
|
||||||
FROM tb_flash_nodo filho
|
|
||||||
JOIN nodo_pai_param pai_param
|
|
||||||
ON pai_param.id_nodo = filho.id_nodo_pai
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE filho.tipo_nodo IN ('CATEGORIA', 'PRODUTO')
|
|
||||||
AND filho.ativo = 'S'
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR filho.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
|
|
||||||
UNION ALL
|
|
||||||
|
|
||||||
SELECT n.*
|
|
||||||
FROM tb_flash_nodo n
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE p.codigo_categoria_pai IS NULL
|
|
||||||
AND n.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n.ativo = 'S'
|
|
||||||
and (n.cod_empresa in (${args.ctx_user_companies_for_module}))
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
AND n.nivel = (
|
|
||||||
SELECT MIN(n2.nivel)
|
|
||||||
FROM tb_flash_nodo n2
|
|
||||||
WHERE n2.tipo_nodo = 'CATEGORIA'
|
|
||||||
AND n2.ativo = 'S'
|
|
||||||
AND (
|
|
||||||
p.cod_empresa IS NULL
|
|
||||||
OR n2.cod_empresa = p.cod_empresa
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
x.tipo_nodo AS categoriaapp,
|
|
||||||
|
|
||||||
x.codigo AS cod_empresa,
|
|
||||||
|
|
||||||
x.nomeempresaapp AS nomeempresaapp,
|
|
||||||
|
|
||||||
CASE
|
|
||||||
WHEN GROUPING(x.codigo) = 1 THEN 1
|
|
||||||
ELSE 0
|
|
||||||
END AS is_total,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS perda_dia,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual,
|
|
||||||
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END)
|
|
||||||
/
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)
|
|
||||||
) * 100
|
|
||||||
) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_atual,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_mes_anterior,
|
|
||||||
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END)
|
|
||||||
/
|
|
||||||
SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END)
|
|
||||||
) * 100
|
|
||||||
) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_mes_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior,
|
|
||||||
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) -
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_ano_anterior,
|
|
||||||
|
|
||||||
CASE
|
|
||||||
WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0
|
|
||||||
ELSE ROUND(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END)
|
|
||||||
/
|
|
||||||
SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END)
|
|
||||||
) * 100
|
|
||||||
) - 100
|
|
||||||
, 2)
|
|
||||||
END AS variacao_ano_anterior
|
|
||||||
|
|
||||||
FROM (
|
|
||||||
SELECT
|
|
||||||
cat.codigo AS codigo,
|
|
||||||
cat.nome AS nomeempresaapp,
|
|
||||||
cat.tipo_nodo,
|
|
||||||
r.valor_meta_efetiva,
|
|
||||||
r.valor_venda,
|
|
||||||
CASE
|
|
||||||
WHEN r.data_referencia BETWEEN TRUNC(p.data_perda, 'MM') AND p.data_perda
|
|
||||||
THEN 'ATUAL'
|
|
||||||
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_perda, 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(p.data_perda, -1)
|
|
||||||
THEN 'MES_ANTERIOR'
|
|
||||||
|
|
||||||
WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_perda, 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(p.data_perda, -12)
|
|
||||||
THEN 'ANO_ANTERIOR'
|
|
||||||
END AS periodo
|
|
||||||
FROM tb_flash_nodo_resumo_perda r
|
|
||||||
JOIN nodos_filtrados cat
|
|
||||||
ON cat.id_nodo = r.id_nodo
|
|
||||||
CROSS JOIN params p
|
|
||||||
WHERE (
|
|
||||||
r.data_referencia BETWEEN TRUNC(p.data_perda, 'MM') AND p.data_perda
|
|
||||||
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_perda, 'MM'), -1)
|
|
||||||
AND ADD_MONTHS(p.data_perda, -1)
|
|
||||||
|
|
||||||
OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(p.data_perda, 'MM'), -12)
|
|
||||||
AND ADD_MONTHS(p.data_perda, -12)
|
|
||||||
)
|
|
||||||
) x
|
|
||||||
|
|
||||||
GROUP BY
|
|
||||||
GROUPING SETS (
|
|
||||||
(x.codigo, x.nomeempresaapp, x.tipo_nodo),
|
|
||||||
()
|
|
||||||
)
|
|
||||||
|
|
||||||
ORDER BY
|
|
||||||
is_total,
|
|
||||||
nomeempresaapp
|
|
||||||
`,};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
C5_mambo: {
|
|
||||||
flashPerdas: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
select
|
|
||||||
tes.canalapp,
|
|
||||||
tes.nomeempresaapp,
|
|
||||||
grouping(tes.canalapp) is_total,
|
|
||||||
sum(tvf.vlrvendadia) perda_dia,
|
|
||||||
sum(tvf.vlrmetames) meta_mes,
|
|
||||||
sum(tvf.vlrvendaacumulada) vda,
|
|
||||||
sum(tvf.vlrvendaacumulada - tvf.vlrmetaaculumada) dma,
|
|
||||||
sum(tvf.vlrmetadia) meta_dia,
|
|
||||||
round(avg(tvf.vlrmetamargemdiaperc), 2) meta_margem_dia,
|
|
||||||
sum(tvf.qtdclientes) qtd_clientes,
|
|
||||||
round(sum(tvf.vlrvendadia) / nullif(sum(tvf.qtdclientes), 0), 2) as ticket_medio,
|
|
||||||
round((sum(tvf.vlrlucro) / nullif(sum(tvf.vlrvendadia), 0)) * 100, 2) as margem
|
|
||||||
from mboard.tb_venda_flash tvf
|
|
||||||
inner join mboard.tb_empresa_segmento tes
|
|
||||||
on tes.nroempresa = tvf.nroempresa
|
|
||||||
and tes.nrodivisao = tvf.nrodivisao
|
|
||||||
and tes.nrosegmento = tvf.nrosegmento
|
|
||||||
and tes.codcanal = tvf.codcanal
|
|
||||||
where 1=1
|
|
||||||
and tvf.vlrvendaacumulada > 0
|
|
||||||
and tvf.dtavda = TO_DATE(${args.data_perda}, 'YYYY-MM-DD')
|
|
||||||
and (tvf.nroempresa in (${args.ctx_user_companies_for_module}))
|
|
||||||
group by rollup(canalapp, nomeempresaapp)
|
|
||||||
order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
flash_categorias: (args) => {
|
|
||||||
return {
|
|
||||||
sql: /*sql*/ `
|
|
||||||
select
|
|
||||||
'Categorias' as categoriaapp,
|
|
||||||
1 as is_total,
|
|
||||||
0 as perda_dia,
|
|
||||||
0 as meta_mes,
|
|
||||||
0 as mes_atual,
|
|
||||||
0 as dif_mes_atual,
|
|
||||||
0 as variacao_atual,
|
|
||||||
0 as mes_anterior,
|
|
||||||
0 as dif_mes_anterior,
|
|
||||||
0 as variacao_mes_anterior,
|
|
||||||
0 as ano_anterior,
|
|
||||||
0 as dif_ano_anterior,
|
|
||||||
0 as variacao_ano_anterior
|
|
||||||
from dual
|
|
||||||
where 1 = 0`,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}).withSchedules({
|
|
||||||
C5: [
|
|
||||||
createSchedule({
|
|
||||||
name: "Procedure que atualiza os dados do flash de Perdas",
|
|
||||||
params: ["perdas_empresas", "perdas_divisao", "perdas_cgos", "perdas_dias_atualizacao"],
|
|
||||||
command: (args) => ({
|
|
||||||
sql: /*sql*/ `BEGIN
|
|
||||||
PRC_FLASH_ATUALIZA_PERDA_DONO(
|
|
||||||
p_data_inicial => TRUNC(SYSDATE) - ${args.perdas_dias_atualizacao},
|
|
||||||
p_data_final => TRUNC(SYSDATE),
|
|
||||||
p_empresas => ${args.perdas_empresas},
|
|
||||||
p_divisao => ${args.perdas_divisao},
|
|
||||||
p_cgos => ${args.perdas_cgos}
|
|
||||||
);
|
|
||||||
END;`,
|
|
||||||
}),
|
|
||||||
cron: "0 * * * *",
|
|
||||||
timeout_seconds: 2400,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
C5_big: [
|
|
||||||
{
|
|
||||||
name: "Procedure que atualiza os dados do flash",
|
|
||||||
command: /*sql*/ `BEGIN
|
|
||||||
PRC_FLASH_ATUALIZA_PERDA_DONO(
|
|
||||||
p_data_inicial => TRUNC(SYSDATE) - 30,
|
|
||||||
p_data_final => TRUNC(SYSDATE),
|
|
||||||
p_empresa_ini => 1,
|
|
||||||
p_empresa_fim => 10
|
|
||||||
);
|
|
||||||
END;`,
|
|
||||||
cron: "0 * * * *",
|
|
||||||
timeout_seconds: 2400,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
C5_mambo: [
|
|
||||||
{
|
|
||||||
name: "Procedure que atualiza os dados do flash",
|
|
||||||
command: /*sql*/ `BEGIN
|
|
||||||
END`,
|
|
||||||
cron: "0 * * * *",
|
|
||||||
timeout_seconds: 2400,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user