
UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO, SUB_GRUPO, DESCRICAO_RESUMIDA) 
    VALUES (12461, 'VEN', 'VEN', '1', '', 'CADASTRO DE CATÁLOGOS DE VENDA SIMPLIFICADOS', '4', 'CAD. CATÁLOGO DE VENDA SIMPLIFICADO')
    MATCHING (CONTROLE, GRUPO);

/************************************************************/
/************************************************************/

ALTER TABLE TBCATALOGO_PRODUTO
    ADD ORIGEM VARCHAR(10) DEFAULT '';

ALTER TABLE TBCATALOGO_PRODUTO
    ADD TIPO_IMPORTACAO INTEGER DEFAULT 1;


COMMENT ON COLUMN TBCATALOGO_PRODUTO.ORIGEM IS
'Codigo da tela de origem do catálogo';

COMMENT ON COLUMN TBCATALOGO_PRODUTO.TIPO_IMPORTACAO IS
'1 - MODELOS (CORES E TAMANHOS E LISTA) (MODELO)
2 - MODELOS/CORES (TAMANHOS EM LISTA) (PRODUTO)
3 - MODELOS/CORES/TAMANHOS (SKU)';

/************************************************************/
/************************************************************/

UPDATE TBCATALOGO_PRODUTO 
	SET ORIGEM = '12460'
	WHERE ORIGEM IS NULL;

/************************************************************/
	
CREATE INDEX ITBCATALOGO_PRODUTO_15
ON TBCATALOGO_PRODUTO (ORIGEM);

CREATE INDEX ITBCATALOGO_PRODUTO_16
ON TBCATALOGO_PRODUTO (ORIGEM);

/************************************************************/
/************************************************************/
/************************************************************/


CREATE GENERATOR GTBCATALOGO_PRODUTO_IMPORT;

CREATE TABLE TBCATALOGO_PRODUTO_IMPORT (
    ID                   INTEGER NOT NULL,
    CATALOGO_PRODUTO_ID  INTEGER,
    STATUS               INTEGER DEFAULT 1,
    MODELO_ID            INTEGER DEFAULT 0,
    MODELO_DESCRICAO     VARCHAR(200) DEFAULT '',
    COR_ID               INTEGER DEFAULT 0,
    COR_DESCRICAO        VARCHAR(100) DEFAULT '',
    PRODUTO_ID           INTEGER DEFAULT 0,
    TAMANHO_ID           INTEGER DEFAULT 0,
    TAMANHO_DESCRICAO    VARCHAR(20) DEFAULT '',
    CORES                BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    PRODUTOS             BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    TAMANHOS             BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    PRECO_VENDA          NUMERIC(15,2) DEFAULT 0,
    PRECO_RECOMENDADO    NUMERIC(15,2) DEFAULT 0
);




/******************************************************************************/
/****                             Primary keys                             ****/
/******************************************************************************/

ALTER TABLE TBCATALOGO_PRODUTO_IMPORT ADD CONSTRAINT PK_TBCATALOGO_PRODUTO_IMPORT PRIMARY KEY (ID);


/******************************************************************************/
/****                               Indices                                ****/
/******************************************************************************/

CREATE INDEX ITBCATALOGO_PRODUTO_IMPORT_01 ON TBCATALOGO_PRODUTO_IMPORT (CATALOGO_PRODUTO_ID);
CREATE INDEX ITBCATALOGO_PRODUTO_IMPORT_02 ON TBCATALOGO_PRODUTO_IMPORT (MODELO_ID);
CREATE INDEX ITBCATALOGO_PRODUTO_IMPORT_03 ON TBCATALOGO_PRODUTO_IMPORT (COR_ID);
CREATE INDEX ITBCATALOGO_PRODUTO_IMPORT_04 ON TBCATALOGO_PRODUTO_IMPORT (PRODUTO_ID);
CREATE INDEX ITBCATALOGO_PRODUTO_IMPORT_05 ON TBCATALOGO_PRODUTO_IMPORT (TAMANHO_ID);
CREATE INDEX ITBCATALOGO_PRODUTO_IMPORT_06 ON TBCATALOGO_PRODUTO_IMPORT (STATUS);


/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/



SET TERM ^ ;



/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: TTBCATALOGO_PRODUTO_IMPORT_B01I */
CREATE OR ALTER TRIGGER TTBCATALOGO_PRODUTO_IMPORT_B01I FOR TBCATALOGO_PRODUTO_IMPORT
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
    IF (NEW.ID IS NULL) THEN
        NEW.ID = GEN_ID(GTBCATALOGO_PRODUTO_IMPORT, 1);
END
^


