ALTER TABLE TBCATALOGO_PRODUTO_ITENS
    ADD ATIVO CHAR(1) DEFAULT '1';

ALTER TABLE TBCATALOGO_PRODUTO_CORES
    ADD ATIVO CHAR(1) DEFAULT '1';

ALTER TABLE TBCATALOGO_PRODUTO_TAMANHOS
    ADD ATIVO CHAR(1) DEFAULT '1';


COMMENT ON COLUMN TBCATALOGO_PRODUTO_ITENS.ATIVO IS
'0 - Inativado via Procedure;
1 - Ativado via Procedure;';

COMMENT ON COLUMN TBCATALOGO_PRODUTO_CORES.ATIVO IS
'0 - Inativado via Procedure;
1 - Ativado via Procedure;';

COMMENT ON COLUMN TBCATALOGO_PRODUTO_TAMANHOS.ATIVO IS
'0 - Inativado via Procedure;
1 - Ativado via Procedure;';

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

UPDATE TBCATALOGO_PRODUTO_ITENS
	SET ATIVO = '1';

UPDATE TBCATALOGO_PRODUTO_CORES
	SET ATIVO = '1';

UPDATE TBCATALOGO_PRODUTO_TAMANHOS
	SET ATIVO = '1';

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

CREATE INDEX ITBCATALOGO_PRODUTO_ITENS_03
ON TBCATALOGO_PRODUTO_ITENS (ATIVO);

CREATE INDEX ITBCATALOGO_PRODUTO_CORES_05
ON TBCATALOGO_PRODUTO_CORES (ATIVO);

CREATE INDEX ITBCATALOGO_PRODUTO_TAMANHO_05
ON TBCATALOGO_PRODUTO_TAMANHOS (ATIVO);

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

SET TERM ^ ;

CREATE OR ALTER trigger ttbcatalogo_produto_itens_b01u for tbcatalogo_produto_itens
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);

DECLARE VARIABLE OLD_MODELO VARCHAR(500);
DECLARE VARIABLE NEW_MODELO VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    OLD_MODELO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 6, '0')||' - '||A.DESCRICAO FROM TBMODELO A WHERE A.CODIGO = OLD.MODELO_ID), '');
    NEW_MODELO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 6, '0')||' - '||A.DESCRICAO FROM TBMODELO A WHERE A.CODIGO = NEW.MODELO_ID), '');

    IF (OLD.MODELO_ID <> NEW.MODELO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MODELO:'||OLD_MODELO||'->'||NEW_MODELO;
    END

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'MODELO '||NEW_MODELO||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', OLD.CATALOGO_PRODUTO_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcatalogo_produto_cores_b01u for tbcatalogo_produto_cores
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_COR VARCHAR(500);
DECLARE VARIABLE NEW_COR VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    OLD_COR    = COALESCE((SELECT FIRST 1 A.DESCRICAO FROM TBCOR A WHERE A.CODIGO = OLD.COR_ID), '');
    NEW_COR    = COALESCE((SELECT FIRST 1 A.DESCRICAO FROM TBCOR A WHERE A.CODIGO = NEW.COR_ID), '');

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

    IF (OLD.COR_ID <> NEW.COR_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' COR:'||OLD_COR||'->'||NEW_COR;
    END

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'COR: '||NEW_COR||' DO MODELO: '||NEW.MODELO_ID||' ALTERADA:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', OLD.CATALOGO_PRODUTO_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcatalogo_produto_tam_b01u for tbcatalogo_produto_tamanhos
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_TAMANHO VARCHAR(500);
DECLARE VARIABLE NEW_TAMANHO VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    OLD_TAMANHO = COALESCE((SELECT FIRST 1 A.TAMANHO_DESCRICAO FROM SPC_MODELO_GRADE_TAMANHO(OLD.MODELO_ID) A WHERE A.TAMANHO = OLD.TAMANHO), '');
    NEW_TAMANHO = COALESCE((SELECT FIRST 1 A.TAMANHO_DESCRICAO FROM SPC_MODELO_GRADE_TAMANHO(NEW.MODELO_ID) A WHERE A.TAMANHO = NEW.TAMANHO), '');

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

    IF (OLD.TAMANHO <> NEW.TAMANHO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAM:'||OLD_TAMANHO||'->'||NEW_TAMANHO;
    END

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'TAM: '||NEW_TAMANHO||' DO MODELO: '||NEW.MODELO_ID||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCATALOGO_PRODUTO', OLD.CATALOGO_PRODUTO_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

