CREATE OR ALTER trigger ttbapi_b01u for tbapi
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

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

    IF ( NEW.LOCALIZACAO_ID IS DISTINCT FROM OLD.LOCALIZACAO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' LOC:'||COALESCE(OLD.LOCALIZACAO_ID, 0)||'->'||COALESCE(NEW.LOCALIZACAO_ID, 0);
    END

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

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

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

    IF ( NEW.CLIENTE_TIPO_ID IS DISTINCT FROM OLD.CLIENTE_TIPO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TP.CLIENTE:'||COALESCE(OLD.CLIENTE_TIPO_ID, 0)||'->'||COALESCE(NEW.CLIENTE_TIPO_ID, 0);
    END

    IF ( NEW.CLIENTE_SUB_TIPO_ID IS DISTINCT FROM OLD.CLIENTE_SUB_TIPO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' SUBTP.CLIENTE:'||COALESCE(OLD.CLIENTE_SUB_TIPO_ID, 0)||'->'||COALESCE(NEW.CLIENTE_SUB_TIPO_ID, 0);
    END

    IF ( NEW.REPRESENTANTE_ID IS DISTINCT FROM OLD.REPRESENTANTE_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' REPRES:'||COALESCE(OLD.REPRESENTANTE_ID, 0)||'->'||COALESCE(NEW.REPRESENTANTE_ID, 0);
    END
    
    IF ( NEW.STATUS <> OLD.STATUS) THEN
    BEGIN
        HISTORICO = HISTORICO||' STATUS:'||OLD.STATUS||'->'||NEW.STATUS;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' REGISTRO ALTERADO: '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBAPI',NEW.ID, HISTORICO);
    END
END;

