Files
app-dono-modulos/migrations/C5/20260529000004_tb_flash_fato_venda.sql

132 lines
4.9 KiB
SQL

-- +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