ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR ADD ID2 BIGINT;

UPDATE TBFOLHAPAGAMENTO_COLABORADOR SET ID2 = ID;

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

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR ALTER ID2 SET NOT NULL;

/* Operação manual - Alteração da chave primária */
ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
    DROP CONSTRAINT PK_TBFOLHAPAGAMENTO_COLABORADOR;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
    ADD CONSTRAINT PK_TBFOLHAPAGAMENTO_COLABORADOR PRIMARY KEY (ID2);

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

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_colab_b01d for tbfolhapagamento_colaborador
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE OLD_COLABORADOR VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.INC_PADRAO = 0) THEN
    BEGIN

        OLD_COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 5, '0')||' - '||A.PESSOAL_NOME FROM TBCOLABORADOR A WHERE A.CODIGO = OLD.COLABORADOR_ID), '');

        IF (OLD.ID2 > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'COLABORADOR:'||OLD_COLABORADOR||' EXCLUIDO';
        END

    END

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

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_colab_b01i for tbfolhapagamento_colaborador
active before insert position 0
AS
BEGIN
    IF (NEW.ID2 IS NULL) THEN
        NEW.ID2 = GEN_ID(GTBFOLHAPAGAMENTO_COLABORADOR, 1);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_colab_b02d for tbfolhapagamento_colaborador
active before delete position 1
AS
BEGIN
    DELETE FROM TBFOLHAPAGAMENTO_VERBAS A WHERE A.TBFOLHAPAGAMENTO_COLABORADOR_ID = OLD.ID2; /* Exclui os registros filhos do colaborador da folha - verbas */
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_colab_b02i for tbfolhapagamento_colaborador
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE NEW_COLABORADOR VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.INC_PADRAO = 0) THEN
    BEGIN

        NEW_COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 5, '0')||' - '||A.PESSOAL_NOME FROM TBCOLABORADOR A WHERE A.CODIGO = NEW.COLABORADOR_ID), '');

        IF (NEW.ID2 > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'COLABORADOR:'||NEW_COLABORADOR||' INCLUIDO';
        END

    END

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

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_verbas_b01d for tbfolhapagamento_verbas
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TBFOLHAPAGAMENTO_ID INTEGER;
DECLARE VARIABLE COLABORADOR varchar(500);

DECLARE VARIABLE OLD_VERBA VARCHAR(500);
BEGIN

    HISTORICO = '';
    TBFOLHAPAGAMENTO_ID = COALESCE((SELECT FIRST 1 A.ID2 FROM TBFOLHAPAGAMENTO_COLABORADOR A WHERE A.ID2 = OLD.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);
    COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 5, '0')||' - '||B.PESSOAL_NOME FROM TBFOLHAPAGAMENTO_COLABORADOR A INNER JOIN TBCOLABORADOR B ON B.CODIGO = A.COLABORADOR_ID WHERE A.ID2 = OLD.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);

    IF (OLD.INC_PADRAO = 0) THEN
    BEGIN

        OLD_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 6, '0')||' - '||C.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA C WHERE C.ID = OLD.VERBA_ID), '');

        IF (OLD.ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'VERBA:'||OLD_VERBA||' EXCLUIDA NO COLABORADOR:'||COLABORADOR;
        END

    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBFOLHAPAGAMENTO', TBFOLHAPAGAMENTO_ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_verbas_b01u for tbfolhapagamento_verbas
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE TBFOLHAPAGAMENTO_ID INTEGER;
DECLARE VARIABLE COLABORADOR varchar(500);

DECLARE VARIABLE OLD_VERBA VARCHAR(500);
DECLARE VARIABLE NEW_VERBA VARCHAR(500);
BEGIN

    HISTORICO = '';
    TBFOLHAPAGAMENTO_ID = COALESCE((SELECT FIRST 1 A.ID2 FROM TBFOLHAPAGAMENTO_COLABORADOR A WHERE A.ID2 = OLD.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);
    COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 5, '0')||' - '||B.PESSOAL_NOME FROM TBFOLHAPAGAMENTO_COLABORADOR A INNER JOIN TBCOLABORADOR B ON B.CODIGO = A.COLABORADOR_ID WHERE A.ID2 = OLD.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);

    IF (OLD.INC_PADRAO = 0) THEN
    BEGIN

        OLD_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 6, '0')||' - '||C.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA C WHERE C.ID = OLD.VERBA_ID), '');
        NEW_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 6, '0')||' - '||C.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA C WHERE C.ID = NEW.VERBA_ID), '');

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

        IF (OLD.NATUREZA <> NEW.NATUREZA) THEN
        BEGIN
            HISTORICO = HISTORICO||' NATUREZA:'||OLD.NATUREZA||'->'||NEW.NATUREZA;
        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

    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'VERBA:'||NEW_VERBA||' DO COLABORADOR:'||COLABORADOR||' ALTERADA:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBFOLHAPAGAMENTO', TBFOLHAPAGAMENTO_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_verbas_b02i for tbfolhapagamento_verbas
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TBFOLHAPAGAMENTO_ID INTEGER;
DECLARE VARIABLE COLABORADOR varchar(500);

