UFN_OPPORTUNITY_REVENUECOMMITTEDINCURRENCY

Calculates the amount of revenue committed to an opportunity.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


      CREATE function dbo.UFN_OPPORTUNITY_REVENUECOMMITTEDINCURRENCY
      (
        @ID uniqueidentifier,
        @CURRENCYID uniqueidentifier = null
      )
      returns money
      with execute as caller
      as begin

        if @CURRENCYID is null
          select @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

        declare @REVENUECOMMITTED money;

        select
          @REVENUECOMMITTED = sum(AMOUNT)
        from (
          -- gifts, pledges, planned gifts, grant awards, and matching gift claims

          select
            case
              when FINANCIALTRANSACTION.TRANSACTIONCURRENCYID = @CURRENCYID then FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT
              else dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(FINANCIALTRANSACTIONLINEITEM.ID, @CURRENCYID)
            end as AMOUNT
          from dbo.REVENUEOPPORTUNITY
            inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUEOPPORTUNITY.ID = FINANCIALTRANSACTIONLINEITEM.ID
            inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
            inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
          where
            REVENUEOPPORTUNITY.OPPORTUNITYID = @ID and
            FINANCIALTRANSACTIONLINEITEM.DELETEDON is null and
            FINANCIALTRANSACTION.DELETEDON is null and
            (
              FINANCIALTRANSACTION.TYPECODE in (1, 3, 4, 6) or
              (
                FINANCIALTRANSACTION.TYPECODE = 0 and
                REVENUESPLIT_EXT.APPLICATIONCODE = 0
              )
            )

          union all

          -- event registrations

          select
            case
              when EVENT.BASECURRENCYID = @CURRENCYID then REGISTRANTREGISTRATION.AMOUNT
              else dbo.UFN_REGISTRANTREGISTRATION_GETAMOUNTINCURRENCY(REGISTRANTREGISTRATION.ID, @CURRENCYID)
            end as AMOUNT
          from dbo.EVENTREGISTRATIONOPPORTUNITY
            inner join dbo.REGISTRANT on EVENTREGISTRATIONOPPORTUNITY.ID = REGISTRANT.ID
            inner join dbo.REGISTRANTREGISTRATION on REGISTRANT.ID = REGISTRANTREGISTRATION.REGISTRANTID
            inner join dbo.EVENT on REGISTRANT.EVENTID = EVENT.ID
          where
            EVENTREGISTRATIONOPPORTUNITY.OPPORTUNITYID = @ID and
            REGISTRANT.GUESTOFREGISTRANTID is null
        ) REVENUECOMMITTED;

        return coalesce(@REVENUECOMMITTED, 0);
      end