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

end;

CREATE OR ALTER procedure rel_posicao_pecas (
    localizacao integer,
    familia integer,
    cores varchar(400),
    obs varchar(400),
    produto integer,
    data_1 date,
    data_2 date,
    classif char(1))
returns (
    produto_id integer,
    produto_descricao varchar(130),
    tamanho integer,
    tam_descricao varchar(10),
    estoque varchar(30),
    quantidade varchar(30),
    saldo varchar(30),
    tara varchar(30),
    remessa_talao varchar(20),
    peca varchar(15),
    ob varchar(15),
    enderecamento varchar(15),
    nf_empresa varchar(120),
    operador varchar(50),
    datahora_registro varchar(20),
    tipo_registro varchar(30),
    classificacao char(1),
    observacao blob sub_type 1 segment size 80)
as
declare variable vtipo char(1);
declare variable vproduto_id integer;
declare variable vproduto_descricao varchar(130);
declare variable vtamanho integer;
declare variable vtam_descricao varchar(10);
declare variable vestoque varchar(30);
declare variable vtara varchar(30);
declare variable vquantidade varchar(30);
declare variable vsaldo varchar(30);
declare variable vremessa_talao varchar(20);
declare variable vpeca varchar(15);
declare variable vob varchar(15);
declare variable venderecamento varchar(15);
declare variable vnf_empresa varchar(120);
declare variable voperador varchar(50);
declare variable vdatahora_registro varchar(20);
declare variable vtipo_registro varchar(30);
declare variable vchave varchar(20);
declare variable vestoq varchar(30);
declare variable vclassificacao char(1);
BEGIN

end;

CREATE OR ALTER procedure spc_talao_pecas_disponiveis (
    talao_id integer)
returns (
    referencia_tipo varchar(4),
    referencia_id integer,
    produto_id integer,
    remessa varchar(20),
    remessa_id integer,
    remessa_talao_id integer,
    remessa_talao_detalhe_id integer,
    enderecamento varchar(64),
    saldo numeric(18,4),
    observacao varchar(500))
as
declare variable consumo_produto_id integer;
declare variable consumo_tamanho integer;
declare variable consumo_quantidade numeric(15,4);
BEGIN

end;

ALTER TABLE TBREVISAO_OB ADD OLD_PERFIL VARCHAR(10) DEFAULT '';
update TBREVISAO_OB set OLD_PERFIL = CLASSIFICACAO;
ALTER TABLE TBREVISAO_OB DROP CLASSIFICACAO;
ALTER TABLE TBREVISAO_OB ADD CLASSIFICACAO VARCHAR(10) DEFAULT '';
update TBREVISAO_OB set CLASSIFICACAO = OLD_PERFIL;
ALTER TABLE TBREVISAO_OB DROP OLD_PERFIL;


CREATE OR ALTER procedure spc_talao_pecas_disponiveis (
    talao_id integer)
returns (
    referencia_tipo varchar(4),
    referencia_id integer,
    produto_id integer,
    remessa varchar(20),
    remessa_id integer,
    remessa_talao_id integer,
    remessa_talao_detalhe_id integer,
    enderecamento varchar(64),
    saldo numeric(18,4),
    observacao varchar(500))
