SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCOLABORADOR_CREDITO_B02I FOR TBCOLABORADOR_CREDITO
ACTIVE BEFORE INSERT POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'CREDITO DO COLABORADOR: '||COALESCE((SELECT FIRST 1 FN_LPAD(COLAB.CODIGO,6,0)||' - '||COLAB.PESSOAL_NOME FROM TBCOLABORADOR COLAB WHERE COLAB.CODIGO = NEW.COLABORADOR_ID),'')||', R$ '||FN_FORMAT_NUMBER2(NEW.VALOR_CREDITO,2)||' INCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR_CREDITO',NEW.ID, HISTORICO);
    END
END^

CREATE OR ALTER TRIGGER TTBCOLABORADOR_CREDITO_B01D FOR TBCOLABORADOR_CREDITO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'CREDITO DO COLABORADOR: '||COALESCE((SELECT FIRST 1 FN_LPAD(COLAB.CODIGO,6,0)||' - '||COLAB.PESSOAL_NOME FROM TBCOLABORADOR COLAB WHERE COLAB.CODIGO = OLD.COLABORADOR_ID),'')||', R$ '||FN_FORMAT_NUMBER2(OLD.VALOR_CREDITO,2)||' EXCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR_CREDITO',OLD.ID, HISTORICO);
    END
END^

CREATE OR ALTER TRIGGER TTBCOLABORADOR_CREDITO_B01U FOR TBCOLABORADOR_CREDITO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

    IF (OLD.VALOR_CREDITO <> NEW.VALOR_CREDITO) THEN
       BEGIN
       HISTORICO = HISTORICO||' VR.CREDITO:'||FN_REPLACE(OLD.VALOR_CREDITO, '.', ',')||'->'||FN_REPLACE(NEW.VALOR_CREDITO, '.', ',');
       END
       
    IF (OLD.SALDO <> NEW.SALDO) THEN
       BEGIN
       HISTORICO = HISTORICO||' SALDO:'||FN_REPLACE(OLD.SALDO, '.', ',')||'->'||FN_REPLACE(NEW.SALDO, '.', ',');
       END
    
    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'CREDITO DO COLABORADOR: '||COALESCE((SELECT FIRST 1 FN_LPAD(COLAB.CODIGO,6,0)||' - '||COLAB.PESSOAL_NOME FROM TBCOLABORADOR COLAB WHERE COLAB.CODIGO = OLD.COLABORADOR_ID),'')||', R$ '||FN_FORMAT_NUMBER2(OLD.VALOR_CREDITO,2)||' ALTERADO: '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR_CREDITO', NEW.ID, HISTORICO);
    END
END^

SET TERM ; ^

