SET TERM ^;

ALTER TABLE TBOFICINA_SETOR ADD ORIGEM_PRECO                VARCHAR(1) DEFAULT '0'^
ALTER TABLE TBOFICINA_SETOR ADD PAGAMENTO_CONDICAO          INTEGER^
ALTER TABLE TBOFICINA_SETOR ADD PAGAMENTO_FORMA             INTEGER^
ALTER TABLE TBOFICINA_SETOR ADD TABELA_PRECO                INTEGER^
ALTER TABLE TBOFICINA_SETOR ADD TABELA_PRECO_DESCONTO       INTEGER^
ALTER TABLE TBOFICINA_SETOR ADD CLASSIFICACAO_FINANCEIRA    VARCHAR(11)^
ALTER TABLE TBOFICINA_SETOR ADD PERCENTUAL_PRECO_DEFEITO    NUMERIC(15,8) DEFAULT 0^

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

   HISTORICO = '';

    IF (FN_IS_EMPTY(OLD.PAGAMENTO_FORMA, 0) <> FN_IS_EMPTY(NEW.PAGAMENTO_FORMA, 0)) THEN
       BEGIN
       HISTORICO = HISTORICO||' PAG. FORMA:'||FN_IS_EMPTY(OLD.PAGAMENTO_FORMA, 0)||'->'||FN_IS_EMPTY(NEW.PAGAMENTO_FORMA, 0);
       END

    IF (FN_IS_EMPTY(OLD.PAGAMENTO_CONDICAO, 0) <> FN_IS_EMPTY(NEW.PAGAMENTO_CONDICAO, 0)) THEN
       BEGIN
       HISTORICO = HISTORICO||' PAG. COND:'||FN_IS_EMPTY(OLD.PAGAMENTO_CONDICAO, 0)||'->'||FN_IS_EMPTY(NEW.PAGAMENTO_CONDICAO, 0);
       END

    IF (FN_IS_EMPTY(OLD.TABELA_PRECO, 0) <> FN_IS_EMPTY(NEW.TABELA_PRECO, 0)) THEN
       BEGIN
       HISTORICO = HISTORICO||' TAB. PRECO:'||FN_IS_EMPTY(OLD.TABELA_PRECO, 0)||'->'||FN_IS_EMPTY(NEW.TABELA_PRECO, 0);
       END  

    IF (FN_IS_EMPTY(OLD.TABELA_PRECO_DESCONTO, 0) <> FN_IS_EMPTY(NEW.TABELA_PRECO_DESCONTO, 0)) THEN
       BEGIN
       HISTORICO = HISTORICO||' TAB. PRECO DESC:'||FN_IS_EMPTY(OLD.TABELA_PRECO_DESCONTO, 0)||'->'||FN_IS_EMPTY(NEW.TABELA_PRECO_DESCONTO, 0);
       END

    IF (FN_IS_EMPTY(OLD.ORIGEM_PRECO, 0) <> FN_IS_EMPTY(NEW.ORIGEM_PRECO, 0)) THEN
       BEGIN
       HISTORICO = HISTORICO||' ORI. PRECO:'||FN_IS_EMPTY(OLD.ORIGEM_PRECO, 0)||'->'||FN_IS_EMPTY(NEW.ORIGEM_PRECO, 0);
       END

    IF (FN_IS_EMPTY(OLD.PERCENTUAL_PRECO_DEFEITO, 0) IS DISTINCT FROM FN_IS_EMPTY(NEW.PERCENTUAL_PRECO_DEFEITO, 0)) THEN
       BEGIN
       HISTORICO = HISTORICO||' %PRECO_DEF:'||FN_IS_EMPTY(OLD.PERCENTUAL_PRECO_DEFEITO, 0)||'->'||FN_IS_EMPTY(NEW.PERCENTUAL_PRECO_DEFEITO, 0);
       END

    IF (FN_IS_EMPTY(OLD.CLASSIFICACAO_FINANCEIRA, '') IS DISTINCT FROM FN_IS_EMPTY(NEW.CLASSIFICACAO_FINANCEIRA, '')) THEN
       BEGIN
       HISTORICO = HISTORICO||' CLASS.FIN:'||FN_IS_EMPTY(OLD.CLASSIFICACAO_FINANCEIRA, '')||'->'||FN_IS_EMPTY(NEW.CLASSIFICACAO_FINANCEIRA, '');
       END

   IF(HISTORICO <> '') THEN
    BEGIN
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBSETOR', OLD.SETOR_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),
       'OFICINA '||COALESCE((SELECT FIRST 1 FN_LPAD(EMP.CODIGO,6,0)||' - '||EMP.RAZAOSOCIAL FROM TBEMPRESA EMP WHERE EMP.CODIGO = NEW.OFICINA_ID),'')||' ALTERADA: '||:HISTORICO);       
    END
END^    

SET TERM ; ^