as
declare variable consumo_produto_id integer;
declare variable consumo_tamanho integer;
declare variable consumo_quantidade numeric(15,4);
BEGIN
    
    FOR
        SELECT
            C.PRODUTO_ID,
            COALESCE(C.TAMANHO,0)TAMANHO,
            MAX(C.QUANTIDADE)
        
        FROM
            VWREMESSA_TALAO T,
            VWREMESSA_CONSUMO C
        
        WHERE T.ID               = :TALAO_ID
        AND C.REMESSA_ID       = T.REMESSA_ID
        AND C.REMESSA_TALAO_ID = T.REMESSA_TALAO_ID
        AND C.COMPONENTE       = '0'
        AND C.STATUS           = '0'
        
        GROUP BY 1,2
    INTO
        CONSUMO_PRODUTO_ID,
        CONSUMO_TAMANHO,
        CONSUMO_QUANTIDADE
    DO
    BEGIN

        FOR
            SELECT FIRST 5
                REFERENCIA_TIPO,
                REFERENCIA_ID,
                PRODUTO_ID,
                CAST(SUBSTRING(REMESSA_DADOS FROM  1 FOR 15) AS INTEGER)REMESSA,
                CAST(SUBSTRING(REMESSA_DADOS FROM 16 FOR 15) AS INTEGER)REMESSA_TALAO_ID,  
                CAST(SUBSTRING(REMESSA_DADOS FROM 31 FOR 15) AS INTEGER)REMESSA_TALAO_DETALHE_ID,
                ENDERECAMENTO,
                SALDO,
                OBSERVACAO
            FROM (
                SELECT
                    'R' REFERENCIA_TIPO,
                    R.ID REFERENCIA_ID,
                    R.PRODUTO_ID,
            
                    (SELECT FIRST 1
                            LPAD(D.REMESSA_ID       ,15)||
                            LPAD(D.REMESSA_TALAO_ID ,15)||
                            LPAD(D.ID               ,15)
                       FROM VWREMESSA_TALAO_DETALHE D
                      WHERE D.ID = R.TALAO_ID)REMESSA_DADOS,
        
                    (SELECT FIRST 1 E.GRUPO || '/' || E.SUBGRUPO
                       FROM TBENDERECAMENTO E
                      WHERE E.ID = R.ENDERECAMENTO_ID) ENDERECAMENTO,
            
                    (R.SALDO -
                    COALESCE(
                        (SELECT SUM(V.QUANTIDADE)
                           FROM TBREMESSA_TALAO_VINCULO V
                          WHERE V.TIPO = 'R'
                            AND V.TABELA_ID = R.ID
                            AND V.STATUS = '0'),0)
                    ) SALDO,

                    (SELECT FIRST 1 IIF(O.OB <> 0,  'OB: ' || O.OB, '') || IIF(O.CLASSIFICACAO <> '',' CLASSIF.: ' || O.CLASSIFICACAO,'')
                       FROM TBREVISAO_OB O
                      WHERE O.OB = R.OB) OBSERVACAO
            
                FROM 
                    TBREVISAO R
                
                WHERE R.PRODUTO_ID          = :CONSUMO_PRODUTO_ID
                AND COALESCE(R.TAMANHO,0) = :CONSUMO_TAMANHO
                AND R.SALDO               > 0
        
                ORDER BY
                    R.SALDO
            ) X
            WHERE
                X.SALDO >= :CONSUMO_QUANTIDADE

            UNION

            SELECT FIRST 5
                REFERENCIA_TIPO,
                REFERENCIA_ID,
                PRODUTO_ID,
                REMESSA_ID,
                REMESSA_TALAO_ID,
                REMESSA_TALAO_DETALHE_ID,
                NULL ENDERECAMENTO,
                SALDO,
                NULL OBSERVACAO
            FROM (
                SELECT
                    'D' REFERENCIA_TIPO,
                    D.ID REFERENCIA_ID,
                    D.PRODUTO_ID,
                    D.REMESSA_ID,
                    D.REMESSA_TALAO_ID,
                    D.ID REMESSA_TALAO_DETALHE_ID,
                    (D.QUANTIDADE_SALDO -
                    COALESCE(
                        (SELECT SUM(V.QUANTIDADE)
                           FROM TBREMESSA_TALAO_VINCULO V
                          WHERE V.TIPO = 'D'
                            AND V.TABELA_ID = D.ID
                            AND V.STATUS = '0'),0)
                    ) SALDO,

                    (SELECT FIRST 1 CV.ID
                       FROM TBREMESSA_CONSUMO_VINCULO CV
                      WHERE CV.REMESSA_TALAO_DETALHE_ID = D.ID) VINCULO

                FROM
                    VWREMESSA_TALAO_DETALHE D

                WHERE D.PRODUTO_ID          = :CONSUMO_PRODUTO_ID
                AND COALESCE(D.TAMANHO,0) = :CONSUMO_TAMANHO
                AND D.QUANTIDADE_SALDO > 0
                          
                ORDER BY
                    D.QUANTIDADE_SALDO
            ) X
            WHERE X.VINCULO IS NULL
            AND X.SALDO >= :CONSUMO_QUANTIDADE
        INTO
            REFERENCIA_TIPO,
            REFERENCIA_ID,
            PRODUTO_ID,
            REMESSA_ID,
            REMESSA_TALAO_ID,
            REMESSA_TALAO_DETALHE_ID,
            ENDERECAMENTO,
            SALDO,
            OBSERVACAO
        DO
        BEGIN
            REMESSA = (SELECT FIRST 1 REMESSA FROM VWREMESSA R WHERE R.REMESSA_ID = :REMESSA_ID);
            SUSPEND;
        END



    END



