ALTER TABLE TBMODELO
    ADD NR_PECAS INTEGER;
	
CREATE INDEX ITBMODELO_22
ON TBMODELO (NR_PECAS);

SET TERM ^ ;

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

   HISTORICO = '';

   if (OLD.tipoproduto_codigo <> NEW.tipoproduto_codigo) then
       BEGIN
       HISTORICO = HISTORICO||' Tipo '||OLD.tipoproduto_codigo||'->'||NEW.tipoproduto_codigo;
       END
   if (OLD.familia_codigo <> NEW.familia_codigo) then
       BEGIN
       HISTORICO = HISTORICO||' Fam.Prd.'||OLD.familia_codigo||'->'||NEW.familia_codigo;
       END
   if (OLD.familia_alternativa <> NEW.familia_alternativa) then
       BEGIN
       HISTORICO = HISTORICO||' Fam.Com.'||OLD.familia_alternativa||'->'||NEW.familia_alternativa;
       END
   if (OLD.linha_codigo <> NEW.linha_codigo) then
       BEGIN
       HISTORICO = HISTORICO||' Lin.'||OLD.linha_codigo||'->'||NEW.linha_codigo;
       END
   if (OLD.UNIDADEMEDIDA_SIGLA <> NEW.UNIDADEMEDIDA_SIGLA) then
       BEGIN
       HISTORICO = HISTORICO||' UM.'||OLD.UNIDADEMEDIDA_SIGLA||'->'||NEW.UNIDADEMEDIDA_SIGLA;
       END
   if (OLD.descricao <> NEW.descricao) then
       BEGIN
       HISTORICO = HISTORICO||' Desc.'||OLD.descricao||'->'||NEW.descricao;
       END

    if (OLD.data_lancamento <> NEW.data_lancamento) then
       BEGIN
       HISTORICO = HISTORICO||' DT.LANC:'||FORMATDATE(OLD.data_lancamento)||'->'||FORMATDATE(NEW.data_lancamento);
       END

   if (OLD.descricao_nf <> NEW.descricao_nf) then
       BEGIN
       HISTORICO = HISTORICO||' Desc.Cpl.'||OLD.descricao_nf||'->'||NEW.descricao_nf;
       END
       
   if (OLD.descricao_comercial <> NEW.descricao_comercial) then
       BEGIN
       HISTORICO = HISTORICO||' Desc.Com.'||OLD.descricao_comercial||'->'||NEW.descricao_comercial;
       END
   if (OLD.matriz_codigo <> NEW.matriz_codigo) then
       BEGIN
       HISTORICO = HISTORICO||' Mtz.'||OLD.matriz_codigo||'->'||NEW.matriz_codigo;
       END
   if (OLD.grade_codigo <> NEW.grade_codigo) then
       BEGIN
       HISTORICO = HISTORICO||' Grd.'||OLD.grade_codigo||'->'||NEW.grade_codigo;
       END
   if (OLD.classificacao <> NEW.classificacao) then
       BEGIN
       HISTORICO = HISTORICO||' Class.'||OLD.classificacao||'->'||NEW.classificacao;
       END
   if (OLD.compra_produz <> NEW.compra_produz) then
       BEGIN
       HISTORICO = HISTORICO||' Form.Entr.Est.'||OLD.compra_produz||'->'||NEW.compra_produz;
       END
   if (OLD.Densidade <> NEW.Densidade) then
       BEGIN
       HISTORICO = HISTORICO||' Dens.'||OLD.Densidade||'->'||NEW.Densidade;
       END
   if (OLD.Espessura<> NEW.Espessura) then
       BEGIN
       HISTORICO = HISTORICO||' Esp.'||OLD.Espessura||'->'||NEW.Espessura;
       END
   if (OLD.Tipo_Tag <> NEW.Tipo_Tag) then
       BEGIN
       HISTORICO = HISTORICO||' Tp.Tag '||OLD.Tipo_Tag||'->'||NEW.Tipo_Tag;
       END
   if (OLD.Acrescimo <> NEW.Acrescimo) then
       BEGIN
       HISTORICO = HISTORICO||' Acresc.'||OLD.Acrescimo||'->'||NEW.Acrescimo;
       END
   if (OLD.Prioridade <> NEW.Prioridade) then
       BEGIN
       HISTORICO = HISTORICO||' Prior.Prod.'||OLD.Prioridade||'->'||NEW.Prioridade;
       END
   if (OLD.Horas_Bloqueio <> NEW.Horas_Bloqueio) then
       BEGIN
       HISTORICO = HISTORICO||' Hr.Blq.'||OLD.Horas_Bloqueio||'->'||NEW.Horas_Bloqueio;
       END
   if (OLD.Gerar_Remessa <> NEW.Gerar_Remessa) then
       BEGIN
       HISTORICO = HISTORICO||' Hab.Ger.Rem.'||OLD.Gerar_Remessa||'->'||NEW.Gerar_Remessa;
       END 
   if (OLD.habilita_ecommerce <> NEW.habilita_ecommerce) then
       BEGIN
       HISTORICO = HISTORICO||' Hab.Ecom.'||OLD.habilita_ecommerce||'->'||NEW.habilita_ecommerce;
       END
   if (OLD.CATEGORIA_ID <> NEW.CATEGORIA_ID) then
       BEGIN
       HISTORICO = HISTORICO||' Cat:'||OLD.CATEGORIA_ID||'->'||NEW.CATEGORIA_ID;
       END
   if (OLD.Modelo_Pai is distinct from NEW.Modelo_Pai) then
       BEGIN
       HISTORICO = HISTORICO||' Modelo Pai:'||coalesce(OLD.Modelo_Pai,'')||'->'||coalesce(NEW.Modelo_Pai,'');
       END
   if (OLD.NR_PECAS is distinct from NEW.NR_PECAS) then
       BEGIN
       HISTORICO = HISTORICO||' Nr.Peças:'||coalesce(OLD.NR_PECAS,'')||'->'||coalesce(NEW.NR_PECAS,'');
       END

   if (OLD.t01 <> NEW.t01) then BEGIN HISTORICO = HISTORICO||' T01 '||OLD.t01||'->'||NEW.t01; END
   if (OLD.t02 <> NEW.t02) then BEGIN HISTORICO = HISTORICO||' T02 '||OLD.t02||'->'||NEW.t02; END
   if (OLD.t03 <> NEW.t03) then BEGIN HISTORICO = HISTORICO||' T03 '||OLD.t03||'->'||NEW.t03; END
   if (OLD.t04 <> NEW.t04) then BEGIN HISTORICO = HISTORICO||' T04 '||OLD.t04||'->'||NEW.t04; END
   if (OLD.t05 <> NEW.t05) then BEGIN HISTORICO = HISTORICO||' T05 '||OLD.t05||'->'||NEW.t05; END
   if (OLD.t06 <> NEW.t06) then BEGIN HISTORICO = HISTORICO||' T06 '||OLD.t06||'->'||NEW.t06; END
   if (OLD.t07 <> NEW.t07) then BEGIN HISTORICO = HISTORICO||' T07 '||OLD.t07||'->'||NEW.t07; END
   if (OLD.t08 <> NEW.t08) then BEGIN HISTORICO = HISTORICO||' T08 '||OLD.t08||'->'||NEW.t08; END
   if (OLD.t09 <> NEW.t09) then BEGIN HISTORICO = HISTORICO||' T09 '||OLD.t09||'->'||NEW.t09; END
   if (OLD.t10 <> NEW.t10) then BEGIN HISTORICO = HISTORICO||' T10 '||OLD.t10||'->'||NEW.t10; END
   if (OLD.t11 <> NEW.t11) then BEGIN HISTORICO = HISTORICO||' T11 '||OLD.t11||'->'||NEW.t11; END
   if (OLD.t12 <> NEW.t12) then BEGIN HISTORICO = HISTORICO||' T12 '||OLD.t12||'->'||NEW.t12; END
   if (OLD.t13 <> NEW.t13) then BEGIN HISTORICO = HISTORICO||' T13 '||OLD.t13||'->'||NEW.t13; END
   if (OLD.t14 <> NEW.t14) then BEGIN HISTORICO = HISTORICO||' T14 '||OLD.t14||'->'||NEW.t14; END
   if (OLD.t15 <> NEW.t15) then BEGIN HISTORICO = HISTORICO||' T15 '||OLD.t15||'->'||NEW.t15; END
   if (OLD.t16 <> NEW.t16) then BEGIN HISTORICO = HISTORICO||' T16 '||OLD.t16||'->'||NEW.t16; END
   if (OLD.t17 <> NEW.t17) then BEGIN HISTORICO = HISTORICO||' T17 '||OLD.t17||'->'||NEW.t17; END
   if (OLD.t18 <> NEW.t18) then BEGIN HISTORICO = HISTORICO||' T18 '||OLD.t18||'->'||NEW.t18; END
   if (OLD.t19 <> NEW.t19) then BEGIN HISTORICO = HISTORICO||' T19 '||OLD.t19||'->'||NEW.t19; END
   if (OLD.t11 <> NEW.t20) then BEGIN HISTORICO = HISTORICO||' T20 '||OLD.t20||'->'||NEW.t20; END

   if (OLD.STATUS <> NEW.STATUS) then
       BEGIN
       if (NEW.STATUS = '0') then
           begin
           HISTORICO = HISTORICO||' Status Inativado';
           new.data_inativacao = CURRENT_DATE;
           end
       if (NEW.STATUS = '1') then
           begin
           HISTORICO = HISTORICO||' Status Ativado';
           new.data_ativacao = CURRENT_DATE;
           end
       END

   if (HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBMODELO', 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
^

SET TERM ; ^

