USP_DATALIST_DONORCHALLENGEENCUMBEREDFUNDS
A datalist of all encumbered funds for a given donor challenge.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@DATERANGECODE | smallint | IN | Date range |
@STATUSTYPECODE | tinyint | IN | Status |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_DONORCHALLENGEENCUMBEREDFUNDS
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@DATERANGECODE smallint = 6,
@STATUSTYPECODE tinyint = 0
)
as
set nocount on;
declare @STARTDATE datetime;
declare @ENDDATE datetime;
exec dbo.USP_RESOLVEDATEFILTER @DATERANGECODE, @STARTDATE output, @ENDDATE output
declare @BASECURRENCYID uniqueidentifier;
declare @BASECURRENCYDECIMALDIGITS tinyint;
declare @BASECURRENCYROUNDINGTYPECODE tinyint;
declare @MINGIFTAMOUNT money;
declare @MATCHINGFACTOR money;
declare @PLEDGEEND datetime;
declare @MAXMATCHPERGIFT money;
declare @MATCHTYPECODE tinyint;
select
@MINGIFTAMOUNT = DONORCHALLENGE.MINGIFTAMOUNT,
@MATCHTYPECODE = DONORCHALLENGE.MATCHTYPECODE,
@MATCHINGFACTOR =
case
when DONORCHALLENGE.TYPECODE = 1 then
1
else
DONORCHALLENGE.MATCHINGFACTOR
end,
@PLEDGEEND =
dateadd
(
month,
DONORCHALLENGE.PAYPLEDGESWITHIN *
case
when DONORCHALLENGE.PAYPLEDGESWITHINUNITCODE = 0 then
12
else
1
end,
DONORCHALLENGE.ENDDATE
),
@MAXMATCHPERGIFT = DONORCHALLENGE.MAXMATCHPERGIFT,
@BASECURRENCYID = DONORCHALLENGE.BASECURRENCYID
from
dbo.DONORCHALLENGE
where
ID = @ID;
select
@BASECURRENCYDECIMALDIGITS = DECIMALDIGITS,
@BASECURRENCYROUNDINGTYPECODE = ROUNDINGTYPECODE
from
dbo.CURRENCY
where
ID = @BASECURRENCYID;
select
null as PARENTID,
DCE.ID,
FTLI.ID as REVENUESPLITID,
FT.ID as REVENUEID,
cast(FT.[DATE] as datetime) as [DATE],
NF.NAME,
CONSTITUENT.LOOKUPID,
case
when @BASECURRENCYID = FT.TRANSACTIONCURRENCYID then
FTLI.TRANSACTIONAMOUNT
else
dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(FTLI.ID, @BASECURRENCYID)
end as AMOUNT,
case
when RSE.DESIGNATIONID is null then
MEMBERSHIPLEVEL.NAME
else
dbo.UFN_DESIGNATION_BUILDNAME(RSE.DESIGNATIONID)
end as DESIGNATIONNAME,
--Bug#254084 - Only a payment(TRANSACTIONTYPECODE = 0) can to applied to some application
--so set application to null for all other transaction types
case
when FT.TYPECODE = 0 then
RSE.[APPLICATION]
else
null
end as [APPLICATION],
case
when FT.TYPECODE = 1 then
dbo.UFN_DONORCHALLENGEENCUMBERED_PLEDGEENCUMBEREDAMOUNT(DCE.ID)
else
DCE.AMOUNT
end as ENCUMBEREDAMOUNT,
DCE.STATUSTYPECODE,
dbo.UFN_DESIGNATION_BUILDNAME(DCE.DESIGNATIONID),
dbo.UFN_REVENUERECOGNITIONTYPECODE_GETDESCRIPTION(DCE.REVENUERECOGNITIONTYPECODEID) as REVENUERECOGNITIONTYPE,
cast(DCE.ID as nvarchar(36)) + cast(DCE.ID as nvarchar(36)) as PAYMENTAPPROVECONTEXT,
FT.TYPECODE,
@BASECURRENCYID as BASECURRENCYID
from
dbo.DONORCHALLENGEENCUMBERED as DCE
left join
dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on FTLI.ID = DCE.REVENUESPLITID
left join
dbo.REVENUESPLIT_EXT as RSE on RSE.ID = FTLI.ID
left join
dbo.FINANCIALTRANSACTION as FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
left join
dbo.MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.REVENUESPLITID = FTLI.ID
left join
dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID
inner join
dbo.CONSTITUENT on CONSTITUENT.ID = coalesce(FT.CONSTITUENTID, DCE.CONSTITUENTID)
outer apply
dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) as NF
where
DCE.DONORCHALLENGEID = @ID and
FTLI.DELETEDON is null and
(FT.[DATE] is null or FT.[DATE] between @STARTDATE and @ENDDATE) and
DCE.STATUSTYPECODE = @STATUSTYPECODE
union all
select distinct
FTLI.ID as PARENTID,
DCE.ID,
PAYMENTSPLIT.ID as REVENUESPLITID,
PAYMENT.ID as REVENUEID,
cast(PAYMENT.[DATE] as datetime) as [DATE],
NF.NAME,
PAYMENTCONSTITUENT.LOOKUPID,
case
when @BASECURRENCYID = PAYMENT.TRANSACTIONCURRENCYID then
PAYMENTSPLIT.TRANSACTIONAMOUNT
else
dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID, @BASECURRENCYID)
end as AMOUNT,
dbo.UFN_DESIGNATION_BUILDNAME(PAYMENTSPLIT_RSE.DESIGNATIONID) DESIGNATIONNAME,
PAYMENTSPLIT_RSE.[APPLICATION],
case
when dbo.UFN_CURRENCY_ROUND
(
case
when @MATCHTYPECODE = 1 then
case
when PAYMENT.TRANSACTIONAMOUNT = 0 then
0
else
PAYMENT_RE.RECEIPTAMOUNT / PAYMENT.TRANSACTIONAMOUNT *
case
when @BASECURRENCYID = PAYMENT.TRANSACTIONCURRENCYID then
PAYMENTSPLIT.TRANSACTIONAMOUNT
else
dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID, @BASECURRENCYID)
end
end
else
case
when @BASECURRENCYID = PAYMENT.TRANSACTIONCURRENCYID then
PAYMENTSPLIT.TRANSACTIONAMOUNT
else
dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID, @BASECURRENCYID)
end
end * @MATCHINGFACTOR,
@BASECURRENCYDECIMALDIGITS,
@BASECURRENCYROUNDINGTYPECODE
) > DCE.AMOUNT then
DCE.AMOUNT
else
dbo.UFN_CURRENCY_ROUND
(
case
when @MATCHTYPECODE = 1 then
case
when PAYMENT.TRANSACTIONAMOUNT = 0 then
0
else
PAYMENT_RE.RECEIPTAMOUNT / PAYMENT.TRANSACTIONAMOUNT *
case
when @BASECURRENCYID = PAYMENT.TRANSACTIONCURRENCYID then
PAYMENTSPLIT.TRANSACTIONAMOUNT
else
dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID, @BASECURRENCYID)
end
end
else
case
when @BASECURRENCYID = PAYMENT.TRANSACTIONCURRENCYID then
PAYMENTSPLIT.TRANSACTIONAMOUNT
else
dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID, @BASECURRENCYID)
end
end * @MATCHINGFACTOR,
@BASECURRENCYDECIMALDIGITS,
@BASECURRENCYROUNDINGTYPECODE
)
end as ENCUMBEREDAMOUNT,
DCE.STATUSTYPECODE,
dbo.UFN_DESIGNATION_BUILDNAME(DCE.DESIGNATIONID),
dbo.UFN_REVENUERECOGNITIONTYPECODE_GETDESCRIPTION(DCE.REVENUERECOGNITIONTYPECODEID) as REVENUERECOGNITIONTYPE,
cast(DCE.DONORCHALLENGEID as nvarchar(36)) + cast(PAYMENTSPLIT.ID as nvarchar(36)) as PAYMENTAPPROVECONTEXT,
FT.TYPECODE,
@BASECURRENCYID
from
dbo.DONORCHALLENGEENCUMBERED as DCE
inner join
dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on FTLI.ID = DCE.REVENUESPLITID
inner join
dbo.REVENUESPLIT_EXT as RSE on RSE.ID = FTLI.ID
inner join
dbo.FINANCIALTRANSACTION as FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join
dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.PLEDGEID = FT.ID and INSTALLMENTSPLIT.DESIGNATIONID = RSE.DESIGNATIONID
inner join
dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
inner join
dbo.FINANCIALTRANSACTIONLINEITEM as PAYMENTSPLIT on PAYMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.PAYMENTID
inner join
dbo.REVENUESPLIT_EXT as PAYMENTSPLIT_RSE on PAYMENTSPLIT_RSE.ID = PAYMENTSPLIT.ID
inner join
dbo.FINANCIALTRANSACTION as PAYMENT on PAYMENT.ID = PAYMENTSPLIT.FINANCIALTRANSACTIONID
inner join
dbo.REVENUE_EXT as PAYMENT_RE on PAYMENT_RE.ID = PAYMENT.ID
inner join
dbo.CONSTITUENT as PAYMENTCONSTITUENT on PAYMENTCONSTITUENT.ID = PAYMENT.CONSTITUENTID
outer apply
dbo.UFN_CONSTITUENT_DISPLAYNAME(PAYMENTCONSTITUENT.ID) as NF
left join
dbo.DONORCHALLENGEENCUMBERED on DONORCHALLENGEENCUMBERED.REVENUESPLITID = PAYMENTSPLIT.ID and DONORCHALLENGEENCUMBERED.DONORCHALLENGEID = @ID
where
DCE.DONORCHALLENGEID = @ID and
--we only need to add payments for encumbered
DCE.STATUSTYPECODE = 0 and
PAYMENT.[DATE] <= @PLEDGEEND and
PAYMENT.[DATE] between @STARTDATE and @ENDDATE and
DONORCHALLENGEENCUMBERED.ID is null and
FTLI.DELETEDON is null and
PAYMENTSPLIT.DELETEDON is null
order by
[DATE],
AMOUNT