ALTER TABLE TBFOLPAG_VERBA
    ADD DESCONTO_INSS INTEGER DEFAULT 0;

COMMENT ON COLUMN TBFOLPAG_VERBA.DESCONTO_INSS IS
'Se natureza C (Credora / Debita do Colaborador), possibilita utilizar no valor total do desconto do INSS

0 - NAO;
1 - SIM;';

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

SET TERM ^ ;

CREATE OR ALTER trigger ttbfolpag_verba_b01u for tbfolpag_verba
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE CODIGO INTEGER;
BEGIN
    HISTORICO = '';
    IF(OLD.CONTACONTABIL <> NEW.CONTACONTABIL) THEN
    BEGIN
        HISTORICO = HISTORICO||' C.Contabil: '||OLD.CONTACONTABIL||'->'||NEW.CONTACONTABIL;
    END

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

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

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

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

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

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

    if(OLD.CODIGO <> NEW.CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Codigo: '||OLD.CODIGO||'->'||NEW.CODIGO;
        CODIGO = COALESCE((SELECT FIRST 1 A.CODIGO FROM TBFOLPAG_VERBA A WHERE A.CODIGO = NEW.CODIGO AND A.ID <> NEW.ID),0);
    END
    IF(CODIGO > 0)THEN
        BEGIN
           EXCEPTION "..." 'VERBA CODIGO: '||CODIGO||' JÁ CADASTRADA! ';
        END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBFOLPAG_VERBA',NEW.ID,HISTORICO);
    END
END
^

SET TERM ; ^

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

INSERT INTO TBPARAMETRO (TABELA, CODIGO, DESCRICAO, VALOR, OBSERVACAO, GRUPO)
    VALUES ('SISTEMA', 'HORAS_MES_FOLPAG', 'Valor em Horas por mes para calculo de dias na folha de pagamento', '220', 'VALOR DE HORAS POR MES PARA CALCULO NA FOLHA DE PAGAMENTO', 'WEB34060');

INSERT INTO TBPARAMETRO (TABELA, CODIGO, DESCRICAO, VALOR, OBSERVACAO, GRUPO)
    VALUES ('SISTEMA', 'HORAS_DIA_FOLPAG', 'Valor em Horas por dia para calculo na folha de pagamento', '7.333', 'VALOR DE HORAS POR DIA PARA CALCULO NA FOLHA DE PAGAMENTO', 'WEB34060');
	
/****************************************************************************/
/****************************************************************************/

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

COMMENT ON COLUMN TBFOLPAG_VERBA_COLABORADOR.VALOR IS
'Valor para uso no cálculo da geração da folha

Se tipo:
0 - VALOR FIXO (R$);
1 - PERCENTUAL (%);
2 - QUANTIDADE (DIAS);

Se tipo 2, possivel preencher o campo VALOR2 com horas';

COMMENT ON COLUMN TBFOLPAG_VERBA_COLABORADOR.VALOR2 IS
'Valor para uso no desconto por HORAS, somente quando TIPO = 2';


ALTER TABLE TBCOLABORADOR_DESCONTOS
    ADD VALOR2 NUMERIC(15,4);
	
COMMENT ON COLUMN TBCOLABORADOR_DESCONTOS.VALOR IS
'Valor para uso no cálculo da geração da folha

Se tipo:
0 - VALOR FIXO (R$);
1 - PERCENTUAL (%);
2 - QUANTIDADE (DIAS);

Se tipo 2, possivel preencher o campo VALOR2 com horas';

COMMENT ON COLUMN TBCOLABORADOR_DESCONTOS.VALOR2 IS
'Valor para uso no desconto por HORAS, somente quando TIPO = 2';

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

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 VERBA INTEGER;

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);

