CREATE OR ALTER trigger ttbmeta_b01u for tbmeta
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

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

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

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

    IF ( OLD.COMISSAO IS DISTINCT FROM NEW.COMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' COMISSAO: '||CAST(FN_IS_EMPTY(OLD.COMISSAO, 0) AS NUMERIC(15,2))||'%'||' -> '||CAST(FN_IS_EMPTY(NEW.COMISSAO, 0) AS NUMERIC(15,2))||'%';
    END

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