/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/


CREATE GENERATOR GTBCATALOGO_PRODUTO_VENDEDORES;

CREATE TABLE TBCATALOGO_PRODUTO_VENDEDORES (
    ID                   INTEGER NOT NULL,
    CATALOGO_PRODUTO_ID  INTEGER,
    NOME                 VARCHAR(150),
    CONTATO              VARCHAR(50)
);




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

ALTER TABLE TBCATALOGO_PRODUTO_VENDEDORES ADD CONSTRAINT PK_TBCATALOGO_PRODUTO_VENDEDORE PRIMARY KEY (ID);


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

CREATE INDEX ITBCATALOGO_PRODUTO_VENDEDO_01 ON TBCATALOGO_PRODUTO_VENDEDORES (CATALOGO_PRODUTO_ID);


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



SET TERM ^ ;



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



/* Trigger: TTBCATALOGO_PRODUTO_VEND_B01D */
CREATE OR ALTER TRIGGER TTBCATALOGO_PRODUTO_VEND_B01D FOR TBCATALOGO_PRODUTO_VENDEDORES
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'VENDEDOR: '||OLD.NOME||' EXCLUIDO';
    END

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


/* Trigger: TTBCATALOGO_PRODUTO_VEND_B01I */
CREATE OR ALTER TRIGGER TTBCATALOGO_PRODUTO_VEND_B01I FOR TBCATALOGO_PRODUTO_VENDEDORES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
    IF (COALESCE(NEW.ID, 0) = 0) THEN
        NEW.ID = GEN_ID(GTBCATALOGO_PRODUTO_VENDEDORES, 1);
END
^


/* Trigger: TTBCATALOGO_PRODUTO_VEND_B01U */
CREATE OR ALTER TRIGGER TTBCATALOGO_PRODUTO_VEND_B01U FOR TBCATALOGO_PRODUTO_VENDEDORES
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
BEGIN

    HISTORICO = '';

    IF (OLD.NOME <> NEW.NOME) THEN
    BEGIN
        HISTORICO = HISTORICO||' NOME:'||OLD.NOME||'->'||NEW.NOME;
    END

    IF (OLD.CONTATO <> NEW.CONTATO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CONTATO:'||FN_MASK_V2(OLD.CONTATO, 'FONE')||'->'||FN_MASK_V2(NEW.CONTATO, 'FONE');
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'VENDEDOR: '||NEW.NOME||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO_VENDEDORES', OLD.CATALOGO_PRODUTO_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^


/* Trigger: TTBCATALOGO_PRODUTO_VEND_B02I */
CREATE OR ALTER TRIGGER TTBCATALOGO_PRODUTO_VEND_B02I FOR TBCATALOGO_PRODUTO_VENDEDORES
ACTIVE BEFORE INSERT POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'VENDEDOR: '||NEW.NOME||' INCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO_VENDEDORES', 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 */
END
^

SET TERM ; ^


SET TERM ^ ;

CREATE OR ALTER trigger ttbcatalogo_produto_itens_b02d for tbcatalogo_produto_itens
active before delete position 1
AS
BEGIN
    DELETE FROM TBCATALOGO_PRODUTO_CORES A WHERE A.MODELO_ID = OLD.MODELO_ID AND A.CATALOGO_PRODUTO_ID = OLD.CATALOGO_PRODUTO_ID;       /* Remove registros filhos da TBCATALOGO_PRODUTO_CORES */
    DELETE FROM TBCATALOGO_PRODUTO_TAMANHOS B WHERE B.MODELO_ID = OLD.MODELO_ID AND B.CATALOGO_PRODUTO_ID = OLD.CATALOGO_PRODUTO_ID;    /* Remove registros filhos da TBCATALOGO_PRODUTO_TAMANHOS */
END
^

SET TERM ; ^
