UFN_RECURRINGGIFT_GETBALANCEASOFINCURRENCY

Returns the balance of total payments made to a recurring gift as of a given date in the given currency.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@RECURRINGID uniqueidentifier IN
@ASOFDATE datetime IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_RECURRINGGIFT_GETBALANCEASOFINCURRENCY
            (
                @RECURRINGID uniqueidentifier,
                @ASOFDATE datetime,
                @CURRENCYID uniqueidentifier
            ) 
            returns money
            with execute as caller
            as begin
                declare @RESULT money;
                declare @TRANSACTIONCURRENCYID uniqueidentifier;
                declare @CURRENTDATE datetime = getdate(); -- Use today's date to get the exchange rate.


                select 
                    @RESULT = sum(RECURRINGGIFTACTIVITY.AMOUNT),
                    @TRANSACTIONCURRENCYID = RECURRINGGIFTACTIVITY.APPLICATIONCURRENCYID
                from 
                    dbo.RECURRINGGIFTACTIVITY
                inner join dbo.REVENUESPLIT
                    on REVENUESPLIT.ID = RECURRINGGIFTACTIVITY.PAYMENTREVENUEID
                inner join dbo.REVENUE
                    on REVENUE.ID = REVENUESPLIT.REVENUEID
                where 
                    RECURRINGGIFTACTIVITY.SOURCEREVENUEID = @RECURRINGID
                    and REVENUE.DATE <= @ASOFDATE
                group by RECURRINGGIFTACTIVITY.APPLICATIONCURRENCYID

                if @CURRENCYID is not null and @TRANSACTIONCURRENCYID is not null and @CURRENCYID <> @TRANSACTIONCURRENCYID
                begin
                    declare @CURRENCYEXCHANGERATEID uniqueidentifier;
                    set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@TRANSACTIONCURRENCYID, @CURRENCYID, @CURRENTDATE, 1, null);
                    if (@CURRENCYEXCHANGERATEID is not null)
                        set @RESULT = dbo.UFN_CURRENCY_CONVERT(@RESULT, @CURRENCYEXCHANGERATEID)
                    else    
                        set @RESULT = dbo.UFN_CURRENCY_CONVERTINVERSE(@RESULT, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, @TRANSACTIONCURRENCYID, @CURRENTDATE, 1, null))
                end
                return @RESULT;
            end