ALTER TABLE TBCATALOGO_PRODUTO
    ADD VISUALIZACAO_COR INTEGER DEFAULT 1,
    ADD VISUALIZACAO_GRADE INTEGER DEFAULT 1;

COMMENT ON COLUMN TBCATALOGO_PRODUTO.VISUALIZACAO_COR IS
'1 - Descrição Resumida;2 - Descrição Completa;';

COMMENT ON COLUMN TBCATALOGO_PRODUTO.VISUALIZACAO_GRADE IS
'1 - Grade Única (Tamanhos para Todas as Cores);2 - Grade por Cor (Tamanhos para Cada Cor);';

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

CREATE INDEX ITBCATALOGO_PRODUTO_06
ON TBCATALOGO_PRODUTO (VISUALIZACAO_GRADE);

CREATE INDEX ITBCATALOGO_PRODUTO_05
ON TBCATALOGO_PRODUTO (VISUALIZACAO_COR);

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

SET TERM ^ ;

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

DECLARE VARIABLE OLD_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE NEW_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE OLD_TABELA_PRECO VARCHAR(500);
DECLARE VARIABLE NEW_TABELA_PRECO VARCHAR(500);
DECLARE VARIABLE OLD_LOCALIZACAO VARCHAR(500);
DECLARE VARIABLE NEW_LOCALIZACAO VARCHAR(500);
DECLARE VARIABLE OLD_CANAL_VENDAS VARCHAR(500);
DECLARE VARIABLE NEW_CANAL_VENDAS VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_ESTABELECIMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.RAZAOSOCIAL  FROM TBESTABELECIMENTO A    WHERE A.CODIGO = OLD.ESTABELECIMENTO_ID), '');
    NEW_ESTABELECIMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.RAZAOSOCIAL  FROM TBESTABELECIMENTO A    WHERE A.CODIGO = NEW.ESTABELECIMENTO_ID), '');
    OLD_TABELA_PRECO    = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBTABELA_PRECO B       WHERE B.ID = OLD.TABELA_PRECO_ID), '');
    NEW_TABELA_PRECO    = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBTABELA_PRECO B       WHERE B.ID = NEW.TABELA_PRECO_ID), '');
    OLD_LOCALIZACAO     = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBLOCALIZACAO C        WHERE C.CODIGO = OLD.LOCALIZACAO_ID), '');
    NEW_LOCALIZACAO     = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBLOCALIZACAO C        WHERE C.CODIGO = NEW.LOCALIZACAO_ID), '');
    OLD_CANAL_VENDAS    = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO        FROM TBCANAL_VENDAS D       WHERE D.ID = OLD.CANAL_VENDAS_ID), '');
    NEW_CANAL_VENDAS    = COALESCE((SELECT FIRST 1 FN_LPAD(D.ID, 4, '0')||' - '||D.DESCRICAO        FROM TBCANAL_VENDAS D       WHERE D.ID = NEW.CANAL_VENDAS_ID), '');

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

    IF (OLD.DATA_INICIAL <> NEW.DATA_INICIAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.INICIAL:'||FORMATDATE(OLD.DATA_INICIAL)||'->'||FORMATDATE(NEW.DATA_INICIAL);
    END

    IF (OLD.DATA_FIM <> NEW.DATA_FIM) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.FINAL:'||FORMATDATE(OLD.DATA_FIM)||'->'||FORMATDATE(NEW.DATA_FIM);
    END

    IF (OLD.ESTABELECIMENTO_ID <> NEW.ESTABELECIMENTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' ESTAB:'||OLD_ESTABELECIMENTO||'->'||NEW_ESTABELECIMENTO;
    END

    IF (OLD.LOCALIZACAO_ID <> NEW.LOCALIZACAO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' LOCALIZACAO:'||OLD_LOCALIZACAO||'->'||NEW_LOCALIZACAO;
    END

    IF (OLD.TABELA_PRECO_ID <> NEW.TABELA_PRECO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO:'||OLD_TABELA_PRECO||'->'||NEW_TABELA_PRECO;
    END

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

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

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

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

    IF (OLD.CANAL_VENDAS_ID <> NEW.CANAL_VENDAS_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' CANAL VENDAS:'||OLD_CANAL_VENDAS||'->'||NEW_CANAL_VENDAS;
    END

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

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

    IF (OLD.LINK <> NEW.LINK) THEN
    BEGIN
        HISTORICO = HISTORICO||' CAMPO LINK ALTERADO!';
    END

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

SET TERM ; ^

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

UPDATE TBCATALOGO_PRODUTO
    SET VISUALIZACAO_COR = 1,
        VISUALIZACAO_GRADE = 1;
