CREATE TRIGGER TTBCOLABORADOR_DISPON_01I FOR TBCOLABORADOR_DISPONIBILIDADE_T
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GTBCOLABORADOR_DISPONIBILIDADE,1);
END;

CREATE OR ALTER TRIGGER TTBCOLABORADOR_DISPON_B02I FOR TBCOLABORADOR_DISPONIBILIDADE_T
ACTIVE BEFORE INSERT POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

    IF ((SELECT A.CARGO FROM TBCOLABORADOR_DISPONIBILIDADE_T A WHERE A.GP_ID = NEW.GP_ID AND A.TURNO = NEW.TURNO AND A.DATA = NEW.DATA AND A.CARGO = NEW.CARGO) > 0) then
    BEGIN
        EXCEPTION "..." 'Registro j? existente com os dados informados!, Cargo id: '||NEW.CARGO||', na data: '||FORMATDATE(NEW.DATA)||',no turno: '||iif(new.TURNO = '1','Manha','Noite');
    END

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

CREATE TRIGGER TTBCOLABORADOR_DISPON_T_B01U FOR TBCOLABORADOR_DISPONIBILIDADE_T
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.GP_ID <> NEW.GP_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' Grupo Producao no ID: '||OLD.ID||', Alterado: '|| OLD.GP_ID||'->'||NEW.GP_ID;
    END

    IF ( OLD.DATA <> NEW.DATA) THEN
    BEGIN
        HISTORICO = HISTORICO||' Data no ID: '||OLD.ID||', Alterada: '|| OLD.DATA||'->'||NEW.DATA;
    END

    IF ( OLD.TURNO <> NEW.TURNO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Turno no ID: '||OLD.ID||', Alterado: '|| OLD.TURNO||'->'||NEW.TURNO;
    END

    IF ( OLD.CARGO <> NEW.CARGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Cargo no ID: '||OLD.ID||', Alterado: '|| OLD.CARGO||'->'||NEW.CARGO;
    END

    IF ( OLD.QUANTIDADE <> NEW.QUANTIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||' Qtd.Colaboradores no ID: '||OLD.ID||', Alterada: '|| OLD.QUANTIDADE||'->'||NEW.QUANTIDADE;
    END

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

CREATE TRIGGER TTBCOLABORADOR_DISPON_B01D FOR TBCOLABORADOR_DISPONIBILIDADE_T
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

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



