CREATE TABLE TBFAMILIA_FLUXO (
    ID INTEGER NOT NULL,
    FAMILIA_ID INTEGER,
    FLUXO_ID INTEGER,
    ORDEM SMALLINT,
    OPERADOR VARCHAR(50),
    TEMPO NUMERIC(15,4),
    COR_ID INTEGER,
    TAMANHO INTEGER);

ALTER TABLE TBFAMILIA_FLUXO
ADD CONSTRAINT PK_TBFAMILIA_FLUXO
PRIMARY KEY (ID);

CREATE SEQUENCE GTBFAMILIA_FLUXO;

create trigger tbfamilia_fluxo_b01i for tbfamilia_fluxo
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbfamilia_fluxo,1);
end;

CREATE trigger tbfamilia_fluxo_b02i for tbfamilia_fluxo
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'FLUXO INCLUIDO:'||NEW.FLUXO_ID||' - '||COALESCE((SELECT FIRST 1 T.DESCRICAO FROM tbfluxo_producao T WHERE T.ID = NEW.FLUXO_ID), '');
    END

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

CREATE trigger tbfamilia_fluxo_b01d for tbfamilia_fluxo
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'FLUXO EXCLUIDO:'||OLD.FLUXO_ID||' - '||COALESCE((SELECT FIRST 1 T.DESCRICAO FROM tbfluxo_producao T WHERE T.ID = OLD.FLUXO_ID), '');
    END

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






CREATE OR ALTER trigger ttbmodelo_b06i for tbmodelo
active before insert position 1
AS

DECLARE VARIABLE UP_ID INTEGER;
DECLARE VARIABLE ESTOQUE CHAR(1);
DECLARE VARIABLE ESTEIRA_PRODUCAO CHAR(1);
DECLARE VARIABLE ORDEM INTEGER;
DECLARE VARIABLE OBSERVACAO VARCHAR(100);
DECLARE VARIABLE FLUXO_ID INTEGER;
DECLARE VARIABLE TEMPO NUMERIC(15,4);

BEGIN
  FOR
    SELECT T.UP_ID, T.ESTOQUE, T.ESTEIRA_PRODUCAO, T.ORDEM, T.OBSERVACAO  FROM TBFAMILIA_ROTEIRO T WHERE T.FAMILIA_ID = NEW.FAMILIA_CODIGO

  INTO
    :UP_ID,
    :ESTOQUE,
    :ESTEIRA_PRODUCAO,
    :ORDEM,
    :OBSERVACAO
  DO BEGIN

    INSERT INTO TBMODELO_SETOR (MODELO_CODIGO, SETOR_CODIGO, ESTOQUE, ESTEIRA_PRODUCAO, ORDEM, OBSERVACAO)
                VALUES (NEW.CODIGO, :UP_ID, :ESTOQUE, :ESTEIRA_PRODUCAO, :ORDEM, :OBSERVACAO);

  END

  FOR
    SELECT FLUXO_ID, ORDEM, TEMPO  FROM TBFAMILIA_FLUXO T WHERE T.FAMILIA_ID = NEW.FAMILIA_CODIGO

  INTO
    :FLUXO_ID,
    :ORDEM,
    :TEMPO
  DO BEGIN

    INSERT INTO TBMODELO_FLUXO_PRODUCAO (MODELO_ID, FLUXO_ID, ORDEM, TEMPO)
                VALUES (NEW.CODIGO, :FLUXO_ID, :ORDEM, :TEMPO);

  END
END;






