CREATE OR ALTER TRIGGER TTBPDV_CFE_FORMA_PAGAMENTO_B02I FOR TBPDV_CFE_FORMA_PAGAMENTO
ACTIVE BEFORE INSERT POSITION 2
AS
DECLARE VARIABLE OLD_SALDO_DEVOLUCAO NUMERIC(15,2);
DECLARE VARIABLE NEW_SALDO_DEVOLUCAO NUMERIC(15,2);

BEGIN

  IF(COALESCE(NEW.PDV_DEVOLUCAO_TROCA_ID, 0) > 0) THEN
  BEGIN
        SELECT
            T.VALOR_SALDO
        FROM TBPDV_DEVOLUCAO_TROCA T
        WHERE T.ID = NEW.PDV_DEVOLUCAO_TROCA_ID
        INTO :OLD_SALDO_DEVOLUCAO;

        IF(COALESCE(:OLD_SALDO_DEVOLUCAO, 0) > 0) THEN
        BEGIN
            :NEW_SALDO_DEVOLUCAO = ROUND(:OLD_SALDO_DEVOLUCAO - NEW.VALOR_LIQUIDO, 2);

            IF(:NEW_SALDO_DEVOLUCAO < 0) THEN
            BEGIN

                EXCEPTION "..."'SALDO DE DEVOLUCAO NAO PODE FICAR NEGATIVO. SALDO ATUAL: '||:OLD_SALDO_DEVOLUCAO||'. A BAIXAR: '||NEW.VALOR_LIQUIDO;

            END
        END


  END
END;