SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPONTO_CARTAOB10IUD FOR TBPONTO_CARTAO
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 10
AS
DECLARE VARIABLE DATAINICIAL DATE;
DECLARE VARIABLE DATAFINAL DATE;
DECLARE VARIABLE MODULO_CODIGO INTEGER;
DECLARE VARIABLE COLABORADOR_ID INTEGER;
DECLARE VARIABLE ESTAB_ID INTEGER;

DECLARE VARIABLE DATA1 VARCHAR(10);
DECLARE VARIABLE DATA2 VARCHAR(23);
DECLARE VARIABLE DATA_UTILIZADA DATE;
BEGIN

    IF(INSERTING) THEN
    BEGIN
        :DATA_UTILIZADA = NEW.DATA;
        :COLABORADOR_ID = COALESCE(NEW.COLABORADOR_CODIGO, 0);
    END ELSE
    BEGIN
        :DATA_UTILIZADA = OLD.DATA;
        :COLABORADOR_ID = COALESCE(OLD.COLABORADOR_CODIGO, 0);
    END

    :ESTAB_ID = COALESCE((SELECT FIRST 1 T.ESTABELECIMENTO_ID FROM TBCOLABORADOR T WHERE T.CODIGO = :COLABORADOR_ID), 0);

    IF(:ESTAB_ID > 0) THEN
    BEGIN
        FOR SELECT
            (SELECT FIRST 1 A.DATAINICIAL   FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = :ESTAB_ID),
            (SELECT FIRST 1 A.DATAFINAL     FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = :ESTAB_ID),
            COALESCE((SELECT FIRST 1 A.MODULO_CODIGO FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = :ESTAB_ID),0),
        
            EXTRACT(DAY FROM :DATA_UTILIZADA)||'/'||EXTRACT(MONTH FROM :DATA_UTILIZADA)||'/'||EXTRACT(YEAR FROM :DATA_UTILIZADA),
            (SELECT FIRST 1 EXTRACT(DAY FROM A.DATAINICIAL)||'/'||EXTRACT(MONTH FROM A.DATAINICIAL)||'/'||EXTRACT(YEAR FROM A.DATAINICIAL)
                        ||' A '||EXTRACT(DAY FROM A.DATAFINAL)||'/'||EXTRACT(MONTH FROM A.DATAFINAL)||'/'||EXTRACT(YEAR FROM A.DATAFINAL)
           FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = :ESTAB_ID)
        
        FROM RDB$DATABASE
        
        INTO :DATAINICIAL, :DATAFINAL, :MODULO_CODIGO, :DATA1, :DATA2
        DO BEGIN
          IF (:MODULO_CODIGO = 0)      THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14] NÃO LOCALIZADO';
          IF (:DATA_UTILIZADA < :DATAINICIAL) THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2;
          IF (:DATA_UTILIZADA > :DATAFINAL)   THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2;
        END

    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPONTO_CARTAO_MARCACAOB10IUD FOR TBPONTO_CARTAO_MARCACAO
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 10
AS
DECLARE VARIABLE DATAINICIAL DATE;
DECLARE VARIABLE DATAFINAL DATE;
DECLARE VARIABLE MODULO_CODIGO INTEGER;
DECLARE VARIABLE COLABORADOR_ID INTEGER;
DECLARE VARIABLE ESTAB_ID INTEGER;

