UFN_RECURRINGGIFT_GETREVALUEDBASEPASTDUEAMOUNTASOF
Returns the balance of total payments made to a recurring gift, as a revalued base currency amount, as of a given date.
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RECURRINGID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN | |
@USEPREVIOUSREVALUATION | bit | IN |
Definition
Copy
create function dbo.UFN_RECURRINGGIFT_GETREVALUEDBASEPASTDUEAMOUNTASOF
(
@RECURRINGID uniqueidentifier,
@ASOFDATE datetime,
@USEPREVIOUSREVALUATION bit = 0
)
returns money
with execute as caller
as begin
declare @RESULT money;
declare @REVALUATIONID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
set @REVALUATIONID = dbo.UFN_REVENUE_GETREVALUATIONASOF(@RECURRINGID, @ASOFDATE);
declare @FOUNDPREVIOUSREVALUATION bit = 0;
if @USEPREVIOUSREVALUATION = 1 --We want to use the previous revaluation
begin
--Get the info for the current revaluation we'll need to figure out which other revaluation is the previous one.
declare @CURRENTREVALUATIONDATE datetime;
declare @CURRENTREVALUATIONSEQUENCE int;
select
@CURRENTREVALUATIONDATE = DATE,
@CURRENTREVALUATIONSEQUENCE = SEQUENCE
from COMMITMENTREVALUATION
where ID = @REVALUATIONID
--Get the revaluation immediately before the currency
select top 1 @REVALUATIONID = COMMITMENTREVALUATION.ID, @FOUNDPREVIOUSREVALUATION = 1
from dbo.COMMITMENTREVALUATION
inner join dbo.REVENUECOMMITMENTREVALUATION on REVENUECOMMITMENTREVALUATION.COMMITMENTREVALUATIONID = COMMITMENTREVALUATION.ID
where REVENUECOMMITMENTREVALUATION.REVENUEID = @RECURRINGID
and(
(@CURRENTREVALUATIONDATE = COMMITMENTREVALUATION.DATE
and @CURRENTREVALUATIONSEQUENCE > COMMITMENTREVALUATION.SEQUENCE
)
or @CURRENTREVALUATIONDATE > COMMITMENTREVALUATION.DATE
)
order by COMMITMENTREVALUATION.DATE desc, COMMITMENTREVALUATION.SEQUENCE desc
end
--If we're using the current revaluation or the previous, and we found one, get the rate from the revaluation record.
if @REVALUATIONID is not null
and (@USEPREVIOUSREVALUATION = 0
or(
@USEPREVIOUSREVALUATION = 1
and @FOUNDPREVIOUSREVALUATION = 1
)
)
begin
select @BASEEXCHANGERATEID = BASEEXCHANGERATEID
from dbo.COMMITMENTREVALUATION
where ID = @REVALUATIONID;
end
else
begin
--The revaluation we were looking for, so get the rate from the revenue record.
select @BASEEXCHANGERATEID = BASEEXCHANGERATEID
from dbo.REVENUE
where REVENUE.ID = @RECURRINGID
end
set @RESULT = dbo.UFN_CURRENCY_CONVERT(dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNT(@RECURRINGID, @ASOFDATE), @BASEEXCHANGERATEID);
return @RESULT;
end