DECLARE VARIABLE OLD_FVALOR VARCHAR(100);
DECLARE VARIABLE NEW_FVALOR VARCHAR(100);
BEGIN
    
    HISTORICO = '';
    VERBA = COALESCE((SELECT FIRST 1 A.ID FROM TBFOLPAG_VERBA_COLABORADOR A WHERE A.COLABORADOR_ID = NEW.COLABORADOR_ID AND A.VERBA_ID = NEW.VERBA_ID), 0);

    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;

        IF (VERBA > 0) THEN
        BEGIN
            EXCEPTION "..." 'O COLABORADOR:'||NEW_COLABORADOR||' JA FOI REGISTRADO COM A VERBA:'||NEW_VERBA||'. OPERACAO ABORTADA!';
        END
    END

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

        IF (VERBA > 0) THEN
        BEGIN
            EXCEPTION "..." 'O COLABORADOR:'||NEW_COLABORADOR||' JA FOI REGISTRADO COM A VERBA:'||NEW_VERBA||'. OPERACAO ABORTADA!';
        END
    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 OR (NEW.TIPO = '2' AND OLD.VALOR2 <> NEW.VALOR2)) THEN
    BEGIN
        IF (OLD.TIPO = '1') THEN
        BEGIN
            OLD_FVALOR = ''||FN_FORMAT_NUMBER2(CAST(FN_CALC_PRECISION_V2(OLD.VALOR, 100, '*', 4) AS NUMERIC(15,8)), 2)||'%';
        END ELSE
        IF (OLD.TIPO = '2') THEN
        BEGIN
            OLD_FVALOR = ''||FN_FORMAT_NUMBER2(OLD.VALOR, 2)||' DIAS E '||FN_FORMAT_NUMBER2(OLD.VALOR2, 2)||' HORAS';
        END ELSE
        BEGIN
            OLD_FVALOR = 'R$ '||FN_FORMAT_NUMBER2(OLD.VALOR, 2);
        END

        IF (NEW.TIPO = '1') THEN
        BEGIN
            NEW_FVALOR = ''||FN_FORMAT_NUMBER2(CAST(FN_CALC_PRECISION_V2(NEW.VALOR, 100, '*', 4) AS NUMERIC(15,8)), 2)||'%';
        END ELSE
        IF (NEW.TIPO = '2') THEN
        BEGIN
            NEW_FVALOR = ''||FN_FORMAT_NUMBER2(NEW.VALOR, 2)||' DIAS E '||FN_FORMAT_NUMBER2(NEW.VALOR2, 2)||' HORAS';
        END ELSE
        BEGIN
            NEW_FVALOR = 'R$ '||FN_FORMAT_NUMBER2(NEW.VALOR, 2);
        END


        HISTORICO = HISTORICO||' VALOR:'||OLD_FVALOR||'->'||NEW_FVALOR;
    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 (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 ; ^

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_VERBA VARCHAR(500);
DECLARE VARIABLE NEW_VERBA VARCHAR(500);
DECLARE VARIABLE OLD_FOLHA_PAGAMENTO VARCHAR(500);
DECLARE VARIABLE NEW_FOLHA_PAGAMENTO VARCHAR(500);

DECLARE VARIABLE OLD_FVALOR VARCHAR(100);
DECLARE VARIABLE NEW_FVALOR VARCHAR(100);
BEGIN

    HISTORICO = '';

    OLD_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(V.CODIGO, 6, '0')||' - '||V.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA V WHERE V.CODIGO = OLD.VERBA_CODIGO), '');
    NEW_VERBA = COALESCE((SELECT FIRST 1 FN_LPAD(V.CODIGO, 6, '0')||' - '||V.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA V WHERE V.CODIGO = NEW.VERBA_CODIGO), '');
    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||'->'||NEW_VERBA;
    END

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

    IF (OLD.VALOR <> NEW.VALOR OR (NEW.TIPO = '2' AND OLD.VALOR2 <> NEW.VALOR2)) THEN
    BEGIN
        IF (OLD.TIPO = '1') THEN
        BEGIN
            OLD_FVALOR = ''||FN_FORMAT_NUMBER2(CAST(FN_CALC_PRECISION_V2(OLD.VALOR, 100, '*', 4) AS NUMERIC(15,8)), 2)||'%';
        END ELSE
        IF (OLD.TIPO = '2') THEN
        BEGIN
            OLD_FVALOR = ''||FN_FORMAT_NUMBER2(OLD.VALOR, 2)||' DIAS E '||FN_FORMAT_NUMBER2(OLD.VALOR2, 2)||' HORAS';
        END ELSE
        BEGIN
            OLD_FVALOR = 'R$ '||FN_FORMAT_NUMBER2(OLD.VALOR, 2);
        END

        IF (NEW.TIPO = '1') THEN
        BEGIN
            NEW_FVALOR = ''||FN_FORMAT_NUMBER2(CAST(FN_CALC_PRECISION_V2(NEW.VALOR, 100, '*', 4) AS NUMERIC(15,8)), 2)||'%';
        END ELSE
        IF (NEW.TIPO = '2') THEN
        BEGIN
            NEW_FVALOR = ''||FN_FORMAT_NUMBER2(NEW.VALOR, 2)||' DIAS E '||FN_FORMAT_NUMBER2(NEW.VALOR2, 2)||' HORAS';
        END ELSE
        BEGIN
            NEW_FVALOR = 'R$ '||FN_FORMAT_NUMBER2(NEW.VALOR, 2);
        END


        HISTORICO = HISTORICO||' VALOR:'||OLD_FVALOR||'->'||NEW_FVALOR;
    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 ; ^

