ALTER TABLE TBCATALOGO_PRODUTO
    ADD TABELA_PRECO_REC_ID INTEGER,
	ADD VALOR_MINIMO_PEDIDO NUMERIC(18,2);

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

COMMENT ON COLUMN TBCATALOGO_PRODUTO.TABELA_PRECO_REC_ID IS
'Tabela de precos recomendado para re-venda dos modelos';

COMMENT ON COLUMN TBCATALOGO_PRODUTO.VALOR_MINIMO_PEDIDO IS
'Valor minimo dos pedidos realizados no catalogo';

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

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);
DECLARE VARIABLE OLD_TABELA_PRECO_ESP VARCHAR(500);
DECLARE VARIABLE NEW_TABELA_PRECO_ESP VARCHAR(500);
DECLARE VARIABLE OLD_TABELA_PRECO_REC VARCHAR(500);
DECLARE VARIABLE NEW_TABELA_PRECO_REC 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), '');
    OLD_TABELA_PRECO_ESP    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = OLD.TABELA_PRECO_ESP_ID), '');
    NEW_TABELA_PRECO_ESP    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = NEW.TABELA_PRECO_ESP_ID), '');
    OLD_TABELA_PRECO_REC    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = OLD.TABELA_PRECO_REC_ID), '');
    NEW_TABELA_PRECO_REC    = COALESCE((SELECT FIRST 1 FN_LPAD(E.ID, 4, '0')||' - '||E.DESCRICAO        FROM TBTABELA_PRECO E       WHERE E.ID = NEW.TABELA_PRECO_REC_ID), '');

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

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

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

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

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

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

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

    IF (OLD.TABELA_PRECO_ESP_ID IS DISTINCT FROM NEW.TABELA_PRECO_ESP_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO ESP:'||OLD_TABELA_PRECO_ESP||'->'||NEW_TABELA_PRECO_ESP;
    END

    IF (OLD.TABELA_PRECO_REC_ID IS DISTINCT FROM NEW.TABELA_PRECO_REC_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO REC:'||OLD_TABELA_PRECO_REC||'->'||NEW_TABELA_PRECO_REC;
    END

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

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

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

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

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

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

    IF (OLD.CONTATO_VENDEDOR IS DISTINCT FROM 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.PERFIL_PEDIDO IS DISTINCT FROM NEW.PERFIL_PEDIDO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PERFIL PED:'||OLD.PERFIL_PEDIDO||'->'||NEW.PERFIL_PEDIDO;
    END

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

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

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

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

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

    IF (OLD.TIPO_ORDEM_MODELO IS DISTINCT FROM NEW.TIPO_ORDEM_MODELO) THEN
    BEGIN
        HISTORICO = HISTORICO||' ORDEM MOD:'||OLD.TIPO_ORDEM_MODELO||'->'||NEW.TIPO_ORDEM_MODELO;
    END
	
	IF (OLD.VALOR_MINIMO_PEDIDO IS DISTINCT FROM NEW.VALOR_MINIMO_PEDIDO) THEN
    BEGIN
        HISTORICO = HISTORICO||' VR.PED.MIN:'||FN_FORMAT_NUMBER2(OLD.VALOR_MINIMO_PEDIDO, 2)||'->'||FN_FORMAT_NUMBER2(NEW.VALOR_MINIMO_PEDIDO, 2);
    END

    IF (OLD.LINK IS DISTINCT FROM 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 TABELA_PRECO_REC_ID = 0 WHERE TABELA_PRECO_REC_ID IS NULL;

UPDATE TBCATALOGO_PRODUTO SET VALOR_MINIMO_PEDIDO = 0 WHERE VALOR_MINIMO_PEDIDO IS NULL;