DECLARE VARIABLE DATA1 VARCHAR(10);
DECLARE VARIABLE DATA2 VARCHAR(23);
DECLARE VARIABLE DATA_UTILIZADA DATE;
BEGIN

    IF(INSERTING) THEN
    BEGIN
        :DATA_UTILIZADA = NEW.DATA;
        :COLABORADOR_ID = COALESCE(NEW.COLABORADOR_CODIGO, 0);
    END ELSE
    BEGIN
        :DATA_UTILIZADA = OLD.DATA;
        :COLABORADOR_ID = COALESCE(OLD.COLABORADOR_CODIGO, 0);
    END

    :ESTAB_ID = COALESCE((SELECT FIRST 1 T.ESTABELECIMENTO_ID FROM TBCOLABORADOR T WHERE T.CODIGO = :COLABORADOR_ID), 0);

    IF(:ESTAB_ID > 0) THEN
    BEGIN

        FOR SELECT
            (SELECT FIRST 1 A.DATAINICIAL   FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = :ESTAB_ID),
            (SELECT FIRST 1 A.DATAFINAL     FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = :ESTAB_ID),
            COALESCE((SELECT FIRST 1 A.MODULO_CODIGO FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = :ESTAB_ID),0),
        
            EXTRACT(DAY FROM :DATA_UTILIZADA)||'/'||EXTRACT(MONTH FROM :DATA_UTILIZADA)||'/'||EXTRACT(YEAR FROM :DATA_UTILIZADA),
            (SELECT FIRST 1 EXTRACT(DAY FROM A.DATAINICIAL)||'/'||EXTRACT(MONTH FROM A.DATAINICIAL)||'/'||EXTRACT(YEAR FROM A.DATAINICIAL)
                        ||' A '||EXTRACT(DAY FROM A.DATAFINAL)||'/'||EXTRACT(MONTH FROM A.DATAFINAL)||'/'||EXTRACT(YEAR FROM A.DATAFINAL)
           FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = :ESTAB_ID)
        
        FROM RDB$DATABASE
        
        INTO :DATAINICIAL, :DATAFINAL, :MODULO_CODIGO, :DATA1, :DATA2
        DO BEGIN
          IF (:MODULO_CODIGO = 0)      THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14] NÃO LOCALIZADO';
          IF (:DATA_UTILIZADA < :DATAINICIAL) THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2;
          IF (:DATA_UTILIZADA > :DATAFINAL)   THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2;
        END
    END

END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPONTO_MARCACAOB10IUD FOR TBPONTO_MARCACAO
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 10
AS
DECLARE VARIABLE DATAINICIAL DATE;
DECLARE VARIABLE DATAFINAL DATE;
DECLARE VARIABLE MODULO_CODIGO INTEGER;
DECLARE VARIABLE COLABORADOR_ID INTEGER;
DECLARE VARIABLE ESTAB_ID INTEGER;

DECLARE VARIABLE DATA1 VARCHAR(10);
DECLARE VARIABLE DATA2 VARCHAR(23);
DECLARE VARIABLE DATA_UTILIZADA DATE;
BEGIN

    IF(INSERTING) THEN
    BEGIN
        :DATA_UTILIZADA = NEW.DATA;
        :COLABORADOR_ID = COALESCE(NEW.COLABORADOR_CODIGO, 0);
    END ELSE
    BEGIN
        :DATA_UTILIZADA = OLD.DATA;
        :COLABORADOR_ID = COALESCE(OLD.COLABORADOR_CODIGO, 0);
    END

    :ESTAB_ID = COALESCE((SELECT FIRST 1 T.ESTABELECIMENTO_ID FROM TBCOLABORADOR T WHERE T.CODIGO = :COLABORADOR_ID), 0);

    IF(:ESTAB_ID > 0) THEN
    BEGIN
        FOR SELECT
            (SELECT FIRST 1 A.DATAINICIAL   FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = 1),
            (SELECT FIRST 1 A.DATAFINAL     FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = 1),
            COALESCE((SELECT FIRST 1 A.MODULO_CODIGO FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = 1),0),
        
            EXTRACT(DAY FROM :DATA_UTILIZADA)||'/'||EXTRACT(MONTH FROM :DATA_UTILIZADA)||'/'||EXTRACT(YEAR FROM :DATA_UTILIZADA),
            (SELECT FIRST 1 EXTRACT(DAY FROM A.DATAINICIAL)||'/'||EXTRACT(MONTH FROM A.DATAINICIAL)||'/'||EXTRACT(YEAR FROM A.DATAINICIAL)
                        ||' A '||EXTRACT(DAY FROM A.DATAFINAL)||'/'||EXTRACT(MONTH FROM A.DATAFINAL)||'/'||EXTRACT(YEAR FROM A.DATAFINAL)
           FROM TBCONFIGURACAO_PERIODO A WHERE A.MODULO_CODIGO = 14 AND A.ESTABELECIMENTO_CODIGO = 1)
        
        FROM RDB$DATABASE
        
        INTO :DATAINICIAL, :DATAFINAL, :MODULO_CODIGO, :DATA1, :DATA2
        DO BEGIN
          IF (:MODULO_CODIGO = 0)      THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14] NÃO LOCALIZADO';
          IF (:DATA_UTILIZADA < :DATAINICIAL) THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2;
          IF (:DATA_UTILIZADA > :DATAFINAL)   THEN EXCEPTION "..." 'MÓDULO DE DEPARTAMENTO PESSOAL[14]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2;
        END
    END

END
^

SET TERM ; ^


