CREATE OR ALTER trigger ttbrequisicao_oc_b3u_03 for tbrequisicao_oc
active before update position 3
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';  

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

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

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

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

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

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

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

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

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

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

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

   IF (OLD.DATA_UTILIZACAO <> NEW.DATA_UTILIZACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' DATA UTIL: '||FORMATDATE(OLD.DATA_UTILIZACAO)||' -> '||formatdate(NEW.DATA_UTILIZACAO);
       END

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

    
    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBREQUISICAO_OC', OLD.id, HISTORICO);
    END
end^

CREATE OR ALTER trigger tbrequisicao_oc_item_b02i for tbrequisicao_oc_item
active before insert position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
declare variable flag integer;
BEGIN

   HISTORICO = 'ITEM INSERIDO: PRODUTO: '||NEW.produto_id || ' ,QTD: '|| cast( new.quantidade as numeric(15,2));

   --flag = coalesce((select first 1 o.flag from tbrequisicao_oc o where o.id = new.requisicao_id),1);

   IF (HISTORICO <> ''/* AND flag = 0*/) THEN
       BEGIN

       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBREQUISICAO_OC', NEW.REQUISICAO_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^

CREATE OR ALTER trigger tbrequisicao_oc_item_b01i for tbrequisicao_oc_item
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE HISTORICO2 VARCHAR(500);
BEGIN

   HISTORICO = '';

   IF (OLD.LICITACAO_ID <> NEW.LICITACAO_ID) THEN
       BEGIN
        HISTORICO = HISTORICO||' LIC: '||OLD.LICITACAO_ID||'->'||NEW.LICITACAO_ID;
       END
   IF (OLD.OC <> NEW.OC) THEN
       BEGIN
        HISTORICO = HISTORICO||', OC: '||OLD.OC||'->'||NEW.OC;
       END

   IF (OLD.TAMANHO <> NEW.TAMANHO) THEN
       BEGIN
        HISTORICO = HISTORICO||' ,TAM: '||OLD.TAMANHO||'->'||NEW.TAMANHO;
       END
   
   IF (OLD.UM <> NEW.UM) THEN
       BEGIN
        HISTORICO = HISTORICO||' ,UM: '||OLD.UM||'->'||NEW.UM;
       END
   IF (OLD.QUANTIDADE <> NEW.QUANTIDADE) THEN
       BEGIN
        HISTORICO = HISTORICO||' ,QTD: '||cast( old.quantidade as numeric(15,2))||'->'||cast( new.quantidade as numeric(15,2));
       END
   IF (OLD.VALOR_UNITARIO <> NEW.VALOR_UNITARIO) THEN
       BEGIN
        HISTORICO = HISTORICO||' ,VL.UNIT: '||cast( old.valor_unitario as numeric(15,2))||'->'||cast( new.valor_unitario as numeric(15,2));
       END

   if (OLD.operacao_codigo <> NEW.operacao_codigo) then
      BEGIN
        HISTORICO = HISTORICO||' ,OP: '||OLD.operacao_codigo||'->'||NEW.operacao_codigo;
      END 

   if (OLD.operacao_ccusto <> NEW.operacao_ccusto) then
      BEGIN
        HISTORICO = HISTORICO||' ,OP.CCUSTO: '||OLD.operacao_ccusto||'->'||NEW.operacao_ccusto;
      END  

   if (OLD.operacao_ccontabil <> NEW.operacao_ccontabil) then
      BEGIN
        HISTORICO = HISTORICO||' ,OP.CCONTABIL: '||OLD.operacao_ccontabil||'->'||NEW.operacao_ccontabil;
      END


   IF (HISTORICO <> '') THEN
       BEGIN

       IF (OLD.PRODUTO_ID <> NEW.PRODUTO_ID) THEN
       begin
         HISTORICO2 = ' PROD. '||OLD.PRODUTO_ID||'->'||NEW.PRODUTO_ID;
       end else
       begin
         HISTORICO2 = ' PROD. '||NEW.PRODUTO_ID;
       end
    
--       IF (OLD.TAMANHO <> NEW.TAMANHO) THEN
--       begin
--         HISTORICO2 = HISTORICO2||' TAM.: '||OLD.TAMANHO||'->'||NEW.TAMANHO;
--       end else
--       begin
--         HISTORICO2 = HISTORICO2||' TAM.: '||NEW.TAMANHO;
--       end

       HISTORICO = 'ITEM ALTERADO: '||HISTORICO2||HISTORICO;

       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBREQUISICAO_OC', new.REQUISICAO_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^