CREATE TRIGGER TTBPONTO_PROGRAMACAO_B01I FOR TBPONTO_PROGRAMACAO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF(NEW.CONTROLE IS NULL) THEN
    NEW.CONTROLE = GEN_ID(GTBPONTO_PROGRAMACAO,1);
END;

CREATE TRIGGER TTBPONTO_PROGRAMACAO_B02I FOR TBPONTO_PROGRAMACAO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

  HISTORICO = '';

  IF(NEW.CONTROLE > 0) THEN
  BEGIN
    HISTORICO = HISTORICO||'Reg.incluido';
  END

  IF(HISTORICO <> '') THEN
  BEGIN
    EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_PROGRAMACAO', NEW.CONTROLE, HISTORICO);
  END
END;

CREATE OR ALTER TRIGGER TTBPONTO_PROGRAMACAO_B01U FOR TBPONTO_PROGRAMACAO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';
    IF(OLD.DATA_INICIAL <> NEW.DATA_INICIAL) THEN
    BEGIN
       HISTORICO = HISTORICO||'Dt.Inicial:'||OLD.DATA_INICIAL||'->'||NEW.DATA_INICIAL;
    END

    IF(OLD.DATA_FINAL <> NEW.DATA_FINAL)THEN
    BEGIN
        HISTORICO = HISTORICO||'Dt.Final:'||OLD.DATA_FINAL||'->'||NEW.DATA_FINAL;
    END

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

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

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

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

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

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

    IF(OLD.SITUACAO_CODIGO <> NEW.SITUACAO_CODIGO)THEN
    BEGIN
        HISTORICO = HISTORICO||'Sit:'||OLD.SITUACAO_CODIGO||'->'||NEW.SITUACAO_CODIGO;
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_PROGRAMACAO',NEW.CONTROLE,FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE TRIGGER TTBPONTO_PROGRAMACAO_B01D FOR TBPONTO_PROGRAMACAO
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

  HISTORICO = '';

  IF(OLD.CONTROLE > 0) THEN
  BEGIN
    HISTORICO = HISTORICO||'Reg.excluído';
  END

  IF(HISTORICO <> '') THEN
  BEGIN
    EXECUTE PROCEDURE SPI_HISTORICO('TBPONTO_PROGRAMACAO', OLD.CONTROLE, HISTORICO);
  END
END;