DECLARE VARIABLE NEW_VERBA VARCHAR(500);
BEGIN

    HISTORICO = '';
    TBFOLHAPAGAMENTO_ID = COALESCE((SELECT FIRST 1 A.ID2 FROM TBFOLHAPAGAMENTO_COLABORADOR A WHERE A.ID2 = NEW.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);
    COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 5, '0')||' - '||B.PESSOAL_NOME FROM TBFOLHAPAGAMENTO_COLABORADOR A INNER JOIN TBCOLABORADOR B ON B.CODIGO = A.COLABORADOR_ID WHERE A.ID2 = NEW.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);

    IF (NEW.INC_PADRAO = 0) THEN
    BEGIN

        NEW_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 6, '0')||' - '||C.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA C WHERE C.ID = NEW.VERBA_ID), '');

        IF (NEW.ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'VERBA:'||NEW_VERBA||' INCLUIDA NO COLABORADOR:'||COLABORADOR;
        END

    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBFOLHAPAGAMENTO', TBFOLHAPAGAMENTO_ID, HISTORICO);
    END
END
^

SET TERM ; ^

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

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR DROP ID;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR ADD ID BIGINT;

UPDATE TBFOLHAPAGAMENTO_COLABORADOR SET ID = ID2;

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

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR ALTER ID SET NOT NULL;

/* Operação manual - Alteração da chave primária */
ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
    DROP CONSTRAINT PK_TBFOLHAPAGAMENTO_COLABORADOR;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
    ADD CONSTRAINT PK_TBFOLHAPAGAMENTO_COLABORADOR PRIMARY KEY (ID);
    
/************************************************/
/************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_colab_b01d for tbfolhapagamento_colaborador
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE OLD_COLABORADOR VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.INC_PADRAO = 0) THEN
    BEGIN

        OLD_COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 5, '0')||' - '||A.PESSOAL_NOME FROM TBCOLABORADOR A WHERE A.CODIGO = OLD.COLABORADOR_ID), '');

        IF (OLD.ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'COLABORADOR:'||OLD_COLABORADOR||' EXCLUIDO';
        END

    END

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

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_colab_b01i for tbfolhapagamento_colaborador
active before insert position 0
AS
BEGIN
    IF (NEW.ID IS NULL) THEN
        NEW.ID = GEN_ID(GTBFOLHAPAGAMENTO_COLABORADOR, 1);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_colab_b02d for tbfolhapagamento_colaborador
active before delete position 1
AS
BEGIN
    DELETE FROM TBFOLHAPAGAMENTO_VERBAS A WHERE A.TBFOLHAPAGAMENTO_COLABORADOR_ID = OLD.ID; /* Exclui os registros filhos do colaborador da folha - verbas */
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_colab_b02i for tbfolhapagamento_colaborador
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE NEW_COLABORADOR VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.INC_PADRAO = 0) THEN
    BEGIN

        NEW_COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 5, '0')||' - '||A.PESSOAL_NOME FROM TBCOLABORADOR A WHERE A.CODIGO = NEW.COLABORADOR_ID), '');

        IF (NEW.ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'COLABORADOR:'||NEW_COLABORADOR||' INCLUIDO';
        END

    END

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

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_verbas_b01d for tbfolhapagamento_verbas
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TBFOLHAPAGAMENTO_ID INTEGER;
DECLARE VARIABLE COLABORADOR varchar(500);

DECLARE VARIABLE OLD_VERBA VARCHAR(500);
BEGIN

    HISTORICO = '';
    TBFOLHAPAGAMENTO_ID = COALESCE((SELECT FIRST 1 A.TBFOLHAPAGAMENTO_ID FROM TBFOLHAPAGAMENTO_COLABORADOR A WHERE A.ID = OLD.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);
    COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 5, '0')||' - '||B.PESSOAL_NOME FROM TBFOLHAPAGAMENTO_COLABORADOR A INNER JOIN TBCOLABORADOR B ON B.CODIGO = A.COLABORADOR_ID WHERE A.ID = OLD.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);

    IF (OLD.INC_PADRAO = 0) THEN
    BEGIN

        OLD_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 6, '0')||' - '||C.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA C WHERE C.ID = OLD.VERBA_ID), '');

        IF (OLD.ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'VERBA:'||OLD_VERBA||' EXCLUIDA NO COLABORADOR:'||COLABORADOR;
        END

    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBFOLHAPAGAMENTO', TBFOLHAPAGAMENTO_ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_verbas_b01u for tbfolhapagamento_verbas
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE TBFOLHAPAGAMENTO_ID INTEGER;
DECLARE VARIABLE COLABORADOR varchar(500);

DECLARE VARIABLE OLD_VERBA VARCHAR(500);
DECLARE VARIABLE NEW_VERBA VARCHAR(500);
BEGIN

    HISTORICO = '';
    TBFOLHAPAGAMENTO_ID = COALESCE((SELECT FIRST 1 A.TBFOLHAPAGAMENTO_ID FROM TBFOLHAPAGAMENTO_COLABORADOR A WHERE A.ID = OLD.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);
    COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 5, '0')||' - '||B.PESSOAL_NOME FROM TBFOLHAPAGAMENTO_COLABORADOR A INNER JOIN TBCOLABORADOR B ON B.CODIGO = A.COLABORADOR_ID WHERE A.ID = OLD.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);

    IF (OLD.INC_PADRAO = 0) THEN
    BEGIN

        OLD_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 6, '0')||' - '||C.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA C WHERE C.ID = OLD.VERBA_ID), '');
        NEW_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 6, '0')||' - '||C.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA C WHERE C.ID = NEW.VERBA_ID), '');

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

        IF (OLD.NATUREZA <> NEW.NATUREZA) THEN
        BEGIN
            HISTORICO = HISTORICO||' NATUREZA:'||OLD.NATUREZA||'->'||NEW.NATUREZA;
        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

    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'VERBA:'||NEW_VERBA||' DO COLABORADOR:'||COLABORADOR||' ALTERADA:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBFOLHAPAGAMENTO', TBFOLHAPAGAMENTO_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolhapagamento_verbas_b02i for tbfolhapagamento_verbas
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TBFOLHAPAGAMENTO_ID INTEGER;
DECLARE VARIABLE COLABORADOR varchar(500);