/* Trigger: TTBCATALOGO_PRODUTO_IMPORT_B01U */
CREATE OR ALTER TRIGGER TTBCATALOGO_PRODUTO_IMPORT_B01U FOR TBCATALOGO_PRODUTO_IMPORT
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
BEGIN
    
    :HISTORICO = '';

    IF (OLD.CATALOGO_PRODUTO_ID IS DISTINCT FROM NEW.CATALOGO_PRODUTO_ID) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' CAT.PROD:'||OLD.CATALOGO_PRODUTO_ID||'->'||NEW.CATALOGO_PRODUTO_ID;
    END

    IF (OLD.STATUS IS DISTINCT FROM NEW.STATUS) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' STATUS:'||OLD.STATUS||'->'||NEW.STATUS;
    END

    IF (OLD.MODELO_ID IS DISTINCT FROM NEW.MODELO_ID) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' MODELO:'||OLD.MODELO_ID||'->'||NEW.MODELO_ID;
    END

    IF (OLD.COR_ID IS DISTINCT FROM NEW.COR_ID) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' COR:'||OLD.COR_ID||'->'||NEW.COR_ID;
    END

    IF (OLD.PRODUTO_ID IS DISTINCT FROM NEW.PRODUTO_ID) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' PRODUTO:'||OLD.PRODUTO_ID||'->'||NEW.PRODUTO_ID;
    END

    IF (OLD.TAMANHO_ID IS DISTINCT FROM NEW.TAMANHO_ID) THEN 
    BEGIN
        :HISTORICO = :HISTORICO||' TAM:'||OLD.TAMANHO_ID||'->'||NEW.TAMANHO_ID;
    END

    IF (OLD.PRECO_VENDA IS DISTINCT FROM NEW.PRECO_VENDA) THEN 
    BEGIN
        :HISTORICO = :HISTORICO||' PR.VENDA:R$'||FN_FORMAT_NUMBER2(OLD.PRECO_VENDA, 2)||'->R$'||FN_FORMAT_NUMBER2(NEW.PRECO_VENDA, 2);
    END

    IF (OLD.PRECO_RECOMENDADO IS DISTINCT FROM NEW.PRECO_RECOMENDADO) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' PR.RECOMEND:R$'||FN_FORMAT_NUMBER2(OLD.PRECO_RECOMENDADO, 2)||'->R$'||FN_FORMAT_NUMBER2(NEW.PRECO_RECOMENDADO, 2);
    END

    IF (:HISTORICO <> '') THEN
    BEGIN
        :HISTORICO = ' MODELO/COR/TAMANHO: '||NEW.MODELO_ID||'/'||NEW.COR_ID||'/'||NEW.TAMANHO_ID||' ALTERADO:'||:HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', NEW.CATALOGO_PRODUTO_ID, :HISTORICO);
    END
END
^


/* Trigger: TTBCATALOGO_PRODUTO_IMPORT_B02D */
CREATE OR ALTER TRIGGER TTBCATALOGO_PRODUTO_IMPORT_B02D FOR TBCATALOGO_PRODUTO_IMPORT
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    :HISTORICO = '';

    IF (OLD.ID > 0) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' MODELO/COR/TAMANHO: '||OLD.MODELO_ID||'/'||OLD.COR_ID||'/'||OLD.TAMANHO_ID||' IMPORTADO.';
    END

    IF (:HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', OLD.CATALOGO_PRODUTO_ID, :HISTORICO);
    END
END
^


/* Trigger: TTBCATALOGO_PRODUTO_IMPORT_B02I */
CREATE OR ALTER TRIGGER TTBCATALOGO_PRODUTO_IMPORT_B02I FOR TBCATALOGO_PRODUTO_IMPORT
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    :HISTORICO = '';

    IF (NEW.ID > 0) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' MODELO/COR/TAMANHO: '||NEW.MODELO_ID||'/'||NEW.COR_ID||'/'||NEW.TAMANHO_ID||' IMPORTADO.';
    END

    IF (:HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', NEW.CATALOGO_PRODUTO_ID, :HISTORICO);
    END
END
^

SET TERM ; ^


/************************************************************/
/************************************************************/
/************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbcatalogo_produto_b02d for tbcatalogo_produto
active before delete position 1
AS
BEGIN
    DELETE FROM TBCATALOGO_PRODUTO_ITENS A WHERE A.CATALOGO_PRODUTO_ID = OLD.ID;        /* Remove registros filhos da TBCATALOGO_PRODUTO_ITENS */
    DELETE FROM TBCATALOGO_PRODUTO_VENDEDORES B WHERE B.CATALOGO_PRODUTO_ID = OLD.ID;   /* Remove registros filhos da TBCATALOGO_PRODUTO_VENDEDORES */
    DELETE FROM TBCATALOGO_PRODUTO_FORMPAG C WHERE C.CATALOGO_PRODUTO_ID = OLD.ID;      /* Remove registros filhos da TBCATALOGO_PRODUTO_FORMPAG */
    DELETE FROM TBEMPRESA_CATALOGO D WHERE D.CATALOGO_PRODUTO_ID = OLD.ID;              /* Remove registros filhos da TBEMPRESA_CATALOGO - Permissao de Area Exclusiva */

    DELETE FROM TBCATALOGO_PRODUTO_IMPORT E WHERE E.CATALOGO_PRODUTO_ID = OLD.ID;       /* Remove registros filhos da TBCATALOGO_PRODUTO_IMPORT criados pelo catalgo simplificado*/
END
^

SET TERM ; ^

