/*************************************************************/
/********* NOVOS CAMPOS **************************************/

ALTER TABLE TBFOLPAG_VERBA_PADRAO
    ADD FOLHA_PAGAMENTO_ID INTEGER;

COMMENT ON COLUMN TBFOLPAG_VERBA_PADRAO.FOLHA_PAGAMENTO_ID IS
'ID da Folha de Pagamento (TBFOLPAG_CONTABIL)';

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

ALTER TABLE TBCOLABORADOR_DESCONTOS
    ADD FOLHA_PAGAMENTO_ID INTEGER;

COMMENT ON COLUMN TBCOLABORADOR_DESCONTOS.FOLHA_PAGAMENTO_ID IS
'ID da Folha de Pagamento (TBFOLPAG_CONTABIL)';

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

ALTER TABLE TBFOLPAG_VERBA_COLABORADOR
    ADD FOLHA_PAGAMENTO_ID INTEGER;

COMMENT ON COLUMN TBFOLPAG_VERBA_COLABORADOR.FOLHA_PAGAMENTO_ID IS
'ID da Folha de Pagamento (TBFOLPAG_CONTABIL)';

/*************************************************************/
/*************************************************************/
/********* TRIGGERS ******************************************/

SET TERM ^ ;

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

DECLARE VARIABLE OLD_VERBA VARCHAR(500);
DECLARE VARIABLE NEW_VERBA VARCHAR(500);
DECLARE VARIABLE OLD_FOLHA_PAGAMENTO VARCHAR(500);
DECLARE VARIABLE NEW_FOLHA_PAGAMENTO VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    OLD_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(V.ID, 6, '0')||' - '||V.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA V WHERE V.ID = OLD.VERBA_ID), '');
    NEW_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(V.ID, 6, '0')||' - '||V.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA V WHERE V.ID = NEW.VERBA_ID), '');
    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 (OLD.VERBA_ID <> NEW.VERBA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' VERBA:'||OLD_VERBA||'->'||NEW_VERBA;
    END

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

    IF (OLD.DATA_REG <> NEW.DATA_REG) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.REGISTRO:'||FORMATDATE(OLD.DATA_REG)||'->'||FORMATDATE(NEW.DATA_REG);
    END

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

    IF (OLD.VALOR <> NEW.VALOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' VALOR:R$'||FN_FORMAT_NUMBER2(OLD.VALOR, 2)||'->R$'||FN_FORMAT_NUMBER2(NEW.VALOR, 2);
    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.FORMULA <> NEW.FORMULA) THEN
    BEGIN
        HISTORICO = HISTORICO||' FORMULA ALTERADA!';
    END

    IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OBSERVACAO ALTERADA!';
    END

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

SET TERM ; ^

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

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,2))||'->'||'R$'||CAST(NEW.VALOR AS NUMERIC(15,2));
    END

    IF (OLD.FOLHA_PAGAMENTO_ID <> NEW.FOLHA_PAGAMENTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' FOLHA PAG:'||OLD_FOLHA_PAGAMENTO||'->'||NEW_FOLHA_PAGAMENTO;
    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 ; ^

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

SET TERM ^ ;

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

DECLARE VARIABLE OLD_COLABORADOR VARCHAR(500);
DECLARE VARIABLE NEW_COLABORADOR VARCHAR(500);
DECLARE VARIABLE OLD_VERBA VARCHAR(500);
DECLARE VARIABLE NEW_VERBA VARCHAR(500);
DECLARE VARIABLE OLD_FOLHA_PAGAMENTO VARCHAR(500);
DECLARE VARIABLE NEW_FOLHA_PAGAMENTO VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    OLD_COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 6, '0')||' - '||C.PESSOAL_NOME FROM TBCOLABORADOR C WHERE C.CODIGO = OLD.COLABORADOR_ID), '');
    NEW_COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 6, '0')||' - '||C.PESSOAL_NOME FROM TBCOLABORADOR C WHERE C.CODIGO = NEW.COLABORADOR_ID), '');
    OLD_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(V.ID, 6, '0')||' - '||V.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA V WHERE V.ID = OLD.VERBA_ID), '');
    NEW_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(V.ID, 6, '0')||' - '||V.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA V WHERE V.ID = NEW.VERBA_ID), '');
    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 (OLD.COLABORADOR_ID <> NEW.COLABORADOR_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' COLAB:'||OLD_COLABORADOR||'->'||NEW_COLABORADOR;
    END

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

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

    IF (OLD.DATA_REG <> NEW.DATA_REG) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.REGISTRO:'||FORMATDATE(OLD.DATA_REG)||'->'||FORMATDATE(NEW.DATA_REG);
    END

    IF (OLD.VALOR <> NEW.VALOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' VALOR:R$'||FN_FORMAT_NUMBER2(OLD.VALOR, 2)||'->R$'||FN_FORMAT_NUMBER2(NEW.VALOR, 2);
    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.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OBSERVACAO ALTERADA!';
    END

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

SET TERM ; ^