CREATE TABLE TBFAMILIA_ROTEIRO (
    ID INTEGER NOT NULL,
    FAMILIA_ID INTEGER,
    UP_ID INTEGER,
    ESTOQUE CHAR(1),
    ESTEIRA_PRODUCAO CHAR(1),
    OBSERVACAO VARCHAR(100));

ALTER TABLE TBFAMILIA_ROTEIRO
ADD CONSTRAINT PK_TBFAMILIA_ROTINA
PRIMARY KEY (ID);

CREATE SEQUENCE GTBFAMILIA_ROTEIRO;

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

ALTER TABLE TBFAMILIA_ROTEIRO
    ADD ORDEM INTEGER;


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

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'ROTEIRO INCLUIDO:'||NEW.ID||', ORDEM: '||FN_LPAD(NEW.ORDEM,3,'0')||', UP: '||FN_LPAD(NEW.UP_ID,4,0);
    END

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

CREATE trigger tbfamilia_roteiro_b01u for tbfamilia_roteiro
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';
    IF(OLD.ORDEM <> NEW.ORDEM) THEN
    BEGIN
        HISTORICO = HISTORICO||' ORDEM:'||OLD.ORDEM||'->'||NEW.ORDEM;
    END

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

    IF(OLD.ESTEIRA_PRODUCAO <> NEW.ESTEIRA_PRODUCAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PRD.GP:'||OLD.ESTEIRA_PRODUCAO||'->'||NEW.ESTEIRA_PRODUCAO;
    END

    IF(OLD.ESTOQUE <> NEW.ESTOQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' REG.EST:'||OLD.ESTOQUE||'->'||NEW.ESTOQUE;
    END 

    IF(OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
       HISTORICO = HISTORICO||' OBS:'||OLD.OBSERVACAO||'->'||NEW.OBSERVACAO;
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'ROTEIRO: '||NEW.ID||' ALTERADO'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBFAMILIA',NEW.FAMILIA_ID,HISTORICO);
    END
END;

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

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'ROTEIRO EXCLUIDO:'||OLD.ID||', ORDEM: '||FN_LPAD(OLD.ORDEM,3,'0')||', UP: '||FN_LPAD(OLD.UP_ID,4,0);
    END

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




