CREATE SEQUENCE GTBPONTO_SITUACAO;

SET GENERATOR GTBPONTO_SITUACAO TO 63;

ALTER TABLE TBPONTO_SITUACAO
ADD ID INTEGER;

CREATE OR ALTER TRIGGER TTBPONTO_SITUACAO_B03I FOR TBPONTO_SITUACAO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBPONTO_SITUACAO,1);
END;

CREATE OR ALTER TRIGGER TTBPONTO_SITUACAO_B01I FOR TBPONTO_SITUACAO
ACTIVE BEFORE INSERT POSITION 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE EXIST INTEGER;
BEGIN

    HISTORICO = '';


    IF (NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Incluido';
    END

    EXIST = COALESCE((SELECT B.CODIGO FROM TBPONTO_SITUACAO B WHERE B.CODIGO = NEW.CODIGO),0);

    IF (EXIST > 0) then
    BEGIN
        EXCEPTION "..." 'Codigo ja cadastrado!';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_SITUACAO',NEW.ID, HISTORICO);
    END
end;

CREATE OR ALTER TRIGGER TTBPONTO_SITUACAO_B01U FOR TBPONTO_SITUACAO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE EXIST INTEGER;
BEGIN


    EXIST = COALESCE((SELECT B.CODIGO FROM TBPONTO_SITUACAO B WHERE B.CODIGO = NEW.CODIGO AND B.ID <> NEW.ID),0);

    IF (EXIST > 0) then
    BEGIN
        EXCEPTION "..." 'Codigo ja cadastrado!';
    END

    HISTORICO = '';

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

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

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

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

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

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

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

    IF ( OLD.PERC_HREXTRA <> NEW.PERC_HREXTRA) THEN
    BEGIN
        HISTORICO = HISTORICO||',%Hora Extra:'|| OLD.PERC_HREXTRA||'->'||NEW.PERC_HREXTRA;
    END

    IF ( OLD.ADD_ACJEF <> NEW.ADD_ACJEF) THEN
    BEGIN
        HISTORICO = HISTORICO||',Sit.arquivo ACJEF:'|| OLD.ADD_ACJEF||'->'||NEW.ADD_ACJEF;
    END

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

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

    IF ( OLD.SITUACAO_TIPO <> NEW.SITUACAO_TIPO) THEN
    BEGIN
        HISTORICO = HISTORICO||',Sit.Tipo:'|| OLD.SITUACAO_TIPO||'->'||NEW.SITUACAO_TIPO;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_SITUACAO',NEW.ID, HISTORICO);
    END
end;

CREATE OR ALTER TRIGGER TTBPONTO_SITUACAO_B01D FOR TBPONTO_SITUACAO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_SITUACAO',old.ID, HISTORICO);
    END
end;

