CREATE OR ALTER TRIGGER TTBCOMISSAO_B01U FOR TBCOMISSAO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO        VARCHAR(1000);
DECLARE VARIABLE HISTORICO_STATUS VARCHAR(1000);
DECLARE VARIABLE HISTORICO_SALDO  VARCHAR(1000);
BEGIN
     HISTORICO       = '';
     HISTORICO_SALDO = '';
     HISTORICO_STATUS= '';
     IF((NEW.REPRESENTANTE_ID   <> OLD.REPRESENTANTE_ID
      OR OLD.DATA_VENCIMENTO    <> NEW.DATA_VENCIMENTO
      OR OLD.ORIGEM             <> NEW.ORIGEM
      OR OLD.ESTABELECIMENTO_ID <> NEW.ESTABELECIMENTO_ID
      OR OLD.VALOR              <> NEW.VALOR
      OR OLD.DATA_EMISSAO       <> NEW.DATA_EMISSAO
      OR OLD.CORRETOR_ID        <> NEW.CORRETOR_ID
      OR OLD.VENDEDOR_ID        <> NEW.VENDEDOR_ID
      OR OLD.STATUS             <> NEW.STATUS)
      AND OLD.SALDO = 0)THEN
     BEGIN
        EXCEPTION "..." 'COMISSAO '||FN_LPAD(OLD.ID,5,0)||', DT.EMISSAO:'||FN_DATE(OLD.DATA_EMISSAO,'DD/MM/YYYY')||', VALOR:'||OLD.VALOR||' JA UTILIZADA, ALTERACAO CANCELADA!';
     END

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

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

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

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

     IF(NEW.STATUS <> OLD.STATUS)THEN
     BEGIN
       IF(NEW.STATUS = '0')THEN
       BEGIN
          HISTORICO_STATUS = HISTORICO_STATUS||' COMISSAO INATIVADA';
       END
       IF(NEW.STATUS = '1')THEN
       BEGIN
          HISTORICO_STATUS = HISTORICO_STATUS||' COMISSAO REATIVADA';
       END
     END

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

     IF(NEW.SALDO <> OLD.SALDO)THEN
     BEGIN
          IF(NEW.SALDO = 0)THEN
          BEGIN
             HISTORICO_SALDO = HISTORICO_SALDO||' COMISSAO BAIXADA.';
          END
          
          IF(NEW.SALDO = OLD.VALOR)THEN
          BEGIN
             HISTORICO_SALDO = HISTORICO_SALDO||' BAIXA DE COMISSAO DESFEITA.';
          END
     END

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

     IF(HISTORICO_SALDO <> '') THEN
     BEGIN
          EXECUTE PROCEDURE SPI_HISTORICO('TBCOMISSAO', OLD.ID, HISTORICO_SALDO);
     END             

     IF(HISTORICO_STATUS <> '') THEN
     BEGIN
          EXECUTE PROCEDURE SPI_HISTORICO('TBCOMISSAO', OLD.ID, HISTORICO_STATUS);
     END
END^