SET TERM ^ ;

CREATE OR ALTER trigger ttbgrupo_produto_b01u for tbgrupo_produto
active before update position 4
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);

DECLARE VARIABLE OLD_FAMILIA VARCHAR(500);
DECLARE VARIABLE NEW_FAMILIA VARCHAR(500);
DECLARE VARIABLE OLD_TIPOPRODUTO VARCHAR(500);
DECLARE VARIABLE NEW_TIPOPRODUTO VARCHAR(500);
DECLARE VARIABLE OLD_LOCALIZACAO VARCHAR(500);
DECLARE VARIABLE NEW_LOCALIZACAO VARCHAR(500);
DECLARE VARIABLE OLD_GRADE VARCHAR(500);
DECLARE VARIABLE NEW_GRADE VARCHAR(500);
DECLARE VARIABLE OLD_UNIDADEMEDIDA VARCHAR(500);
DECLARE VARIABLE NEW_UNIDADEMEDIDA VARCHAR(500);
BEGIN

    HISTORICO = '';

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

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

    IF (OLD.FAMILIA_ID <> NEW.FAMILIA_ID) THEN
    BEGIN
        OLD_FAMILIA = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.DESCRICAO FROM TBFAMILIA A WHERE A.CODIGO = OLD.FAMILIA_ID), '');
        NEW_FAMILIA = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.DESCRICAO FROM TBFAMILIA A WHERE A.CODIGO = OLD.FAMILIA_ID), '');

        HISTORICO = HISTORICO||' FAM:'||OLD_FAMILIA||'->'||NEW_FAMILIA;
    END

    IF (OLD.TIPOPRODUTO_ID <> NEW.TIPOPRODUTO_ID) THEN
    BEGIN
        OLD_TIPOPRODUTO = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 4, '0')||' - '||B.DESCRICAO FROM TBTIPOPRODUTO B WHERE B.CODIGO = OLD.TIPOPRODUTO_ID), '');
        NEW_TIPOPRODUTO = COALESCE((SELECT FIRST 1 FN_LPAD(B.CODIGO, 4, '0')||' - '||B.DESCRICAO FROM TBTIPOPRODUTO B WHERE B.CODIGO = NEW.TIPOPRODUTO_ID), '');

        HISTORICO = HISTORICO||' TP.PROD:'||OLD_TIPOPRODUTO||'->'||NEW_TIPOPRODUTO;
    END

    IF (OLD.LOCALIZACAO_ID <> NEW.LOCALIZACAO_ID) THEN
    BEGIN
        OLD_LOCALIZACAO = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO FROM TBLOCALIZACAO C WHERE C.CODIGO = OLD.LOCALIZACAO_ID), '');
        NEW_LOCALIZACAO = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO FROM TBLOCALIZACAO C WHERE C.CODIGO = NEW.LOCALIZACAO_ID), '');

        HISTORICO = HISTORICO||' LOC:'||OLD_LOCALIZACAO||'->'||NEW_LOCALIZACAO;
    END

    IF (OLD.GRADE_ID <> NEW.GRADE_ID) THEN
    BEGIN
        OLD_GRADE = COALESCE((SELECT FIRST 1 FN_LPAD(D.CODIGO, 4, '0')||' - '||D.DESCRICAO FROM TBGRADE D WHERE D.CODIGO = OLD.GRADE_ID), '');
        NEW_GRADE = COALESCE((SELECT FIRST 1 FN_LPAD(D.CODIGO, 4, '0')||' - '||D.DESCRICAO FROM TBGRADE D WHERE D.CODIGO = NEW.GRADE_ID), '');

        HISTORICO = HISTORICO||' GRADE:'||OLD_GRADE||'->'||NEW_GRADE;
    END

    IF (OLD.UNIDADEMEDIDA_SIGLA <> NEW.UNIDADEMEDIDA_SIGLA) THEN
    BEGIN
        OLD_UNIDADEMEDIDA = COALESCE((SELECT FIRST 1 E.SIGLA||' - '||E.DESCRICAO FROM TBUNIDADEMEDIDA E WHERE E.SIGLA = OLD.UNIDADEMEDIDA_SIGLA), '');
        NEW_UNIDADEMEDIDA = COALESCE((SELECT FIRST 1 E.SIGLA||' - '||E.DESCRICAO FROM TBUNIDADEMEDIDA E WHERE E.SIGLA = NEW.UNIDADEMEDIDA_SIGLA), '');

        HISTORICO = HISTORICO||' UM:'||OLD_UNIDADEMEDIDA||'->'||NEW_UNIDADEMEDIDA;
    END

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

    IF (OLD.HABILITA_COMPRA <> NEW.HABILITA_COMPRA) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.COMPRA:'||OLD.HABILITA_COMPRA||'->'||NEW.HABILITA_COMPRA;
    END

    IF (OLD.HABILITA_VENDA <> NEW.HABILITA_VENDA) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.VENDA:'||OLD.HABILITA_VENDA||'->'||NEW.HABILITA_VENDA;
    END

    IF (OLD.CUSTOUNITARIO_MEDIO <> NEW.CUSTOUNITARIO_MEDIO) THEN
    BEGIN
    HISTORICO = HISTORICO||' VR.CM:'||FN_FORMAT_NUMBER2(OLD.CUSTOUNITARIO_MEDIO, 5)||'->'||FN_FORMAT_NUMBER2(NEW.CUSTOUNITARIO_MEDIO, 5);
    END

    IF (OLD.IMPOSTO_CUSTO <> NEW.IMPOSTO_CUSTO) THEN
    BEGIN
    HISTORICO = HISTORICO||' CM.%IMP:'||FN_FORMAT_NUMBER(OLD.IMPOSTO_CUSTO)||'->'||FN_FORMAT_NUMBER(NEW.IMPOSTO_CUSTO);
    END

    IF (OLD.ICMS <> NEW.ICMS) THEN
    BEGIN
    HISTORICO = HISTORICO||' CM%ICM:'||FN_FORMAT_NUMBER(OLD.ICMS)||'->'||FN_FORMAT_NUMBER(NEW.ICMS);
    END

    IF (OLD.IPI <> NEW.IPI) THEN
    BEGIN
    HISTORICO = HISTORICO||' CM%IPI:'||FN_FORMAT_NUMBER(OLD.IPI)||'->'||FN_FORMAT_NUMBER(NEW.IPI);
    END

    IF (OLD.FRETE <> NEW.FRETE) THEN
    BEGIN
    HISTORICO = HISTORICO||' CM%FRT:'||FN_FORMAT_NUMBER(OLD.FRETE)||'->'||FN_FORMAT_NUMBER(NEW.FRETE);
    END

    IF (OLD.FINANCEIRO <> NEW.FINANCEIRO) THEN
    BEGIN
    HISTORICO = HISTORICO||' CM%FIN:'||FN_FORMAT_NUMBER(OLD.FINANCEIRO)||'->'||FN_FORMAT_NUMBER(NEW.FINANCEIRO);
    END

    IF (OLD.T01 <> NEW.T01) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T01:'||FN_FORMAT_NUMBER(OLD.T01)||'->'||FN_FORMAT_NUMBER(NEW.T01);
       END
    IF (OLD.T02 <> NEW.T02) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T02:'||FN_FORMAT_NUMBER(OLD.T02)||'->'||FN_FORMAT_NUMBER(NEW.T02);
       END
    IF (OLD.T03 <> NEW.T03) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T03:'||FN_FORMAT_NUMBER(OLD.T03)||'->'||FN_FORMAT_NUMBER(NEW.T03);
       END
    IF (OLD.T04 <> NEW.T04) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T04:'||FN_FORMAT_NUMBER(OLD.T04)||'->'||FN_FORMAT_NUMBER(NEW.T04);
       END
    IF (OLD.T05 <> NEW.T05) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T05:'||FN_FORMAT_NUMBER(OLD.T05)||'->'||FN_FORMAT_NUMBER(NEW.T05);
       END
    IF (OLD.T06 <> NEW.T06) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T06:'||FN_FORMAT_NUMBER(OLD.T06)||'->'||FN_FORMAT_NUMBER(NEW.T06);
       END
    IF (OLD.T07 <> NEW.T07) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T07:'||FN_FORMAT_NUMBER(OLD.T07)||'->'||FN_FORMAT_NUMBER(NEW.T07);
       END
    IF (OLD.T08 <> NEW.T08) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T08:'||FN_FORMAT_NUMBER(OLD.T08)||'->'||FN_FORMAT_NUMBER(NEW.T08);
       END
    IF (OLD.T09 <> NEW.T09) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T09:'||FN_FORMAT_NUMBER(OLD.T09)||'->'||FN_FORMAT_NUMBER(NEW.T09);
       END
    IF (OLD.T10 <> NEW.T10) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T10:'||FN_FORMAT_NUMBER(OLD.T10)||'->'||FN_FORMAT_NUMBER(NEW.T10);
       END
    IF (OLD.T11 <> NEW.T11) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T11:'||FN_FORMAT_NUMBER(OLD.T11)||'->'||FN_FORMAT_NUMBER(NEW.T11);
       END
    IF (OLD.T12 <> NEW.T12) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T12:'||FN_FORMAT_NUMBER(OLD.T02)||'->'||FN_FORMAT_NUMBER(NEW.T12);
       END
    IF (OLD.T13 <> NEW.T13) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T13:'||FN_FORMAT_NUMBER(OLD.T03)||'->'||FN_FORMAT_NUMBER(NEW.T13);
       END
    IF (OLD.T14 <> NEW.T14) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T14:'||FN_FORMAT_NUMBER(OLD.T14)||'->'||FN_FORMAT_NUMBER(NEW.T14);
       END
    IF (OLD.T15 <> NEW.T15) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T15:'||FN_FORMAT_NUMBER(OLD.T15)||'->'||FN_FORMAT_NUMBER(NEW.T15);
       END
    IF (OLD.T16 <> NEW.T16) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T16:'||FN_FORMAT_NUMBER(OLD.T16)||'->'||FN_FORMAT_NUMBER(NEW.T16);
       END
    IF (OLD.T17 <> NEW.T17) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T17:'||FN_FORMAT_NUMBER(OLD.T17)||'->'||FN_FORMAT_NUMBER(NEW.T17);
       END
    IF (OLD.T18 <> NEW.T18) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T18:'||FN_FORMAT_NUMBER(OLD.T18)||'->'||FN_FORMAT_NUMBER(NEW.T18);
       END
    IF (OLD.T19 <> NEW.T19) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T19:'||FN_FORMAT_NUMBER(OLD.T19)||'->'||FN_FORMAT_NUMBER(NEW.T19);
       END
    IF (OLD.T20 <> NEW.T20) THEN
       BEGIN
       HISTORICO = HISTORICO||' CM.T20:'||FN_FORMAT_NUMBER(OLD.T20)||'->'||FN_FORMAT_NUMBER(NEW.T20);
       END

    IF (OLD.RENDIMENTO <> NEW.RENDIMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' REND:'||FN_FORMAT_NUMBER2(OLD.RENDIMENTO, 4)||'->'||FN_FORMAT_NUMBER2(NEW.RENDIMENTO, 4);
    END

    IF (OLD.LARGURA <> NEW.LARGURA) THEN
    BEGIN
        HISTORICO = HISTORICO||' LARG:'||FN_FORMAT_NUMBER2(OLD.LARGURA, 4)||'->'||FN_FORMAT_NUMBER2(NEW.LARGURA, 4);
    END

    IF (OLD.COMPRIMENTO <> NEW.COMPRIMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' COMPR:'||FN_FORMAT_NUMBER2(OLD.COMPRIMENTO, 4)||'cm'||'->'||FN_FORMAT_NUMBER2(NEW.COMPRIMENTO, 4)||'cm';
    END
    
    IF (OLD.COMPOSICAO <> NEW.COMPOSICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' COMP:'||OLD.COMPOSICAO||'->'||NEW.COMPOSICAO;
    END

    IF (OLD.TOLERANCIA <> NEW.TOLERANCIA) THEN
    BEGIN
        HISTORICO = HISTORICO||' %TOL:'||FN_FORMAT_NUMBER2(OLD.TOLERANCIA, 2)||'%'||'->'||FN_FORMAT_NUMBER2(NEW.TOLERANCIA, 2)||'%';
    END

    IF (OLD.PESOLIQUIDO <> NEW.PESOLIQUIDO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PESO:'||FN_FORMAT_NUMBER2(OLD.PESOLIQUIDO, 5)||'g'||'->'||FN_FORMAT_NUMBER2(NEW.PESOLIQUIDO, 5)||'g';
    END

    IF (OLD.SEGURANCA <> NEW.SEGURANCA) THEN
    BEGIN
        HISTORICO = HISTORICO||' %SEG:'||FN_FORMAT_NUMBER2(OLD.SEGURANCA, 4)||'%'||'->'||FN_FORMAT_NUMBER2(NEW.SEGURANCA, 4)||'%';
    END

    IF (OLD.DESCRICAO_ETIQUETA <> NEW.DESCRICAO_ETIQUETA) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC.ETQ:'||OLD.DESCRICAO_ETIQUETA||'->'||NEW.DESCRICAO_ETIQUETA;
    END

    IF (OLD.CUBAGEM_ALTURA <> NEW.CUBAGEM_ALTURA) THEN
    BEGIN
        HISTORICO = HISTORICO||' CUB.ALT:'||FN_FORMAT_NUMBER2(OLD.CUBAGEM_ALTURA, 4)||'mm'||'->'||FN_FORMAT_NUMBER2(NEW.CUBAGEM_ALTURA, 4)||'mm';
    END

    IF (OLD.CUBAGEM_LARGURA <> NEW.CUBAGEM_LARGURA) THEN
    BEGIN
        HISTORICO = HISTORICO||' CUB.LARG:'||FN_FORMAT_NUMBER2(OLD.CUBAGEM_LARGURA, 4)||'MM'||'->'||FN_FORMAT_NUMBER2(NEW.CUBAGEM_LARGURA, 4)||'MM';
    END

    IF (OLD.CUBAGEM_COMPRIMENTO <> NEW.CUBAGEM_COMPRIMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CUB.COMPR:'||FN_FORMAT_NUMBER2(OLD.CUBAGEM_COMPRIMENTO, 4)||'MM'||'->'||FN_FORMAT_NUMBER2(NEW.CUBAGEM_COMPRIMENTO, 4)||'MM';
    END

    IF (OLD.CONTROLE_BENEFICIAMENTO <> NEW.CONTROLE_BENEFICIAMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.BENEF:'||OLD.CONTROLE_BENEFICIAMENTO||'->'||NEW.CONTROLE_BENEFICIAMENTO;
    END

    IF (OLD.INVENTARIO <> NEW.INVENTARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.INV:'||OLD.INVENTARIO||'->'||NEW.INVENTARIO;
    END

    IF (OLD.PROGRAMAR_SEM_ESTOQUE <> NEW.PROGRAMAR_SEM_ESTOQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' PROG.S/EST:'||OLD.PROGRAMAR_SEM_ESTOQUE||'->'||NEW.PROGRAMAR_SEM_ESTOQUE;
    END

    IF (OLD.GERAR_OC <> NEW.GERAR_OC) THEN
    BEGIN
        HISTORICO = HISTORICO||' GERAR OC:'||OLD.GERAR_OC||'->'||NEW.GERAR_OC;
    END

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBGRUPO_PRODUTO', OLD.ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

