ALTER TABLE TBFOLHAPAGAMENTO
    ADD QTD_DIAS INTEGER DEFAULT 30;


COMMENT ON COLUMN TBFOLHAPAGAMENTO.QTD_DIAS IS
'Qtd. em Dias do mês para desconto de faltas por dias';


UPDATE TBFOLHAPAGAMENTO T
    SET T.QTD_DIAS = COALESCE((SELECT EXTRACT(DAY FROM FN_END_OF_MONTH(T.DATA_FOLHA)) FROM RDB$DATABASE), 30)
    WHERE T.QTD_DIAS IS NULL;

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

SET TERM ^ ;

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

DECLARE VARIABLE OLD_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE NEW_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE OLD_FOLPAG_CONTABIL VARCHAR(500);  
DECLARE VARIABLE NEW_FOLPAG_CONTABIL VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    OLD_ESTABELECIMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.NOMEFANTASIA FROM TBESTABELECIMENTO A WHERE A.CODIGO = OLD.ESTABELECIMENTO_ID), '');
    NEW_ESTABELECIMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.NOMEFANTASIA FROM TBESTABELECIMENTO A WHERE A.CODIGO = NEW.ESTABELECIMENTO_ID), '');
    OLD_FOLPAG_CONTABIL = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 6, '0')||' - '||B.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA B WHERE B.ID = OLD.FOLPAG_CONTABIL_ID), '');
    NEW_FOLPAG_CONTABIL = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 6, '0')||' - '||B.DESCRICAO_ABREVIADA FROM TBFOLPAG_VERBA B WHERE B.ID = NEW.FOLPAG_CONTABIL_ID), '');

    IF (OLD.ESTABELECIMENTO_ID <> NEW.ESTABELECIMENTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' ESTAB:'||OLD_ESTABELECIMENTO||'->'||NEW_ESTABELECIMENTO;
    END

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

    IF (OLD.FOLPAG_CONTABIL_ID <> NEW.FOLPAG_CONTABIL_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' FOLHA PAG:'||OLD_FOLPAG_CONTABIL||'->'||NEW_FOLPAG_CONTABIL;
    END

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

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

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

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

SET TERM ; ^

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

SET TERM ^ ;

CREATE OR ALTER function FN_DATE_HUMANIZE (
    DATA date,
    TIPO integer)
returns varchar(50)
as
declare variable ANO varchar(10);
declare variable MES varchar(10);
declare variable DIA varchar(10);
declare variable RES varchar(50);
begin

  DIA = extract(day from DATA);
  MES = extract(month from DATA);
  ANO = extract(year  from DATA);

  IF(TIPO = 1)THEN
  BEGIN
    MES = trim(IIF(MES = 1,'Jan',
          IIF(MES = 2,'Fev',
          IIF(MES = 3,'Mar',
          IIF(MES = 4,'Abr',
          IIF(MES = 5,'Mai',
          IIF(MES = 6,'Jun',
          IIF(MES = 7,'Jul',
          IIF(MES = 8,'Ago',
          IIF(MES = 9,'Set',
          IIF(MES =10,'Out',
          IIF(MES =11,'Nov',
          IIF(MES =12,'Dez','')))))))))))));

          RES = MES||'/'|| (cast(ANO as integer) - 2000);
  END

  IF(TIPO = 2 or TIPO = 3 or TIPO = 4)THEN
  BEGIN
    MES =trim(IIF(MES = 1,'Janeiro',
          IIF(MES = 2,'Fevereiro',
          IIF(MES = 3,'Março',
          IIF(MES = 4,'Abril',
          IIF(MES = 5,'Maio',
          IIF(MES = 6,'Junho',
          IIF(MES = 7,'Julho',
          IIF(MES = 8,'Agosto',
          IIF(MES = 9,'Setembro',
          IIF(MES =10,'Outubro',
          IIF(MES =11,'Novembro',
          IIF(MES =12,'Dezembro','')))))))))))));

          IF(TIPO = 2)THEN
          BEGIN
            RES = MES||'/'||ANO;
          END ELSE
          IF (TIPO = 4) THEN
          BEGIN
            RES = MES||' de '||ANO;
          END ELSE
          BEGIN
            RES = lpad(DIA,2,'0')||' de '||MES||' de '||ANO;
          END
  END

  return trim(RES);
end
^

SET TERM ; ^

