SET TERM ^ ;



/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: TTBREFEITORIO_REFEICAO_B01D */
CREATE OR ALTER TRIGGER TTBREFEITORIO_REFEICAO_B01D FOR TBREFEITORIO_REFEICAO
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('TBREFEITORIO_REFEICAO', OLD.ID,  HISTORICO);
   END 
END
^


/* Trigger: TTBREFEITORIO_REFEICAO_B01I */
CREATE OR ALTER TRIGGER TTBREFEITORIO_REFEICAO_B01I FOR TBREFEITORIO_REFEICAO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbrefeitorio_refeicao,1);
end
^


/* Trigger: TTBREFEITORIO_REFEICAO_B01U */
CREATE OR ALTER TRIGGER TTBREFEITORIO_REFEICAO_B01U FOR TBREFEITORIO_REFEICAO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
BEGIN

   NEW.TURNO = NEW.TIPO_ID;
    
   HISTORICO = '';

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

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

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

   IF(NEW.REFEICAO1_ID <> OLD.REFEICAO1_ID)THEN
   BEGIN
        HISTORICO = HISTORICO || ' REF. PRINCIPAL:' || OLD.REFEICAO1_ID || '->' || NEW.REFEICAO1_ID;
   END

   IF(NEW.REFEICAO2_ID <> OLD.REFEICAO2_ID)THEN
   BEGIN
        HISTORICO = HISTORICO || ' REF ALT:' || OLD.REFEICAO2_ID || '->' || NEW.REFEICAO2_ID;
   END

   IF(NEW.RESERVA1_ID <> OLD.RESERVA1_ID)THEN
   BEGIN
        HISTORICO = HISTORICO || ' RESERVA PRINC:' || OLD.RESERVA1_ID || '->' || NEW.RESERVA1_ID;
   END

   IF(NEW.RESERVA2_ID <> OLD.RESERVA2_ID)THEN
   BEGIN
        HISTORICO = HISTORICO || ' RESERVA ALT:' || OLD.RESERVA2_ID || '->' || NEW.RESERVA2_ID;
   END

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


/* Trigger: TTBREFEITORIO_REFEICAO_B02I */
CREATE OR ALTER TRIGGER TTBREFEITORIO_REFEICAO_B02I FOR TBREFEITORIO_REFEICAO
ACTIVE BEFORE INSERT POSITION 1
AS
declare variable HISTORICO VARCHAR(500);
BEGIN

  HISTORICO = '';

  IF(NEW.TIPO_ID = 1)THEN
  BEGIN
      INSERT INTO TBREFEITORIO_REFEICAO (DATA_REFEICAO, DATA_RESERVA, TIPO_ID, REFEICAO1_ID, REFEICAO2_ID, RESERVA1_ID, RESERVA2_ID, LIVRE, TURNO)
                           VALUES (NEW.DATA_REFEICAO, NEW.DATA_RESERVA, 2, NEW.REFEICAO1_ID, NEW.REFEICAO2_ID, NEW.RESERVA1_ID, NEW.RESERVA2_ID, NEW.LIVRE, 2);

      /*
      INSERT INTO TBREFEITORIO_REFEICAO (DATA_REFEICAO, DATA_RESERVA, TIPO_ID, REFEICAO1_ID, REFEICAO2_ID, RESERVA1_ID, RESERVA2_ID, LIVRE, TURNO)
                           VALUES (NEW.DATA_REFEICAO, NEW.DATA_RESERVA, 3, NEW.REFEICAO1_ID, NEW.REFEICAO2_ID, NEW.RESERVA1_ID, NEW.RESERVA2_ID, NEW.LIVRE, 3);
      */
  END

  /*
  if( new.tipo_id = 3)then
  begin
    new.turno = 1;
  end else
  begin
    new.turno = new.tipo_id;
  end
  */

  IF (NEW.ID > 0) THEN
  BEGIN
      HISTORICO = HISTORICO||'REGISTRO INCLUIDO';
  END
    
  new.turno = new.tipo_id;

  if (HISTORICO <> '') then
  BEGIN
    execute procedure SPI_HISTORICO('TBREFEITORIO_REFEICAO', new.id, HISTORICO);
  END
end
^


/* Trigger: TTBREFEITORIO_REFEICAO_B02U */
CREATE OR ALTER TRIGGER TTBREFEITORIO_REFEICAO_B02U FOR TBREFEITORIO_REFEICAO
ACTIVE BEFORE UPDATE POSITION 2
AS
begin
  if(new.tipo_id is distinct from old.tipo_id)then
  begin
    new.turno = new.tipo_id;
  end
end
^

SET TERM ; ^