
CREATE TRIGGER TTBFAMILIA_TOLERANCIA_B02I FOR TBFAMILIA_TOLERANCIA
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Reg.Incluído';
    END

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

CREATE OR ALTER TRIGGER TTBFAMILIA_TOLERANCIA_B01U FOR TBFAMILIA_TOLERANCIA
ACTIVE BEFORE UPDATE POSITION 0
AS

DECLARE VARIABLE HISTORICO VARCHAR(8000);
DECLARE VARIABLE OLD_TP VARCHAR(8000);
DECLARE VARIABLE NEW_TP VARCHAR(8000);
DECLARE VARIABLE OLD_CONS VARCHAR(8000);
DECLARE VARIABLE NEW_CONS VARCHAR(8000);
DECLARE VARIABLE OLD_SOB_PRD VARCHAR(8000);
DECLARE VARIABLE NEW_SOB_PRD VARCHAR(8000);
DECLARE VARIABLE OLD_SOB_CON VARCHAR(8000);
DECLARE VARIABLE NEW_SOB_CON VARCHAR(8000);

BEGIN
  
  HISTORICO = '';
    
    IF (OLD.PRO_QTD_MAIOR <> NEW.PRO_QTD_MAIOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tol.Prod.p/+: '||OLD.PRO_QTD_MAIOR||' -> '||NEW.PRO_QTD_MAIOR;
    END

    IF (OLD.PRO_QTD_MENOR <> NEW.PRO_QTD_MENOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tol.Prod.p/-: '||OLD.PRO_QTD_MENOR||' -> '||NEW.PRO_QTD_MENOR;
    END

    IF (OLD.CON_QTD_MAIOR <> NEW.CON_QTD_MAIOR) THEN
    BEGIN
        HISTORICO = HISTORICO||', Tol.Cons.p/+: '||OLD.CON_QTD_MAIOR||' -> '||NEW.CON_QTD_MAIOR;
    END

    IF (old.CON_QTD_MENOR <> new.CON_QTD_MENOR) THEN
    BEGIN
        HISTORICO = HISTORICO||', Tol.Prod.p/-: '||OLD.CON_QTD_MENOR||' -> '||NEW.CON_QTD_MENOR;
    END

    IF (OLD.TIPO_PRO <> NEW.TIPO_PRO) THEN
    BEGIN
        OLD_TP = CASE
        WHEN OLD.TIPO_PRO = 'P'
        THEN 'Percentual'
        WHEN OLD.TIPO_PRO = 'Q'
        THEN 'Quantidade'
        ELSE ''
        END;

        NEW_TP = CASE
        WHEN NEW.TIPO_PRO = 'P'
        THEN 'Percentual'
        WHEN NEW.TIPO_PRO = 'Q'
        THEN 'Quantidade'
        ELSE ''
        END;

        HISTORICO = HISTORICO||', Tp.Prod.: '||OLD_TP||' -> '||NEW_TP;
    END 

    IF (OLD.TIPO_CON <> NEW.TIPO_CON) THEN
    BEGIN
        OLD_CONS = CASE
        WHEN OLD.TIPO_CON = 'P'
        THEN 'Percentual'
        WHEN OLD.TIPO_CON = 'Q'
        THEN 'Quantidade'
        ELSE ''
        END;

        NEW_CONS = CASE
        WHEN NEW.TIPO_CON = 'P'
        THEN 'Percentual'
        WHEN NEW.TIPO_CON = 'Q'
        THEN 'Quantidade'
        ELSE ''
        END;

        HISTORICO = HISTORICO||', Tp.Cons.: '||OLD_CONS||' -> '||NEW_CONS;
    END

    IF (OLD.SOBRA_PRODUCAO <> NEW.SOBRA_PRODUCAO) THEN
    BEGIN
        OLD_SOB_PRD = CASE
        WHEN OLD.SOBRA_PRODUCAO = 0
        THEN 'Não'
        WHEN OLD.SOBRA_PRODUCAO = 1
        THEN 'Sim(Sobra em Peça)'
        WHEN OLD.SOBRA_PRODUCAO = 2
        THEN 'Sim(Qtd. Produção)'
        ELSE ''
        END;

        NEW_SOB_PRD = CASE
        WHEN NEW.SOBRA_PRODUCAO = 0
        THEN 'Não'
        WHEN NEW.SOBRA_PRODUCAO = 1
        THEN 'Sim(Sobra em Peça)'
        WHEN NEW.SOBRA_PRODUCAO = 2
        THEN 'Sim(Qtd. Produção)'
        ELSE ''
        END;

        HISTORICO = HISTORICO||', Sob.Prod.: '||OLD_SOB_PRD||' -> '||NEW_SOB_PRD;
    END

    IF (OLD.SOBRA_CONSUMO <> NEW.SOBRA_CONSUMO) THEN
    BEGIN
        OLD_SOB_CON = CASE
        WHEN OLD.SOBRA_CONSUMO = 0
        THEN 'Não'
        WHEN OLD.SOBRA_CONSUMO = 1
        THEN 'Sim'
        ELSE ''
        END;

        NEW_SOB_CON = CASE
        WHEN NEW.SOBRA_CONSUMO = 0
        THEN 'Não'
        WHEN NEW.SOBRA_CONSUMO = 1
        THEN 'Sim'
        ELSE ''
        END;

        HISTORICO = HISTORICO||', Sob.Cons.: '||OLD_SOB_CON||' -> '||NEW_SOB_CON;
    END
    
    IF (OLD.GP_ID <> NEW.GP_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||', Grupo Prod.: '||FN_LPAD(OLD.GP_ID,4,'0')||' -> '||FN_LPAD(NEW.GP_ID,4,'0');
    END
     
    IF (OLD.PERFIL <> NEW.PERFIL) THEN
    BEGIN
        HISTORICO = HISTORICO||', Perfil: '||OLD.PERFIL||' -> '||NEW.PERFIL;
    END

    IF (OLD.FAMILIA_ID <> NEW.FAMILIA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||', Familia: '||FN_LPAD(OLD.FAMILIA_ID,4,'0')||' -> '||FN_LPAD(NEW.FAMILIA_ID,4,'0');
    END

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

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

    HISTORICO = '';

    IF (OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Reg.Excluído ID: '||FN_LPAD(OLD.ID,4,'0');
    END

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


