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

    HISTORICO = '';

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

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

CREATE OR ALTER TRIGGER TTBPERFIL_B04U FOR TBPERFIL
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TRT_MP_OLD VARCHAR(500);
DECLARE VARIABLE TRT_MP_NEW VARCHAR(500);
DECLARE VARIABLE QTD_TP_OLD VARCHAR(500);
DECLARE VARIABLE QTD_TP_NEW VARCHAR(500);
DECLARE VARIABLE TPRP_OLD VARCHAR(500);
DECLARE VARIABLE TPRP_NEW VARCHAR(500);
BEGIN

    HISTORICO = '';
    
    IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Desc.: '||OLD.DESCRICAO||' -> '||NEW.DESCRICAO;
    END
    IF (OLD.CAP_PRODUTIVA <> NEW.CAP_PRODUTIVA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Cap.Prod.: '||OLD.CAP_PRODUTIVA||' -> '||NEW.CAP_PRODUTIVA;
    END
    IF (OLD.FAMILIA_ID <> NEW.FAMILIA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||', Familia: '||OLD.FAMILIA_ID||' -> '||NEW.FAMILIA_ID;
    END
    IF (OLD.COR_BASICA <> NEW.COR_BASICA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Cor Basica: '||OLD.COR_BASICA||' -> '||NEW.COR_BASICA;
    END 
    IF (OLD.COR_DIFERENCIADA <> NEW.COR_DIFERENCIADA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Cor Diff.: '||OLD.COR_DIFERENCIADA||' -> '||NEW.COR_DIFERENCIADA;
    END
    IF (OLD.COR_SOBENCOMENDA <> NEW.COR_SOBENCOMENDA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Cor Sob.Enc.: '||OLD.COR_SOBENCOMENDA||' -> '||NEW.COR_SOBENCOMENDA;
    END
    IF (OLD.LOCALIZACAO_ID <> NEW.LOCALIZACAO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||', Loc.Ped.: '||OLD.LOCALIZACAO_ID||' -> '||NEW.LOCALIZACAO_ID;
    END
    IF (OLD.DESCRICAO_COMPLETA <> NEW.DESCRICAO_COMPLETA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Desc. Compl.: '||OLD.DESCRICAO_COMPLETA||' -> '||NEW.DESCRICAO_COMPLETA;
    END
    IF (OLD.TRATAMENTO_PEDIDO_MP <> NEW.TRATAMENTO_PEDIDO_MP) THEN
    BEGIN
        TRT_MP_OLD = CASE
        WHEN OLD.TRATAMENTO_PEDIDO_MP = '0'
        THEN 'N.A.'
        WHEN OLD.TRATAMENTO_PEDIDO_MP = '1'
        THEN 'Checagem de Cap. Produtiva'
        WHEN OLD.TRATAMENTO_PEDIDO_MP = '2'
        THEN 'Carrega Diretamente no Agrup.'
        ELSE ''
        END;

        TRT_MP_NEW = CASE
        WHEN NEW.TRATAMENTO_PEDIDO_MP = '0'
        THEN 'N.A.'
        WHEN NEW.TRATAMENTO_PEDIDO_MP = '1'
        THEN 'Checagem de Cap. Produtiva'
        WHEN NEW.TRATAMENTO_PEDIDO_MP = '2'
        THEN 'Carrega Diretamente no Agrup.'
        ELSE ''
        END;
        HISTORICO = HISTORICO||', Trt.Ped.MP: '||TRT_MP_OLD||' -> '||TRT_MP_NEW;
    END
    IF (OLD.QTD_MIN <> NEW.QTD_MIN) THEN
    BEGIN
        HISTORICO = HISTORICO||', Qtd.Min.: '||OLD.QTD_MIN||' -> '||NEW.QTD_MIN;
    END 
    IF (OLD.QTD_MULT <> NEW.QTD_MULT) THEN
    BEGIN
        HISTORICO = HISTORICO||', Qtd.Mult.: '||OLD.QTD_MULT||' -> '||NEW.QTD_MULT;
    END   
    IF (OLD.QTD_MIN_SOBENC <> NEW.QTD_MIN_SOBENC) THEN
    BEGIN
        HISTORICO = HISTORICO||', Qtd.Min.Sob Enc.: '||OLD.QTD_MIN_SOBENC||' -> '||NEW.QTD_MIN_SOBENC;
    END   
    IF (OLD.QTD_MULT_SOBENC <> NEW.QTD_MULT_SOBENC) THEN
    BEGIN
        HISTORICO = HISTORICO||', Qtd.Mult.Sob Enc.: '||OLD.QTD_MULT_SOBENC||' -> '||NEW.QTD_MULT_SOBENC;
    END 
    IF (OLD.QTD_TIPO <> NEW.QTD_TIPO) THEN
    BEGIN
        QTD_TP_OLD = CASE
        WHEN OLD.QTD_TIPO = 'C'
        THEN 'Checagem de Cap. Produtiva'
        WHEN OLD.QTD_TIPO = 'T'
        THEN 'Carrega Diretamente no Agrup.'
        WHEN OLD.QTD_TIPO = ''
        THEN 'N.A.'
        ELSE ''
        END;
        QTD_TP_NEW = CASE
        WHEN NEW.QTD_TIPO = 'C'
        THEN 'Checagem de Cap. Produtiva'
        WHEN NEW.QTD_TIPO = 'T'
        THEN 'Carrega Diretamente no Agrup.'
        WHEN NEW.QTD_TIPO = ''
        THEN 'N.A.'
        ELSE ''
        END;
        HISTORICO = HISTORICO||', Qtd.Tipo: '||QTD_TP_OLD||' -> '||QTD_TP_NEW;
    END 
    IF (OLD.AGRUPAMENTO <> NEW.AGRUPAMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Agrup.1: '||OLD.AGRUPAMENTO||' -> '||NEW.AGRUPAMENTO;
    END 
    IF (OLD.AGRUPAMENTO2 <> NEW.AGRUPAMENTO2) THEN
    BEGIN
        HISTORICO = HISTORICO||', Agrup.2: '||OLD.AGRUPAMENTO2||' -> '||NEW.AGRUPAMENTO2;
    END 
    IF (OLD.ENDERECAMENTO_SOBRA <> NEW.ENDERECAMENTO_SOBRA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Agrup.End.: '||OLD.ENDERECAMENTO_SOBRA||' -> '||NEW.ENDERECAMENTO_SOBRA;
    END 
    IF (OLD.EFIC_A <> NEW.EFIC_A OR OLD.EFIC_B <> NEW.EFIC_B) THEN
    BEGIN
        HISTORICO = HISTORICO||', % Efic.: '||OLD.EFIC_A||' à '||OLD.EFIC_B||' -> '||NEW.EFIC_A||' à '||NEW.EFIC_B;
    END 
    IF (OLD.PERDA_A <> NEW.PERDA_A OR OLD.PERDA_B <> NEW.PERDA_B) THEN
    BEGIN
        HISTORICO = HISTORICO||', % Efic.: '||OLD.PERDA_A||' à '||OLD.PERDA_B||' -> '||NEW.PERDA_A||' à '||NEW.PERDA_B;
    END 
    IF (OLD.PONTO_REPOSICAO <> NEW.PONTO_REPOSICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', % Pt.Rep.: '||OLD.PONTO_REPOSICAO||' -> '||NEW.PONTO_REPOSICAO;
    END
    IF (OLD.TIPO_REPOSICAO <> NEW.TIPO_REPOSICAO) THEN
    BEGIN
        TPRP_OLD = CASE
        WHEN OLD.TIPO_REPOSICAO = '0'
        THEN 'Repor até Est. MÍNIMO'
        WHEN OLD.TIPO_REPOSICAO = '1'
        THEN 'Repor até Est. MÁXIMO'
        WHEN OLD.TIPO_REPOSICAO = ''
        THEN 'N.A.'
        ELSE ''
        END;
        TPRP_NEW = CASE
        WHEN NEW.TIPO_REPOSICAO = '0'
        THEN 'Repor até Est. MÍNIMO'
        WHEN NEW.TIPO_REPOSICAO = '1'
        THEN 'Repor até Est. MÁXIMO'
        WHEN NEW.TIPO_REPOSICAO = ''
        THEN 'N.A.'
        ELSE ''
        END;
        HISTORICO = HISTORICO||', Tp.Rep.: '||TPRP_OLD||' -> '||TPRP_NEW;
    END
    if (OLD.PZO1_PED_D1  <> NEW.PZO1_PED_D1  OR OLD.PZO2_PED_D1  <> NEW.PZO2_PED_D1  OR OLD.PZO1_PED_D2  <> NEW.PZO1_PED_D2  OR OLD.PZO2_PED_D2  <> NEW.PZO2_PED_D2  OR
        OLD.PZO1_PED_D3  <> NEW.PZO1_PED_D3  OR OLD.PZO2_PED_D3  <> NEW.PZO2_PED_D3  OR OLD.PZO1_PED_D4  <> NEW.PZO1_PED_D4  OR OLD.PZO2_PED_D4  <> NEW.PZO2_PED_D4  OR
        OLD.PZO1_PED_D5  <> NEW.PZO1_PED_D5  OR OLD.PZO2_PED_D5  <> NEW.PZO2_PED_D5  OR OLD.PZO1_PED_D6  <> NEW.PZO1_PED_D6  OR OLD.PZO2_PED_D6  <> NEW.PZO2_PED_D6  OR
        OLD.PZO1_PED_D7  <> NEW.PZO1_PED_D7  OR OLD.PZO2_PED_D7  <> NEW.PZO2_PED_D7  OR OLD.PZOD1_PED_D1 <> NEW.PZOD1_PED_D1 OR OLD.PZOD2_PED_D1 <> NEW.PZOD2_PED_D1 OR
        OLD.PZOD1_PED_D2 <> NEW.PZOD1_PED_D2 OR OLD.PZOD2_PED_D2 <> NEW.PZOD2_PED_D2 OR OLD.PZOD1_PED_D3 <> NEW.PZOD1_PED_D3 OR OLD.PZOD2_PED_D3 <> NEW.PZOD2_PED_D3 OR
        OLD.PZOD1_PED_D4 <> NEW.PZOD1_PED_D4 OR OLD.PZOD2_PED_D4 <> NEW.PZOD2_PED_D4 OR OLD.PZOD1_PED_D5 <> NEW.PZOD1_PED_D5 OR OLD.PZOD2_PED_D5 <> NEW.PZOD2_PED_D5 OR
        OLD.PZOD1_PED_D6 <> NEW.PZOD1_PED_D6 OR OLD.PZOD2_PED_D6 <> NEW.PZOD2_PED_D6 OR OLD.PZOD1_PED_D7 <> NEW.PZOD1_PED_D7 OR OLD.PZOD2_PED_D7 <> NEW.PZOD2_PED_D7 OR 
        OLD.PZOS1_PED_D1 <> NEW.PZOS1_PED_D1 OR OLD.PZOS2_PED_D1 <> NEW.PZOS2_PED_D1 OR OLD.PZOS1_PED_D2 <> NEW.PZOS1_PED_D2 OR OLD.PZOS2_PED_D2 <> NEW.PZOS2_PED_D2 OR
        OLD.PZOS1_PED_D3 <> NEW.PZOS1_PED_D3 OR OLD.PZOS2_PED_D3 <> NEW.PZOS2_PED_D3 OR OLD.PZOS1_PED_D4 <> NEW.PZOS1_PED_D4 OR OLD.PZOS2_PED_D4 <> NEW.PZOS2_PED_D4 OR
        OLD.PZOS1_PED_D5 <> NEW.PZOS1_PED_D5 OR OLD.PZOS2_PED_D5 <> NEW.PZOS2_PED_D5 OR OLD.PZOS1_PED_D6 <> NEW.PZOS1_PED_D6 OR OLD.PZOS2_PED_D6 <> NEW.PZOS2_PED_D6 OR
        OLD.PZOS1_PED_D7 <> NEW.PZOS1_PED_D7 OR OLD.PZOS2_PED_D7 <> NEW.PZOS2_PED_D7 OR OLD.PZOE1_PED_D1 <> NEW.PZOE1_PED_D1 OR OLD.PZOE2_PED_D1 <> NEW.PZOE2_PED_D1 OR
        OLD.PZOE1_PED_D2 <> NEW.PZOE1_PED_D2 OR OLD.PZOE2_PED_D2 <> NEW.PZOE2_PED_D2 OR OLD.PZOE1_PED_D3 <> NEW.PZOE1_PED_D3 OR OLD.PZOE2_PED_D3 <> NEW.PZOE2_PED_D3 OR
        OLD.PZOE1_PED_D4 <> NEW.PZOE1_PED_D4 OR OLD.PZOE2_PED_D4 <> NEW.PZOE2_PED_D4 OR OLD.PZOE1_PED_D5 <> NEW.PZOE1_PED_D5 OR OLD.PZOE2_PED_D5 <> NEW.PZOE2_PED_D5 OR
        OLD.PZOE1_PED_D6 <> NEW.PZOE1_PED_D6 OR OLD.PZOE2_PED_D6 <> NEW.PZOE2_PED_D6 OR OLD.PZOE1_PED_D7 <> NEW.PZOE1_PED_D7 OR OLD.PZOE2_PED_D7 <> NEW.PZOE2_PED_D7 OR 
        OLD.PZOI1_PED_D1 <> NEW.PZOI1_PED_D1 OR OLD.PZOI2_PED_D1 <> NEW.PZOI2_PED_D1 OR OLD.PZOI1_PED_D2 <> NEW.PZOI1_PED_D2 OR OLD.PZOI2_PED_D2 <> NEW.PZOI2_PED_D2 OR
        OLD.PZOI1_PED_D3 <> NEW.PZOI1_PED_D3 OR OLD.PZOI2_PED_D3 <> NEW.PZOI2_PED_D3 OR OLD.PZOI1_PED_D4 <> NEW.PZOI1_PED_D4 OR OLD.PZOI2_PED_D4 <> NEW.PZOI2_PED_D4 OR
        OLD.PZOI1_PED_D5 <> NEW.PZOI1_PED_D5 OR OLD.PZOI2_PED_D5 <> NEW.PZOI2_PED_D5 OR OLD.PZOI1_PED_D6 <> NEW.PZOI1_PED_D6 OR OLD.PZOI2_PED_D6 <> NEW.PZOI2_PED_D6 OR
        OLD.PZOI1_PED_D7 <> NEW.PZOI1_PED_D7 OR OLD.PZOI2_PED_D7 <> NEW.PZOI2_PED_D7) THEN
    BEGIN
        HISTORICO = HISTORICO||', Tbl. Dias p/ Dt.Prod Alterada. ';
    END
    
    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPERFIL', NEW.CONTROLE, HISTORICO);
    END
END;

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

    HISTORICO = '';

    IF (OLD.CONTROLE IS NOT NULL) THEN
    BEGIN
        HISTORICO = HISTORICO||'Reg.excluído: '||OLD.TABELA||'/'||OLD.ID;
    END

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


 
 