CREATE OR ALTER TRIGGER TTBFLUXO_PRODUCAO_B01I FOR TBFLUXO_PRODUCAO
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.ID is null) then
    new.ID = gen_id(GTBFLUXO_PRODUCAO,1);
end;

CREATE OR ALTER TRIGGER TTBFLUXO_PRODUCAO_B02I FOR TBFLUXO_PRODUCAO
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

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

CREATE OR ALTER TRIGGER TTBFLUXO_PRODUCAO_B02U FOR TBFLUXO_PRODUCAO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

    IF ( OLD.MAQUINA_ID <> NEW.MAQUINA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' ID Maquina do Fluxo: '||OLD.ID||', Alterada: '|| OLD.MAQUINA_ID||'->'||NEW.MAQUINA_ID;
    END

    IF ( OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
        HISTORICO = HISTORICO||' Status do Fluxo: '||OLD.ID||', Alterada: '|| OLD.STATUS||'->'||NEW.STATUS;
    END

    IF ( OLD.TEMPO <> NEW.TEMPO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tempo do Fluxo: '||OLD.ID||', Alterada: '|| OLD.TEMPO||'->'||NEW.TEMPO;
    END

    IF ( OLD.TIPO <> NEW.TIPO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tipo do Fluxo: '||OLD.ID||', Alterada: '|| OLD.TIPO||'->'||NEW.TIPO;
    END

    IF ( OLD.BALANCEAMENTO <> NEW.BALANCEAMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Balanceamento do Fluxo: '||OLD.ID||', Alterada: '|| OLD.BALANCEAMENTO||'->'||NEW.BALANCEAMENTO;
    END

    IF ( OLD.TEMPO_VAR_COR1 <> NEW.TEMPO_VAR_COR1) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tempo Conf.1 Fluxo: '||OLD.ID||', Alterada: '|| OLD.TEMPO_VAR_COR1||'->'||NEW.TEMPO_VAR_COR1;
    END

    IF ( OLD.TEMPO_VAR_COR2 <> NEW.TEMPO_VAR_COR2) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tempo Conf.2 Fluxo: '||OLD.ID||', Alterada: '|| OLD.TEMPO_VAR_COR2||'->'||NEW.TEMPO_VAR_COR2;
    END

    IF ( OLD.QUANTIDADE_INICIAL <> NEW.QUANTIDADE_INICIAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' Qtd. Inicial do Fluxo: '||OLD.ID||', Alterada: '|| OLD.QUANTIDADE_INICIAL||'->'||NEW.QUANTIDADE_INICIAL;
    END

    IF ( OLD.QUANTIDADE_FINAL <> NEW.QUANTIDADE_FINAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' Qtd. Final do Fluxo: '||OLD.ID||', Alterada: '|| OLD.QUANTIDADE_FINAL||'->'||NEW.QUANTIDADE_FINAL;
    END

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

    IF ( OLD.FLUXO_PADRAO <> NEW.FLUXO_PADRAO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Fluxo Padrao: '||OLD.ID||', Alterado: '|| OLD.FLUXO_PADRAO||'->'||NEW.FLUXO_PADRAO;
    END

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

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

    HISTORICO = '';

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

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

CREATE OR ALTER TRIGGER TTBFLUXO_FERRAMENTARIA_B01I FOR TBFLUXO_FERRAMENTARIA
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.FLUXO_ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Ferramentaria incluida no Fluxo: '||NEW.FLUXO_ID;
    END

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

CREATE OR ALTER TRIGGER TTBFLUXO_FERRAMENTARIA_B01U FOR TBFLUXO_FERRAMENTARIA
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.FERRAMENTARIA_ID <> NEW.FERRAMENTARIA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' Ferramenta do Fluxo: '||OLD.FLUXO_ID||', Alterada: '|| OLD.FERRAMENTARIA_ID||'->'||NEW.FERRAMENTARIA_ID;
    END

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

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

    HISTORICO = '';

    IF ( OLD.FLUXO_ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Ferramenta ID: '||OLD.FERRAMENTARIA_ID||' Excluida do fluxo: '||OLD.FLUXO_ID;
    END

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