END;

CREATE OR ALTER procedure rel_posicao_pecas (
    localizacao integer,
    familia integer,
    cores varchar(400),
    obs varchar(400),
    produto integer,
    data_1 date,
    data_2 date,
    classif char(1))
returns (
    produto_id integer,
    produto_descricao varchar(130),
    tamanho integer,
    tam_descricao varchar(10),
    estoque varchar(30),
    quantidade varchar(30),
    saldo varchar(30),
    tara varchar(30),
    remessa_talao varchar(20),
    peca varchar(15),
    ob varchar(15),
    enderecamento varchar(15),
    nf_empresa varchar(120),
    operador varchar(50),
    datahora_registro varchar(20),
    tipo_registro varchar(30),
    classificacao char(1),
    observacao blob sub_type 1 segment size 80)
as
declare variable vtipo char(1);
declare variable vproduto_id integer;
declare variable vproduto_descricao varchar(130);
declare variable vtamanho integer;
declare variable vtam_descricao varchar(10);
declare variable vestoque varchar(30);
declare variable vtara varchar(30);
declare variable vquantidade varchar(30);
declare variable vsaldo varchar(30);
declare variable vremessa_talao varchar(20);
declare variable vpeca varchar(15);
declare variable vob varchar(15);
declare variable venderecamento varchar(15);
declare variable vnf_empresa varchar(120);
declare variable voperador varchar(50);
declare variable vdatahora_registro varchar(20);
declare variable vtipo_registro varchar(30);
declare variable vchave varchar(20);
declare variable vestoq varchar(30);
declare variable vclassificacao char(1);
BEGIN

  vChave = '';

FOR
  SELECT TIPO, PRODUTO_ID, LPAD(PRODUTO_ID,5,'0')||' - '||PRODUTO_DESCRICAO||IIF(TAMANHO>0,' - '||TAM_DESCRICAO,'') PRODUTO_DESCRICAO, TAMANHO, TAM_DESCRICAO,
       ESTOQUE, TARA, QUANTIDADE, SALDO, REMESSA_TALAO, PECA, OB,
       ENDERECAMENTO, NF_EMPRESA, OPERADOR, FORMATDATETIME(DATAHORA_REGISTRO) DATAHORA_REGISTRO,

       IIF(AVULSO='1','PEÇA IMPLANTADA',
       IIF(AVULSO='1','PEÇA IMPLANTADA',
       IIF(STATUS_OB='2','PESADO/LIBERADO S/REVISAO',
       IIF(STATUS_OB='3','PESADO/REPROVADO S/REVISAO',
       IIF(STATUS_OB='9','PRODUZIDO',
       IIF(RESULTADO = 'R','PESADO/REVISADO/APROVADO',
       IIF(RESULTADO = 'D','PESADO/REVISADO/REPROVADO',''))))))) TIPO_REGISTRO, CLASSIFICACAO, OBSERVACAO

