ALTER TABLE TBPRODUTO
    ADD DESCRICAO_RESUMIDA VARCHAR(100);

SET TERM ^ ;

CREATE OR ALTER trigger ttbproduto_b9u for tbproduto
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

   HISTORICO = '';

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

   IF (OLD.GRUPO_PRODUTO_ID IS DISTINCT FROM NEW.GRUPO_PRODUTO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' GRP.PROD:'||COALESCE(OLD.GRUPO_PRODUTO_ID, 0)||'->'||COALESCE(NEW.GRUPO_PRODUTO_ID, 0);
       END

   IF (OLD.TIPOPRODUTO_CODIGO <> NEW.TIPOPRODUTO_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TP.PROD:'||OLD.TIPOPRODUTO_CODIGO||'->'||NEW.TIPOPRODUTO_CODIGO;
       END
   IF (OLD.FAMILIA_CODIGO <> NEW.FAMILIA_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' FAM:'||OLD.FAMILIA_CODIGO||'->'||NEW.FAMILIA_CODIGO;
       END
   IF (OLD.LINHA_CODIGO <> NEW.LINHA_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' LIN:'||OLD.LINHA_CODIGO||'->'||NEW.LINHA_CODIGO;
       END
   IF (OLD.MODELO_CODIGO <> NEW.MODELO_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' MOD:'||OLD.MODELO_CODIGO||'->'||NEW.MODELO_CODIGO;
       END
   IF (OLD.GRADE_CODIGO <> NEW.GRADE_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' GDE:'||OLD.GRADE_CODIGO||'->'||NEW.GRADE_CODIGO;
       END
   IF (OLD.UNIDADEMEDIDA_SIGLA <> NEW.UNIDADEMEDIDA_SIGLA) THEN
       BEGIN
       HISTORICO = HISTORICO||' UM:'||OLD.UNIDADEMEDIDA_SIGLA||'->'||NEW.UNIDADEMEDIDA_SIGLA;
       END
   IF (OLD.COR_CODIGO <> NEW.COR_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' COR:'||OLD.COR_CODIGO||'->'||NEW.COR_CODIGO;
       END
   IF (OLD.LOCALIZACAO_CODIGO <> NEW.LOCALIZACAO_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' LOC:'||OLD.LOCALIZACAO_CODIGO||'->'||NEW.LOCALIZACAO_CODIGO;
       END
   IF (OLD.GRUPO_PRODUTO_ID <> NEW.GRUPO_PRODUTO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' GRP.PROD:'||OLD.GRUPO_PRODUTO_ID||'->'||NEW.GRUPO_PRODUTO_ID;
       END

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

   IF (OLD.NBM_CODIGO <> NEW.NBM_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' NBM:'||OLD.NBM_CODIGO||'->'||NEW.NBM_CODIGO;
       END
   IF (OLD.EAN <> NEW.EAN) THEN
       BEGIN
       HISTORICO = HISTORICO||' EAN:'||OLD.EAN||'->'||NEW.EAN;
       END
   IF (OLD.HABILITA_COMPRA <> NEW.HABILITA_COMPRA) THEN
       BEGIN
       HISTORICO = HISTORICO||' HAB.COMP:'||OLD.HABILITA_COMPRA||'->'||NEW.HABILITA_COMPRA;
       END
   IF (OLD.HABILITA_VENDA <> NEW.HABILITA_VENDA) THEN
       BEGIN
       HISTORICO = HISTORICO||' HAB.VEND:'||OLD.HABILITA_VENDA||'->'||NEW.HABILITA_VENDA;
       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.INVENTARIO <> NEW.INVENTARIO) THEN
       BEGIN
       HISTORICO = HISTORICO||' HAB.INV:'||OLD.INVENTARIO||'->'||NEW.INVENTARIO;
       END

   IF (OLD.TOLERANCIA <> NEW.TOLERANCIA) THEN
       BEGIN
       HISTORICO = HISTORICO||' %TOL: '||OLD.TOLERANCIA||'->'||NEW.TOLERANCIA;
       END
   IF (OLD.SEGURANCA <> NEW.SEGURANCA) THEN
       BEGIN
       HISTORICO = HISTORICO||' %EST.SEG:'||OLD.SEGURANCA||'->'||NEW.SEGURANCA;
       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 (OLD.FEEF_PERC_DEDUCAO <> NEW.FEEF_PERC_DEDUCAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' %DEDUC.FEEF:'||OLD.FEEF_PERC_DEDUCAO||'->'||NEW.FEEF_PERC_DEDUCAO;
       END
   IF (OLD.FAMILIA_ALTERNATIVA <> NEW.FAMILIA_ALTERNATIVA) THEN
       BEGIN
       HISTORICO = HISTORICO||' FAM.ALT:'||OLD.FAMILIA_ALTERNATIVA||'->'||NEW.FAMILIA_ALTERNATIVA;
       END

   IF (OLD.CONTA_CONTABIL IS DISTINCT FROM NEW.CONTA_CONTABIL) THEN
       BEGIN
       HISTORICO = HISTORICO||' C.CONT:'||COALESCE(OLD.CONTA_CONTABIL, '')||'->'||COALESCE(NEW.CONTA_CONTABIL, '');
       END

   IF (OLD.TABELA_PRECO_ID IS DISTINCT FROM NEW.TABELA_PRECO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' TB.PRECO:'||FN_IS_EMPTY(OLD.TABELA_PRECO_ID)||'->'||FN_IS_EMPTY(NEW.TABELA_PRECO_ID);
       END

   IF (OLD.DESCRICAO_ETIQUETA <> NEW.DESCRICAO_ETIQUETA) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC.ETIQ:'||OLD.DESCRICAO_ETIQUETA||'->'||NEW.DESCRICAO_ETIQUETA;
       END
   IF (OLD.INFORMACOES_COMPLEMENTARES <> NEW.INFORMACOES_COMPLEMENTARES) THEN
       BEGIN
       HISTORICO = HISTORICO||' INF.COMP:'||FN_ELIPSES(OLD.INFORMACOES_COMPLEMENTARES,100)||'->'||FN_ELIPSES(NEW.INFORMACOES_COMPLEMENTARES,100);
       END

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

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

   IF (OLD.STATUS <> NEW.STATUS) THEN
       BEGIN
       HISTORICO = HISTORICO||' STATUS:'||OLD.STATUS||'->'||NEW.STATUS;
       IF (NEW.STATUS = '0') THEN
           BEGIN
           NEW.DATA_INATIVACAO = CURRENT_DATE;
           END
       IF (NEW.STATUS = '1') THEN
           BEGIN
           NEW.DATA_ATIVACAO = CURRENT_DATE;
           END
       END

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


   if (HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP,HISTORICO ) VALUES (
      'TBPRODUTO', OLD.CODIGO,
      (Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
      (Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
        FN_ELIPSES(:Historico,500));
       End
end
^

SET TERM ; ^

