CREATE OR ALTER trigger ttbfamilia_b9u for tbfamilia
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
begin

   HISTORICO = '';

   if (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC.'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
       END
   if (OLD.DESCRICAO_AMIGAVEL <> NEW.DESCRICAO_AMIGAVEL) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC.AMIG.'||OLD.DESCRICAO_AMIGAVEL||'->'||NEW.DESCRICAO_AMIGAVEL;
       END
   if (OLD.DESCRICAO_RESUMIDA <> NEW.DESCRICAO_RESUMIDA) THEN
       BEGIN
       HISTORICO = HISTORICO||' AGRUP.CUSTOS:'||OLD.DESCRICAO_RESUMIDA||'->'||NEW.DESCRICAO_RESUMIDA;
       END
   if (OLD.OPERACAO_REQUISICAO <> NEW.OPERACAO_REQUISICAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' OPER.REQ.'||OLD.OPERACAO_REQUISICAO||'->'||NEW.OPERACAO_REQUISICAO;
       END
   IF (OLD.UNIDADEMEDIDA_SIGLA <> NEW.UNIDADEMEDIDA_SIGLA) THEN
       BEGIN
       HISTORICO = HISTORICO||' UM.'||OLD.UNIDADEMEDIDA_SIGLA||'->'||NEW.UNIDADEMEDIDA_SIGLA;
       END
   IF (OLD.UNIDADEMEDIDA_ALTERNATIVO <> NEW.UNIDADEMEDIDA_ALTERNATIVO) THEN
       BEGIN
       HISTORICO = HISTORICO||' UM. ALT.'||OLD.UNIDADEMEDIDA_ALTERNATIVO||'->'||NEW.UNIDADEMEDIDA_ALTERNATIVO;
       END
   IF (OLD.LOCALIZACAO_CODIGO <> NEW.LOCALIZACAO_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' LOC.PADR.'||OLD.LOCALIZACAO_CODIGO||'->'||NEW.LOCALIZACAO_CODIGO;
       END
   IF (OLD.TIPOPRODUTO_CODIGO <> NEW.TIPOPRODUTO_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TIPO:'||OLD.TIPOPRODUTO_CODIGO||'->'||NEW.TIPOPRODUTO_CODIGO;
       END
   IF (OLD.NCM_CODIGO <> NEW.NCM_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' NCM:'||OLD.NCM_CODIGO||'->'||NEW.NCM_CODIGO;
       END
   IF (OLD.CEST <> NEW.CEST) THEN
       BEGIN
       HISTORICO = HISTORICO||' CEST:'||OLD.CEST||'->'||NEW.CEST;
       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.VEN.'||OLD.HABILITA_VENDA||'->'||NEW.HABILITA_VENDA;
       END
   IF (OLD.HABILITA_REPOSICAO <> NEW.HABILITA_REPOSICAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' HAB.REP.'||OLD.HABILITA_REPOSICAO||'->'||NEW.HABILITA_REPOSICAO;
       END
   IF (OLD.QTD_MIN_FRT_CIF <> NEW.QTD_MIN_FRT_CIF) THEN
       BEGIN
       HISTORICO = HISTORICO||' QTD.MIN.CIF '||OLD.QTD_MIN_FRT_CIF||'->'||NEW.QTD_MIN_FRT_CIF;
       END
   if (OLD.CLASSIFICACAO <> NEW.CLASSIFICACAO) then
       BEGIN
       HISTORICO = HISTORICO||' CLASS.'||OLD.CLASSIFICACAO||'->'||NEW.CLASSIFICACAO;
       END
   IF (OLD.CONTROLE_PATRIMONIO <> NEW.CONTROLE_PATRIMONIO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CONTR.PATRIM.'||OLD.CONTROLE_PATRIMONIO||'->'||NEW.CONTROLE_PATRIMONIO;
       END
   IF (OLD.INVENTARIO <> NEW.INVENTARIO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CONTR.INVENT.'||OLD.INVENTARIO||'->'||NEW.INVENTARIO;
       END
   IF (OLD.CONTROLE_REVISAO <> NEW.CONTROLE_REVISAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CONTR.REV.'||OLD.CONTROLE_REVISAO||'->'||NEW.CONTROLE_REVISAO;
       END
   IF (OLD.UNIDADEMEDIDA_FCI <> NEW.UNIDADEMEDIDA_FCI) THEN
       BEGIN
       HISTORICO = HISTORICO||' UM.FCI:'||OLD.UNIDADEMEDIDA_FCI||'->'||NEW.UNIDADEMEDIDA_FCI;
       END
   IF (OLD.INSUMO_MP_FCI <> NEW.INSUMO_MP_FCI) THEN
       BEGIN
       HISTORICO = HISTORICO||' COMPOE FCI:'||OLD.INSUMO_MP_FCI||'->'||NEW.INSUMO_MP_FCI;
       END
   IF (OLD.MASCARA_PRODUTO <> NEW.MASCARA_PRODUTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' MASCARA PROD:'||OLD.MASCARA_PRODUTO||'->'||NEW.MASCARA_PRODUTO;
       END
   IF (OLD.BLOQUEIA_DUPLICIDADE <> NEW.BLOQUEIA_DUPLICIDADE) THEN
       BEGIN
       HISTORICO = HISTORICO||' BLQ.DUPL.PROD.'||OLD.BLOQUEIA_DUPLICIDADE||'->'||NEW.BLOQUEIA_DUPLICIDADE;
       END
   IF (OLD.TOLERANCIA <> NEW.TOLERANCIA) THEN
       BEGIN
       HISTORICO = HISTORICO||' TOLER.P/COMPRA:'||OLD.TOLERANCIA||'->'||NEW.TOLERANCIA;
       END
   IF (OLD.TOLERANCIA_VENDA <> NEW.TOLERANCIA_VENDA) THEN
       BEGIN
       HISTORICO = HISTORICO||' TOLER.P/VENDA'||OLD.TOLERANCIA_VENDA||'->'||NEW.TOLERANCIA_VENDA;
       END
   IF (OLD.NIVEL <> NEW.NIVEL) THEN
       BEGIN
       HISTORICO = HISTORICO||' ORD.PROC.PROD:'||OLD.NIVEL||'->'||NEW.NIVEL;
       END
   IF (OLD.NIVEL_OC <> NEW.NIVEL_OC) THEN
       BEGIN
       HISTORICO = HISTORICO||' NIV.AUT.OC:'||OLD.NIVEL_OC||'->'||NEW.NIVEL_OC;
       END
   IF (OLD.DENSIDADE_ESPESSURA <> NEW.DENSIDADE_ESPESSURA) THEN
       BEGIN
       HISTORICO = HISTORICO||' CONTR.DENS/ESP.'||OLD.DENSIDADE_ESPESSURA||'->'||NEW.DENSIDADE_ESPESSURA;
       END
   IF (OLD.CONTROLE_ORCAMENTARIO <> NEW.CONTROLE_ORCAMENTARIO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CONTR.ORCAM.'||OLD.CONTROLE_ORCAMENTARIO||'->'||NEW.CONTROLE_ORCAMENTARIO;
       END
   IF (OLD.CORES_BASICAS <> NEW.CORES_BASICAS) THEN
       BEGIN
       HISTORICO = HISTORICO||' COR BAS.'||OLD.CORES_BASICAS||'->'||NEW.CORES_BASICAS;
       END
   IF (OLD.CORES_SOBENCOMENDA <> NEW.CORES_SOBENCOMENDA) THEN
       BEGIN
       HISTORICO = HISTORICO||' COR S.ENC.'||OLD.CORES_SOBENCOMENDA||'->'||NEW.CORES_SOBENCOMENDA;
       END
   IF (OLD.SOBRA_TIPO <> NEW.SOBRA_TIPO) THEN
       BEGIN
       HISTORICO = HISTORICO||' SOB.TIPO '||OLD.SOBRA_TIPO||'->'||NEW.SOBRA_TIPO;
       END
   IF (OLD.TOLERANCIA_TIPO <> NEW.TOLERANCIA_TIPO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TP.TOL.CONS.'||OLD.TOLERANCIA_TIPO||'->'||NEW.TOLERANCIA_TIPO;
       END
   IF (OLD.TOLERANCIA_QTD <> NEW.TOLERANCIA_QTD) THEN
       BEGIN
       HISTORICO = HISTORICO||' QTD.TOL.CONS.'||OLD.TOLERANCIA_QTD||'->'||NEW.TOLERANCIA_QTD;
       END
   IF (OLD.TOLERANCIA_PERC <> NEW.TOLERANCIA_PERC) THEN
       BEGIN
       HISTORICO = HISTORICO||' %TOL.CONS.'||OLD.TOLERANCIA_PERC||'->'||NEW.TOLERANCIA_PERC;
       END

   IF (OLD.CONTROLE_TALAO <> NEW.CONTROLE_TALAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CTR.TAL.'||OLD.CONTROLE_TALAO||'->'||NEW.CONTROLE_TALAO;
       END
   IF (OLD.CONTROLE_ALOCACAO <> NEW.CONTROLE_ALOCACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CTR.ALOC.'||OLD.CONTROLE_ALOCACAO||'->'||NEW.CONTROLE_ALOCACAO;
       END
   IF (OLD.GGF <> NEW.GGF) THEN
       BEGIN
       HISTORICO = HISTORICO||' GGF:'||OLD.GGF||'->'||NEW.GGF;
       END
   IF (OLD.GERAR_EAN <> NEW.GERAR_EAN) THEN
       BEGIN
       HISTORICO = HISTORICO||' GERAR.EAN.AUT:'||OLD.GERAR_EAN||'->'||NEW.GERAR_EAN;
       END
   IF (OLD.FEEF <> NEW.FEEF) THEN
       BEGIN
       HISTORICO = HISTORICO||' FEEF: '||OLD.FEEF||'->'||NEW.FEEF;
       END
   IF (OLD.CONTROLE_PECA <> NEW.CONTROLE_PECA) THEN
       BEGIN
       HISTORICO = HISTORICO||' CONTR.EST.P/PECA:'||OLD.CONTROLE_PECA||'->'||NEW.CONTROLE_PECA;
       END
   IF (OLD.COMPOE_CUSTO <> NEW.COMPOE_CUSTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' COMP.CUSTO:'||OLD.COMPOE_CUSTO||'->'||NEW.COMPOE_CUSTO;
       END
   IF (OLD.REPRESENTANTE_COMISSAO <> NEW.REPRESENTANTE_COMISSAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' %COMISS:'||OLD.REPRESENTANTE_COMISSAO||'->'||NEW.REPRESENTANTE_COMISSAO;
       END
   IF (OLD.SEQ_COMPOSICAO_CUSTO <> NEW.SEQ_COMPOSICAO_CUSTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' SEQ.PROD.FINS CUSTO:'||OLD.SEQ_COMPOSICAO_CUSTO||'->'||NEW.SEQ_COMPOSICAO_CUSTO;
       END

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

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

   IF (OLD.HABILITA_COMPOSICAO_CARGA <> NEW.HABILITA_COMPOSICAO_CARGA) THEN
       BEGIN
       HISTORICO = HISTORICO||' HAB.COMP.CARGA:'||OLD.HABILITA_COMPOSICAO_CARGA||'->'||NEW.HABILITA_COMPOSICAO_CARGA;
       END

   if (HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBFAMILIA', 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),
       :Historico);
       End
End;