FROM (
SELECT TIPO, PECA, PRODUTO_ID, PRODUTO_DESCRICAO, '' NF_EMPRESA,
       TARA, QUANTIDADE, SALDO, ESTOQUE,
       DATAHORA_REGISTRO, OB, RESULTADO, ENDERECAMENTO, OPERADOR,
       TAMANHO, TAM_DESCRICAO, AVULSO, STATUS_OB, CLASSIFICACAO, REMESSA_TALAO, OBSERVACAO
FROM (
SELECT '0' TIPO, '' PECA, P.CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, 0 NUMERO_NOTAFISCAL,
       '' EMPRESA, '' TARA, '' QUANTIDADE, '' SALDO,

       CAST((SELECT IIF(GS.TAMANHO = 0,ES.SALDO,
               IIF(GS.TAMANHO = 1,ES.T01_SALDO,IIF(GS.TAMANHO = 2,ES.T02_SALDO,
               IIF(GS.TAMANHO = 3,ES.T03_SALDO,IIF(GS.TAMANHO = 4,ES.T04_SALDO,
               IIF(GS.TAMANHO = 5,ES.T05_SALDO,IIF(GS.TAMANHO = 6,ES.T06_SALDO,
               IIF(GS.TAMANHO = 7,ES.T07_SALDO,IIF(GS.TAMANHO = 8,ES.T08_SALDO,
               IIF(GS.TAMANHO = 9,ES.T09_SALDO,IIF(GS.TAMANHO =10,ES.T10_SALDO,
               IIF(GS.TAMANHO =11,ES.T11_SALDO,IIF(GS.TAMANHO =12,ES.T12_SALDO,
               IIF(GS.TAMANHO =13,ES.T13_SALDO,IIF(GS.TAMANHO =14,ES.T14_SALDO,
               IIF(GS.TAMANHO =15,ES.T15_SALDO,IIF(GS.TAMANHO =16,ES.T16_SALDO,
               IIF(GS.TAMANHO =17,ES.T17_SALDO,IIF(GS.TAMANHO =18,ES.T18_SALDO,
               IIF(GS.TAMANHO =19,ES.T19_SALDO,IIF(GS.TAMANHO =20,ES.T20_SALDO,0)))))))))))))))))))))
          FROM TBESTOQUE_SALDO ES
         WHERE ES.ESTABELECIMENTO_CODIGO = 1
           AND ES.LOCALIZACAO_CODIGO = :LOCALIZACAO
           AND ES.PRODUTO_CODIGO = P.CODIGO) AS NUMERIC(15,2)) ESTOQUE,

       CURRENT_TIMESTAMP DATAHORA_REGISTRO, '' OB, '' RESULTADO,
       '' ENDERECAMENTO, '' OPERADOR,
        GS.TAMANHO,
       COALESCE((SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,GS.TAMANHO)),'') TAM_DESCRICAO,
       '' AVULSO, '' STATUS_OB, '' CLASSIFICACAO, '' REMESSA_TALAO, '' as OBSERVACAO


FROM TBPRODUTO P, TBGRADE_SEQ GS
WHERE P.FAMILIA_CODIGO = :FAMILIA
  AND P.STATUS = '1'
  AND ((P.GRADE_CODIGO > 0 AND GS.TAMANHO > 0) OR (P.GRADE_CODIGO = 0 AND GS.TAMANHO = 0))
  AND IIF( :PRODUTO > 0, P.CODIGO = :PRODUTO, TRUE)
) X WHERE X.ESTOQUE > 0

UNION

SELECT '1' TIPO, A.ID PECA, A.PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO,
          COALESCE(LPAD(A.NUMERO_NOTAFISCAL,7,'0')||' - '||
          (SELECT FIRST 1 E.NOMEFANTASIA FROM TBEMPRESA E WHERE E.CODIGO = A.EMPRESA_ID),'') NF_EMPRESA,
           CAST(A.TARA AS NUMERIC(15,2))  TARA,
           CAST(A.PESO_LIQUIDO AS NUMERIC(15,2))  QUANTIDADE,
           CAST(A.SALDO AS NUMERIC(15,2)) SALDO, '' ESTOQUE,
           A.DATAHORA DATAHORA_REGISTRO, A.OB, A.RESULTADO,
          COALESCE((SELECT FIRST 1 E.GRUPO||E.SUBGRUPO FROM TBENDERECAMENTO E WHERE E.ID = A.ENDERECAMENTO_ID),'') ENDERECAMENTO,
          COALESCE((SELECT FIRST 1 O.NOME FROM TBOPERADOR O WHERE O.CODIGO = A.OPERADOR_ID),
                   (SELECT FIRST 1 U.NOME FROM TBUSUARIO U WHERE U.CODIGO = A.USUARIO_ID)) OPERADOR, A.TAMANHO,
          COALESCE((SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,A.TAMANHO)),'') TAM_DESCRICAO,
          A.AVULSO,
          COALESCE(RO.STATUS,'') STATUS_OB,
          COALESCE(RO.CLASSIFICACAO,'') CLASSIFICACAO,
          '' REMESSA_TALAO, a.observacao

