ALTER TABLE TBCOLABORADOR_DESCONTOS ADD VALOR2 NUMERIC(15,4);

UPDATE TBCOLABORADOR_DESCONTOS SET VALOR2 = VALOR;

SET TERM ^ ;

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

DECLARE VARIABLE OLD_FOLHA_PAGAMENTO VARCHAR(500);
DECLARE VARIABLE NEW_FOLHA_PAGAMENTO VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_FOLHA_PAGAMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(F.ID, 4, '0')||' - '||F.DESCRICAO FROM TBFOLPAG_CONTABIL F WHERE F.ID = OLD.FOLHA_PAGAMENTO_ID), '');
    NEW_FOLHA_PAGAMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(F.ID, 4, '0')||' - '||F.DESCRICAO FROM TBFOLPAG_CONTABIL F WHERE F.ID = NEW.FOLHA_PAGAMENTO_ID), '');

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

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

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

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

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

    IF(NEW.VALOR2 <> OLD.VALOR2) THEN
    BEGIN
        HISTORICO = HISTORICO||' VALOR:'||'R$'||CAST(OLD.VALOR2 AS NUMERIC(15,4))||'->'||'R$'||CAST(NEW.VALOR2 AS NUMERIC(15,4));
    END

    IF (OLD.FOLHA_PAGAMENTO_ID <> NEW.FOLHA_PAGAMENTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' FOLHA PAG:'||OLD_FOLHA_PAGAMENTO||'->'||NEW_FOLHA_PAGAMENTO;
    END 

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

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

SET TERM ; ^

ALTER TABLE TBCOLABORADOR_DESCONTOS DROP VALOR;
ALTER TABLE TBCOLABORADOR_DESCONTOS ADD VALOR NUMERIC(15,4);

UPDATE TBCOLABORADOR_DESCONTOS SET VALOR = VALOR2;

SET TERM ^ ;

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

DECLARE VARIABLE OLD_FOLHA_PAGAMENTO VARCHAR(500);
DECLARE VARIABLE NEW_FOLHA_PAGAMENTO VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_FOLHA_PAGAMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(F.ID, 4, '0')||' - '||F.DESCRICAO FROM TBFOLPAG_CONTABIL F WHERE F.ID = OLD.FOLHA_PAGAMENTO_ID), '');
    NEW_FOLHA_PAGAMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(F.ID, 4, '0')||' - '||F.DESCRICAO FROM TBFOLPAG_CONTABIL F WHERE F.ID = NEW.FOLHA_PAGAMENTO_ID), '');

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

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

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

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

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

    IF(NEW.VALOR <> OLD.VALOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' VALOR:'||'R$'||CAST(OLD.VALOR AS NUMERIC(15,4))||'->'||'R$'||CAST(NEW.VALOR AS NUMERIC(15,4));
    END

    IF (OLD.FOLHA_PAGAMENTO_ID <> NEW.FOLHA_PAGAMENTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' FOLHA PAG:'||OLD_FOLHA_PAGAMENTO||'->'||NEW_FOLHA_PAGAMENTO;
    END 

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

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

SET TERM ; ^

ALTER TABLE TBCOLABORADOR_DESCONTOS DROP VALOR2;