CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B02I FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Operacao Contabil incluida no Produto: '||NEW.PRODUTO_ID;
    END

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

CREATE TRIGGER TTBPRODUTO_OPERACAO_CONT_B01U FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.OPERACAO_CODIGO <> NEW.OPERACAO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Cod. Operacao no ID: '||OLD.ID||', Alterado: '|| OLD.OPERACAO_CODIGO||' ->'||NEW.OPERACAO_CODIGO;
    END

    IF ( OLD.CONTA_CONTABIL <> NEW.CONTA_CONTABIL) THEN
    BEGIN
        HISTORICO = HISTORICO||' Conta Contabil no ID: '||OLD.ID||', Alterada: '|| OLD.CONTA_CONTABIL||'->'||NEW.CONTA_CONTABIL;
    END

    IF ( OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Observacao no ID: '||OLD.ID||', Alterada.';
    END

    IF ( OLD.CCUSTO <> NEW.CCUSTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Centro de Custo no ID: '||OLD.ID||', Alterado: '|| OLD.CCUSTO||'->'||NEW.CCUSTO;
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B01D FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Operacao Contabil excluida no Produto: '||OLD.PRODUTO_ID;
    END

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

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

    HISTORICO = '';

    IF ( NEW.EMPRESA_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Vinculo EDI incluido no: '||new.PRODUTO_CODIGO;
    END

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

CREATE TRIGGER TTBPRODUTO_EDI_B01U FOR TBPRODUTO_EDI
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.EMPRESA_CODIGO <> NEW.EMPRESA_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Emp.Codigo no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.EMPRESA_CODIGO||' ->'||NEW.EMPRESA_CODIGO;
    END

    IF (OLD.CODIGO <> NEW.CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Codigo no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterada: '|| OLD.CODIGO||'->'||NEW.CODIGO;
    END

    IF (OLD.T01 <> NEW.T01) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 1 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T01||'->'||NEW.T01;
    END

    IF (OLD.T02 <> NEW.T02) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 2 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T02||'->'||NEW.T02;
    END

    IF (OLD.T03 <> NEW.T03) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 3 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T03||'->'||NEW.T03;
    END

    IF (OLD.T04 <> NEW.T04) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 4 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T04||'->'||NEW.T04;
    END

    IF (OLD.T05 <> NEW.T05) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 5 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T05||'->'||NEW.T05;
    END

    IF (OLD.T06 <> NEW.T06) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 6 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T06||'->'||NEW.T06;
    END

    IF (OLD.T07 <> NEW.T07) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 7 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T07||'->'||NEW.T07;
    END

    IF (OLD.T08 <> NEW.T08) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 8 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T08||'->'||NEW.T08;
    END

    IF (OLD.T09 <> NEW.T09) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 9 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T09||'->'||NEW.T09;
    END

    IF (OLD.T10 <> NEW.T10) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 10 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T10||'->'||NEW.T10;
    END

    IF (OLD.T11 <> NEW.T11) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 11 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T11||'->'||NEW.T11;
    END

    IF (OLD.T12 <> NEW.T12) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 12 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T12||'->'||NEW.T12;
    END

    IF (OLD.T13 <> NEW.T13) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 13 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T13||'->'||NEW.T13;
    END

    IF (OLD.T14 <> NEW.T14) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 14 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T14||'->'||NEW.T14;
    END

    IF (OLD.T15 <> NEW.T15) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 15 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T15||'->'||NEW.T15;
    END

    IF (OLD.T16 <> NEW.T16) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 16 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T16||'->'||NEW.T16;
    END

    IF (OLD.T17 <> NEW.T17) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 17 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T17||'->'||NEW.T17;
    END

    IF (OLD.T18 <> NEW.T18) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 18 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T18||'->'||NEW.T18;
    END

    IF (OLD.T19 <> NEW.T19) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 19 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T19||'->'||NEW.T19;
    END

    IF (OLD.T20 <> NEW.T20) THEN
    BEGIN
        HISTORICO = HISTORICO||' Tamanho 20 no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.T20||'->'||NEW.T20;
    END

    IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Descricao no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado. ';
    END

    IF (OLD.UNIDADEMEDIDA_SIGLA <> NEW.UNIDADEMEDIDA_SIGLA) THEN
    BEGIN
        HISTORICO = HISTORICO||' Unid. Med. no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.UNIDADEMEDIDA_SIGLA||'->'||NEW.UNIDADEMEDIDA_SIGLA;
    END

    IF (OLD.ALTERANFE <> NEW.ALTERANFE) THEN
    BEGIN
        IF (NEW.ALTERANFE = '0') THEN
           HISTORICO = HISTORICO||' Nao Altera NFE no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO;
        IF (NEW.ALTERANFE = '1') THEN
           HISTORICO = HISTORICO||' Altera NFE no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO;
    END

    IF (OLD.CUSTO_UNITARIO <> NEW.CUSTO_UNITARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Custo Unitario no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.CUSTO_UNITARIO||'->'||NEW.CUSTO_UNITARIO;
    END

    IF (OLD.CODIGO_VSK <> NEW.CODIGO_VSK) THEN
    BEGIN
        HISTORICO = HISTORICO||' Custo Unitario no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.CODIGO_VSK||'->'||NEW.CODIGO_VSK;
    END

    IF (OLD.COR_DESCRICAO <> NEW.COR_DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Cor Descricao no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.COR_DESCRICAO||'->'||NEW.COR_DESCRICAO;
    END

    IF (OLD.PRIORIDADE <> NEW.PRIORIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||' Prioridade no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.PRIORIDADE||'->'||NEW.PRIORIDADE;
    END

    IF (OLD.MULTIPLO <> NEW.MULTIPLO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Multiplo no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.MULTIPLO||'->'||NEW.MULTIPLO;
    END

    IF (OLD.EAN <> NEW.EAN) THEN
    BEGIN
        HISTORICO = HISTORICO||' EAN no Vinc. EDI Produto: '||OLD.PRODUTO_CODIGO||', Alterado: '|| OLD.EAN||'->'||NEW.EAN;
    END

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

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

    HISTORICO = '';

    IF (OLD.PRODUTO_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Vinculo EDI excluido no Produto: '||OLD.PRODUTO_CODIGO;
    END

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

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

    HISTORICO = '';

    IF (NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Alternativa de Consumo incluido no: '||NEW.PRODUTO_ID;
    END

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

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

    HISTORICO = '';

    IF (OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Alternativa de consumo excluido no Produto: '||OLD.PRODUTO_ID;
    END

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


CREATE TRIGGER TTBPRODUTO_EDI_B02I FOR TBPRODUTO_EDI
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable id integer;
begin
    id = coalesce((select first 1 a.empresa_codigo from TBPRODUTO_EDI a
    where a.empresa_codigo = new.empresa_codigo and a.PRODUTO_CODIGO = new.PRODUTO_CODIGO),0);
    if(id > 0) then
    begin
        Exception "..." 'REGISTRO JA VINCULADO P/ EMPRESA SELECIONADA NESTE PRODUTO, OPERAÇÃO CANCELADA!';
    end
end;

CREATE OR ALTER TRIGGER TTBPRODUTO_EDI_B01I FOR TBPRODUTO_EDI
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.EMPRESA_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'VINC.EDI EMPRESA:'||NEW.EMPRESA_CODIGO||' INCLUIDO.';
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_EDI_B01U FOR TBPRODUTO_EDI
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

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

    IF (OLD.CODIGO <> NEW.CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CODIGO:'|| OLD.CODIGO||'->'||NEW.CODIGO;
    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.T20 <> NEW.T20) THEN
    BEGIN
        HISTORICO = HISTORICO||' T20:'|| OLD.T20||'->'||NEW.T20;
    END

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

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

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

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

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

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

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

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = HISTORICO||' VINC.EDI EMPRESA: '||NEW.EMPRESA_CODIGO||', Alterado. '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPRODUTO', NEW.PRODUTO_CODIGO, FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE OR ALTER TRIGGER TTBPRODUTO_EDI_B01D FOR TBPRODUTO_EDI
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.EMPRESA_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'VINC.EDI EMPRESA:'||OLD.EMPRESA_CODIGO||' EXCLUIDO.';
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B02I FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'OP.CONTABIL ID: '||NEW.ID||' INCLUIDA';
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B01U FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

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

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = HISTORICO||'OP.CONTABIL ID: '||NEW.ID||' ALTERADA,'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPRODUTO', NEW.PRODUTO_ID, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B01D FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'OP.CONTABIL ID: '||OLD.ID||' EXCLUIDA';
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_ALTERNATIVA_CON_B02I FOR TBPRODUTO_ALTERNATIVA_CONSUMO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'ALT.CONSUMO PRODUTO ID: '||NEW.PRODUTO_CONSUMO_ID||' INCLUIDA.';
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_ALTERNATIVA_CONS_B9U FOR TBPRODUTO_ALTERNATIVA_CONSUMO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
begin

   HISTORICO = '';

   if(OLD.PRODUTO_CONSUMO_ID <> NEW.PRODUTO_CONSUMO_ID or OLD.PRODUTO_CONSUMO_TAMANHO <> NEW.PRODUTO_CONSUMO_TAMANHO) then
       BEGIN
       HISTORICO = HISTORICO||' Prod.Cons:'||OLD.PRODUTO_CONSUMO_ID||'/'||OLD.PRODUTO_CONSUMO_TAMANHO||'->'||NEW.PRODUTO_CONSUMO_ID||'/'||NEW.PRODUTO_CONSUMO_TAMANHO;
       END
   if(OLD.SEQUENCIA <> NEW.SEQUENCIA) then
       BEGIN
       HISTORICO = HISTORICO||' SEQ:'||OLD.SEQUENCIA||'->'||NEW.SEQUENCIA;
       END
   if(OLD.USUARIOS <> NEW.USUARIOS) then
       BEGIN
       HISTORICO = HISTORICO||' USUARIOS:'||OLD.USUARIOS||'->'||NEW.USUARIOS;
       END

   if(HISTORICO <> '') Then
       Begin
        HISTORICO = 'ALT.CONSUMO PRODUTO ID: '||OLD.PRODUTO_CONSUMO_ID||' ALTERADA,'||HISTORICO;
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBPRODUTO', OLD.PRODUTO_ID,
      (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;

CREATE OR ALTER TRIGGER TTBPRODUTO_ALTERNATIVA_CON_B01D FOR TBPRODUTO_ALTERNATIVA_CONSUMO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'ALT.CONSUMO PRODUTO ID: '||OLD.PRODUTO_CONSUMO_ID||' EXCLUIDA.';
    END

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

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.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:'||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||' UND:'||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.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||' INV:'||OLD.INVENTARIO||'->'||NEW.INVENTARIO;
       END
   IF (OLD.TOLERANCIA <> NEW.TOLERANCIA) THEN
       BEGIN
       HISTORICO = HISTORICO||' TOLERANCIA: '||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.FAMILIA_ALTERNATIVA <> NEW.FAMILIA_ALTERNATIVA) THEN
       BEGIN
       HISTORICO = HISTORICO||' FAM.ALT:'||OLD.FAMILIA_ALTERNATIVA||'->'||NEW.FAMILIA_ALTERNATIVA;
       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.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 (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;

CREATE OR ALTER TRIGGER TTBPRODUTO_FICHA_B9U FOR TBPRODUTO_FICHA
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
begin

   HISTORICO = '';

   if (OLD.comprimento <> NEW.comprimento) then
       BEGIN
       HISTORICO = HISTORICO||' COMPR/ESPESS:'||OLD.comprimento||'->'||NEW.comprimento;
       END
   if (OLD.volume <> NEW.volume) then
       BEGIN
       HISTORICO = HISTORICO||' VOL(M3):'||OLD.volume||'->'||NEW.volume;
       END
   if (OLD.pesoliquido <> NEW.pesoliquido) then
       BEGIN
       HISTORICO = HISTORICO||' PESO LÍQ:'||OLD.pesoliquido||'->'||NEW.pesoliquido;
       END
   if (OLD.controle_beneficiamento <> NEW.controle_beneficiamento) then
       BEGIN
       HISTORICO = HISTORICO||' CONTR.BENEF:'||OLD.controle_beneficiamento||'->'||NEW.controle_beneficiamento;
       END
   if (OLD.secao <> NEW.secao) then
       BEGIN
       HISTORICO = HISTORICO||' SEÇÃO:'||OLD.secao||'->'||NEW.secao;
       END

   if (OLD.rendimento <> NEW.rendimento) then
       BEGIN
       HISTORICO = HISTORICO||' REND:'||OLD.rendimento||'->'||NEW.rendimento;
       END
   if (OLD.largura <> NEW.largura) then
       BEGIN
       HISTORICO = HISTORICO||' LARG/DENS:'||OLD.largura||'->'||NEW.largura;
       END
   if (OLD.composicao <> NEW.composicao) then
       BEGIN
       HISTORICO = HISTORICO||' COMPOS:'||OLD.composicao||'->'||NEW.composicao;
       END
   if (OLD.codigo_balanca <> NEW.codigo_balanca) then
       BEGIN
       HISTORICO = HISTORICO||' CÓD.BAL:'||OLD.codigo_balanca||'->'||NEW.codigo_balanca;
       END
   if (OLD.descricao_pdv <> NEW.descricao_pdv) then
       BEGIN
       HISTORICO = HISTORICO||' DESC.PDV:'||OLD.descricao_pdv||'->'||NEW.descricao_pdv;
       END

   if (OLD.cubagem_altura <> NEW.cubagem_altura) then
       BEGIN
       HISTORICO = HISTORICO||' CUB.ALT:'||OLD.cubagem_altura||'->'||NEW.cubagem_altura;
       END
   if (OLD.cubagem_largura <> NEW.cubagem_largura) then
       BEGIN
       HISTORICO = HISTORICO||' CUB.LARG:'||OLD.cubagem_largura||'->'||NEW.cubagem_largura;
       END
   if (OLD.cubagem_comprimento <> NEW.cubagem_comprimento) then
       BEGIN
       HISTORICO = HISTORICO||' CUB.COMP:'||OLD.cubagem_comprimento||'->'||NEW.cubagem_comprimento;
       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_PERC <> NEW.TOLERANCIA_PERC) then
       BEGIN
       HISTORICO = HISTORICO||' %TOL.CONS:'||OLD.TOLERANCIA_PERC||'->'||NEW.TOLERANCIA_PERC;
       END
   if (OLD.TOLERANCIA_QTD <> NEW.TOLERANCIA_QTD) then
       BEGIN
       HISTORICO = HISTORICO||' QTD.TOL.CONS:'||OLD.TOLERANCIA_QTD||'->'||NEW.TOLERANCIA_QTD;
       END
   IF (OLD.SOBRA_TIPO <> NEW.SOBRA_TIPO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TP.SOBRA:'||OLD.SOBRA_TIPO||'->'||NEW.SOBRA_TIPO;
       END

   if (HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBPRODUTO', OLD.PRODUTO_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;

CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B02I FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'OP.CONTABIL ID: '||NEW.ID||', OPE:'||NEW.OPERACAO_CODIGO||', CCONTABIL:'||NEW.CONTA_CONTABIL||', CCUSTO:'||NEW.CCUSTO||' INCLUIDO';
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B01D FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'OP.CONTABIL ID: '||OLD.ID||', OPE:'||OLD.OPERACAO_CODIGO||', CCONTABIL:'||OLD.CONTA_CONTABIL||', CCUSTO:'||OLD.CCUSTO||' EXCLUIDA';
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B01U FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

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

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

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'OP.CONTABIL ID: '||NEW.ID||', OPE:'||OLD.OPERACAO_CODIGO||', CCONTABIL:'||OLD.CONTA_CONTABIL||', CCUSTO:'||OLD.CCUSTO||' ALTERADO, '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPRODUTO', NEW.PRODUTO_ID, FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE OR ALTER TRIGGER TTBPRODUTO_ALTERNATIVA_CON_B02I FOR TBPRODUTO_ALTERNATIVA_CONSUMO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'ALT.CONS.ID: '||NEW.ID||',PROD.CONS: '||NEW.PRODUTO_CONSUMO_ID||'/TAM: '||NEW.PRODUTO_CONSUMO_TAMANHO||' INCLUIDA';
    END

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

CREATE OR ALTER TRIGGER TTBPRODUTO_ALTERNATIVA_CONS_B9U FOR TBPRODUTO_ALTERNATIVA_CONSUMO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
begin

   HISTORICO = '';

   if(OLD.PRODUTO_CONSUMO_ID <> NEW.PRODUTO_CONSUMO_ID or OLD.PRODUTO_CONSUMO_TAMANHO <> NEW.PRODUTO_CONSUMO_TAMANHO) then
       BEGIN
       HISTORICO = HISTORICO||'PROD.CONS:'||OLD.PRODUTO_CONSUMO_ID||'/ TAM: '||OLD.PRODUTO_CONSUMO_TAMANHO||'->'||NEW.PRODUTO_CONSUMO_ID||'/ TAM:'||NEW.PRODUTO_CONSUMO_TAMANHO;
       END
   if(OLD.SEQUENCIA <> NEW.SEQUENCIA) then
       BEGIN
       HISTORICO = HISTORICO||' SEQ:'||OLD.SEQUENCIA||'->'||NEW.SEQUENCIA;
       END
   if(OLD.USUARIOS <> NEW.USUARIOS) then
       BEGIN
       HISTORICO = HISTORICO||' USUARIOS:'||OLD.USUARIOS||'->'||NEW.USUARIOS;
       END

   if(HISTORICO <> '') Then
       Begin
       HISTORICO = 'ALT.CONS.ID: '||OLD.ID||',PROD.CONS: '||OLD.PRODUTO_CONSUMO_ID||'/TAM: '||OLD.PRODUTO_CONSUMO_TAMANHO||' ALTERADA,'||HISTORICO;
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBPRODUTO', OLD.PRODUTO_ID,
      (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;

CREATE OR ALTER TRIGGER TTBPRODUTO_ALTERNATIVA_CON_B01D FOR TBPRODUTO_ALTERNATIVA_CONSUMO
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'ALT.CONS.ID: '||OLD.ID||',PROD.CONS: '||OLD.PRODUTO_CONSUMO_ID||'/TAM: '||OLD.PRODUTO_CONSUMO_TAMANHO||' EXCLUIDA';
    END

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



CREATE OR ALTER TRIGGER TTBPRODUTO_EDI_B01U FOR TBPRODUTO_EDI
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

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

    IF (OLD.CODIGO <> NEW.CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CODIGO:'|| OLD.CODIGO||'->'||NEW.CODIGO;
    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.T20 <> NEW.T20) THEN
    BEGIN
        HISTORICO = HISTORICO||' T20:'|| OLD.T20||'->'||NEW.T20;
    END

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

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

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

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

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

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

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

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' VINC.EDI EMPRESA: '||NEW.EMPRESA_CODIGO||', ALTERADO. '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPRODUTO', NEW.PRODUTO_CODIGO, FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE OR ALTER TRIGGER TTBPRODUTO_OPERACAO_CONT_B02I FOR TBPRODUTO_OPERACAO_CONTABIL
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'OP.CONTABIL ID: '||NEW.ID||', OPE:'||NEW.OPERACAO_CODIGO||', CCONTABIL:'||NEW.CONTA_CONTABIL||', CCUSTO:'||NEW.CCUSTO||' INCLUIDA';
    END

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