FROM  TBPRODUTO P, TBREVISAO A LEFT JOIN TBREVISAO_OB RO ON (RO.NFE_ID = A.NFE_ID AND RO.OB = A.OB)

WHERE A.PRODUTO_ID = P.CODIGO
  AND A.ESTABELECIMENTO_ID = 1
  AND A.LOCALIZACAO_ENTRADA = :LOCALIZACAO
  AND A.SALDO > 0
  AND P.FAMILIA_CODIGO = :FAMILIA
  AND IIF(:OBs = '0', TRUE, A.OB IN (SELECT * FROM SPLIT(:OBs,',')))
  AND IIF(:CORES = '0', TRUE, P.COR_CODIGO IN (SELECT * FROM SPLIT(:CORES,',')))
  AND IIF( :PRODUTO > 0, P.CODIGO = :PRODUTO , TRUE)
  AND A.datahora BETWEEN :DATA_1 AND :DATA_2

UNION

SELECT '2' TIPO, A.CONTROLE PECA,
       A.PRODUTO_CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, '' NF_EMPRESA,
       0 TARA,
       CAST(A.QUANTIDADE_PRODUCAO AS NUMERIC(15,2)) QUANTIDADE,
       CAST(A.QUANTIDADE_SALDO AS NUMERIC(15,2)) SALDO, '' ESTOQUE,
       A.HORA_PRODUCAO DATAHORA_REGISTRO, '' OB, '' RESULTADO,
       '' ENDERECAMENTO,
      (SELECT FIRST 1 O.NOME FROM TBOPERADOR O WHERE O.CODIGO = A.OPERADOR) OPERADOR, A.TAMANHO,
       COALESCE((SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,A.TAMANHO)),'') TAM_DESCRICAO,
       '' AVULSO, '9' STATUS_OB, '' CLASSIFICACAO,
       R.REMESSA||'-'||A.REMESSA_ACUMULADO_CONTROLE REMESSA_TALAO, '' as OBSERVACAO

FROM TBPEDIDO_ITEM_PROCESSADO A, TBPRODUTO P, TBREMESSA R

 WHERE A.PRODUTO_CODIGO = P.CODIGO
  AND A.REMESSA = R.NUMERO
  AND A.LOCALIZACAO_CODIGO = :LOCALIZACAO
  AND A.ESTABELECIMENTO_CODIGO = 1
  AND A.QUANTIDADE_SALDO > 0
  AND A.SITUACAO >= 2
  AND P.FAMILIA_CODIGO = :FAMILIA
  AND A.ESTOQUE_ID > 0
  AND IIF( :PRODUTO > 0, P.CODIGO = :PRODUTO , TRUE)
  AND A.DATA_PRODUCAO BETWEEN :DATA_1 AND :DATA_2
) X

 WHERE CLASSIFICACAO LIKE :CLASSIF

 ORDER BY
 X.PRODUTO_DESCRICAO, X.PRODUTO_ID, X.TAM_DESCRICAO, X.TIPO, X.PECA

 INTO :vTIPO,:vPRODUTO_ID,:vPRODUTO_DESCRICAO,:vTAMANHO,:vTAM_DESCRICAO,:vESTOQUE,:vTARA,
:vQUANTIDADE,:vSALDO,:vREMESSA_TALAO,:vPECA,:vOB,:vENDERECAMENTO,:vNF_EMPRESA,
:vOPERADOR,:vDATAHORA_REGISTRO,:vTIPO_REGISTRO,:vCLASSIFICACAO, OBSERVACAO

 DO

   --OBSERVACAO =  coalesce(OBSERVACAO,'');

   if (:vTIPO = '0') Then
       begin
       :vestoq = :vESTOQUE;
        vChave = :vPRODUTO_ID||'-'||:vTAMANHO;
       end else
   if (:vTIPO = '1' or :vTIPO = '2') Then
       Begin
        :PRODUTO_ID = :vPRODUTO_ID;
        :PRODUTO_DESCRICAO = :vPRODUTO_DESCRICAO;
        :TAMANHO = :vTAMANHO;
        :TAM_DESCRICAO = :vTAM_DESCRICAO;
        if (:vChave = :vPRODUTO_ID||'-'||:vTAMANHO) then
            Begin
            :ESTOQUE = :vESTOQ;
            End else
            Begin
            :ESTOQUE = '';
            End
        :TARA = :vTARA;
        :QUANTIDADE = :vQUANTIDADE;
        :SALDO = :vSALDO;
        :REMESSA_TALAO = :vREMESSA_TALAO;
        :PECA = :vPECA;
        :OB = :vOB;
        :ENDERECAMENTO = :vENDERECAMENTO;
        :NF_EMPRESA = :vNF_EMPRESA;
        :OPERADOR = :vOPERADOR;
        :DATAHORA_REGISTRO = :vDATAHORA_REGISTRO;
        :TIPO_REGISTRO = :vTIPO_REGISTRO;
        :vESTOQ = '';
        :vChave = '';
        :CLASSIFICACAO = :vCLASSIFICACAO;
        SUSPEND;
       End