DECLARE VARIABLE NEW_VERBA VARCHAR(500);
BEGIN

    HISTORICO = '';
    TBFOLHAPAGAMENTO_ID = COALESCE((SELECT FIRST 1 A.TBFOLHAPAGAMENTO_ID FROM TBFOLHAPAGAMENTO_COLABORADOR A WHERE A.ID = NEW.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);
    COLABORADOR = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 5, '0')||' - '||B.PESSOAL_NOME FROM TBFOLHAPAGAMENTO_COLABORADOR A INNER JOIN TBCOLABORADOR B ON B.CODIGO = A.COLABORADOR_ID WHERE A.ID = NEW.TBFOLHAPAGAMENTO_COLABORADOR_ID), 0);

    IF (NEW.INC_PADRAO = 0) THEN
    BEGIN

        NEW_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(C.ID, 6, '0')||' - '||C.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA C WHERE C.ID = NEW.VERBA_ID), '');

        IF (NEW.ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'VERBA:'||NEW_VERBA||' INCLUIDA NO COLABORADOR:'||COLABORADOR;
        END

    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBFOLHAPAGAMENTO', TBFOLHAPAGAMENTO_ID, HISTORICO);
    END
END
^

SET TERM ; ^

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

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR DROP ID2;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER ID POSITION 1;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER TBFOLHAPAGAMENTO_ID POSITION 2;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER COLABORADOR_ID POSITION 3;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER CARGO_ID POSITION 4;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER SALARIO_BASE POSITION 5;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER BASE_INSS POSITION 6;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER BASE_FGTS POSITION 7;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER VALOR_FGTS POSITION 8;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER FGTS_CONTRIBUICAO_SOCIAL POSITION 9;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER BASE_IRRF POSITION 10;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER VALOR_LIQUIDO POSITION 11;

ALTER TABLE TBFOLHAPAGAMENTO_COLABORADOR
ALTER INC_PADRAO POSITION 12;