UFN_RECURRINGGIFT_GETREVALUEDINSTALLMENTPASTDUEAMOUNTS
Returns the unpaid balances for the installments of a given recurring gift as of a given date.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RECURRINGGIFTID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN |
Definition
Copy
create function dbo.UFN_RECURRINGGIFT_GETREVALUEDINSTALLMENTPASTDUEAMOUNTS
(
@RECURRINGGIFTID uniqueidentifier,
@ASOFDATE datetime
)
returns @INSTALLMENTS table (
ID uniqueidentifier,
TRANSACTIONPASTDUEAMOUNT money,
BASEPASTDUEAMOUNT money,
ORGANIZATIONPASTDUEAMOUNT money
)
with execute as caller
as begin
-- Get currency data in preparation for conversion.
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @DECIMALDIGITSBASECURRENCY int;
declare @DECIMALDIGITSORGANIZATIONCURRENCY int;
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
select
@TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
@BASECURRENCYID = BASECURRENCYID
from dbo.REVENUE
where REVENUE.ID = @RECURRINGGIFTID;
select @DECIMALDIGITSBASECURRENCY = DECIMALDIGITS from dbo.CURRENCY where ID = @BASECURRENCYID;
select @DECIMALDIGITSORGANIZATIONCURRENCY = DECIMALDIGITS from dbo.CURRENCY where ID = @ORGANIZATIONCURRENCYID;
-- Get the total balance of the revenue in each currency.
declare @TRANSACTIONFULLAMOUNT money;
declare @BASEFULLAMOUNT money;
declare @ORGANIZATIONFULLAMOUNT money;
set @TRANSACTIONFULLAMOUNT = dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNT(@RECURRINGGIFTID, @ASOFDATE);
set @BASEFULLAMOUNT = dbo.UFN_RECURRINGGIFT_GETREVALUEDBASEPASTDUEAMOUNTASOF(@RECURRINGGIFTID, @ASOFDATE, 0);
set @ORGANIZATIONFULLAMOUNT = dbo.UFN_RECURRINGGIFT_GETREVALUEDORGANIZATIONPASTDUEAMOUNTASOF(@RECURRINGGIFTID, @ASOFDATE, 0);
-- Convert the installment balances proportionally, so they will add up to the total
-- recurring gift pasta amount due in each currency.
declare @ITEMLIST xml = (
select
RECURRINGGIFTINSTALLMENT.ID,
dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCEASOF(RECURRINGGIFTINSTALLMENT.ID, @ASOFDATE) as AMOUNT
from dbo.RECURRINGGIFTINSTALLMENT
where RECURRINGGIFTINSTALLMENT.REVENUEID = @RECURRINGGIFTID
and RECURRINGGIFTINSTALLMENT.DATE < @ASOFDATE
for xml raw('ITEM'),type,elements,root('ITEMLIST'),BINARY BASE64
)
insert into @INSTALLMENTS (
ID,
TRANSACTIONPASTDUEAMOUNT,
BASEPASTDUEAMOUNT,
ORGANIZATIONPASTDUEAMOUNT
)
select
ITEMLISTCONVERTED.ITEM.value('(ITEM/ID)[1]','uniqueidentifier') as ID,
ITEMLISTCONVERTED.ITEM.value('(ITEM/AMOUNT)[1]','money') as TRANSACTIONBALANCE,
ITEMLISTCONVERTED.BASEAMOUNT BASEBALANCE,
ITEMLISTCONVERTED.ORGANIZATIONAMOUNT ORGANIZATIONBALANCE
from dbo.UFN_CURRENCY_GETCURRENCYVALUESBYPROPORTIONINXML(
@ITEMLIST,
@TRANSACTIONCURRENCYID,
@BASECURRENCYID,
@ORGANIZATIONCURRENCYID,
@TRANSACTIONFULLAMOUNT,
@BASEFULLAMOUNT,
@DECIMALDIGITSBASECURRENCY,
@ORGANIZATIONFULLAMOUNT,
@DECIMALDIGITSORGANIZATIONCURRENCY
) ITEMLISTCONVERTED;
return
end