END;

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

    HISTORICO = '';
    if (New.ID > 0) then
       Begin
    
           if (OLD.NFE_ID <> NEW.NFE_ID) then
               BEGIN
               HISTORICO = HISTORICO||' ID Doc.Fis.'||OLD.NFE_ID||'->'||NEW.NFE_ID;
               END
           if (OLD.EMPRESA_ID <> NEW.EMPRESA_ID) then
               BEGIN
               HISTORICO = HISTORICO||' Empresa '||OLD.EMPRESA_ID||'->'||NEW.EMPRESA_ID;
               END
           if (OLD.OB <> NEW.OB) then
               BEGIN
               HISTORICO = HISTORICO||' OB '||OLD.OB||'->'||NEW.OB;
               END
           if (OLD.UP_ID <> NEW.UP_ID) then
               BEGIN
               HISTORICO = HISTORICO||' UP '||OLD.UP_ID||'->'||NEW.UP_ID;
               END
           if (OLD.DATA <> NEW.DATA) then
               BEGIN
               HISTORICO = HISTORICO||' Data '||OLD.DATA||'->'||NEW.DATA;
               END
           if (OLD.CLASSIFICACAO <> NEW.CLASSIFICACAO) then
               BEGIN
               HISTORICO = HISTORICO||' Class.'||OLD.CLASSIFICACAO||'->'||NEW.CLASSIFICACAO;
               END
           if (OLD.OBSERVACAO <> NEW.OBSERVACAO) then
               BEGIN
               HISTORICO = HISTORICO||' Obs.'||OLD.OBSERVACAO||'->'||NEW.OBSERVACAO;
               END
           if (OLD.STATUS <> NEW.STATUS) then
               BEGIN
               if (NEW.STATUS = '0') Then
                   Begin
                   HISTORICO = HISTORICO||' Status alterado: -> OB PENDENTE';
                   End else
               if (NEW.STATUS = '1') Then
                   Begin
                   HISTORICO = HISTORICO||' Status alterado: -> OB LIBERADA PARA REVISAO';
                   End else
               if (NEW.STATUS = '2') Then
                   Begin
                   HISTORICO = HISTORICO||' Status alterado: -> OB LIBERADA SEM REVISAO';
                   End else
               if (NEW.STATUS = '3') Then
                   Begin
                   HISTORICO = HISTORICO||' Status alterado: -> OB REPROVADA';
                   End
               END

               if (Old.STATUS_REVISAO_DOCUMENTO = '0' AND New.STATUS_REVISAO_DOCUMENTO = '1') then
                   Begin
                   HISTORICO = :HISTORICO||' DOC.FISCAL ENCERRADO.';
                   End
               if (Old.STATUS_REVISAO_DOCUMENTO = '1' AND New.STATUS_REVISAO_DOCUMENTO = '0') then
                   Begin
                   HISTORICO = :HISTORICO||' DOC.FISCAL REATIVADO PARA PESAGEM.';
                   End
         
       if (HISTORICO <> '') then
           Begin
           INSERT INTO TBHISTORICO
                      (
                      TABELA,
                      TABELA_ID,
                      USUARIO, IP,
                      HISTORICO
                      )
               VALUES(
                      'TBREVISAO_OB',
                      Old.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),
                      :Historico
                      );
           End  
       End

end;

