USP_DATALIST_PAYMENTAPPLICATIONSIGNOREPAYMENT
A list of the applications to commitments for a particular payment and info about the commitments that disregard the effects of that payment.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PAYMENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_PAYMENTAPPLICATIONSIGNOREPAYMENT(
@PAYMENTID uniqueidentifier = null
)
as
begin
set nocount on
declare @APPLICATION as table(
ID uniqueidentifier,
APPLICATIONCODE tinyint,
TRANSACTIONCURRENCYID uniqueidentifier
)
insert into @APPLICATION
select distinct
APPLICATIONID,
APPLICATIONCODE,
TRANSACTIONCURRENCYID
from dbo.UFN_REVENUE_GETAPPLICATIONS(@PAYMENTID)
declare @ADJUSTEDAPPLICATION as table(
ID uniqueidentifier,
APPLICATIONCODE tinyint,
NEXTINSTALLMENTDATE datetime,
NEXTINSTALLMENTDUE money,
BALANCE money,
PASTDUEAMOUNT money,
TOTALPAID money,
TRANSACTIONCURRENCYID uniqueidentifier,
RGACTIONABOVEAMOUNT money,
RGACTIONBELOWAMOUNTS xml
);
--Event (1)
insert into @ADJUSTEDAPPLICATION(
ID, APPLICATIONCODE, BALANCE, TRANSACTIONCURRENCYID
)
select
APPLICATION.ID,
APPLICATION.APPLICATIONCODE,
dbo.UFN_EVENTREGISTRANT_GETBALANCEIGNOREPAYMENT(REGISTRANT.ID, @PAYMENTID),
EVENT.BASECURRENCYID
from @APPLICATION APPLICATION
inner join dbo.REGISTRANT on REGISTRANT.ID = APPLICATION.ID
inner join dbo.EVENT on REGISTRANT.EVENTID = EVENT.ID
where APPLICATION.APPLICATIONCODE = 1
--Pledge (2), Grant Award (8)
insert into @ADJUSTEDAPPLICATION(
ID, APPLICATIONCODE, NEXTINSTALLMENTDATE, NEXTINSTALLMENTDUE, BALANCE, TRANSACTIONCURRENCYID
)
select
APPLICATION.ID,
APPLICATION.APPLICATIONCODE,
INSTALLMENT.DATE,
dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCEIGNOREPAYMENT(INSTALLMENT.ID, @PAYMENTID),
dbo.UFN_PLEDGE_GETBALANCEIGNOREPAYMENT(APPLICATION.ID, @PAYMENTID),
APPLICATION.TRANSACTIONCURRENCYID
from @APPLICATION APPLICATION
left join dbo.INSTALLMENT on INSTALLMENT.REVENUEID = APPLICATION.ID
where APPLICATION.APPLICATIONCODE in (2, 8)
and INSTALLMENT.ID = dbo.UFN_REVENUE_GETNEXTINSTALLMENTIGNOREPAYMENT(APPLICATION.ID, @PAYMENTID);
--Recurring Gift (3)
with BASE as (
select
APPLICATION.ID,
APPLICATION.APPLICATIONCODE,
RECURRINGGIFTINSTALLMENT.DATE,
dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCEIGNOREPAYMENT(RECURRINGGIFTINSTALLMENT.ID, @PAYMENTID) NEXTINSTALLMENTDUE,
dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNTIGNOREPAYMENT_2(APPLICATION.ID, @PAYMENTID, null, 1) PASTDUEAMOUNT,
dbo.UFN_RECURRINGGIFT_GETTOTALPAIDIGNOREPAYMENT(APPLICATION.ID, @PAYMENTID) TOTALPAID,
APPLICATION.TRANSACTIONCURRENCYID
from @APPLICATION APPLICATION
inner join dbo.RECURRINGGIFTINSTALLMENT on RECURRINGGIFTINSTALLMENT.REVENUEID = APPLICATION.ID
where APPLICATION.APPLICATIONCODE = 3
and RECURRINGGIFTINSTALLMENT.ID = dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTIGNOREPAYMENT(APPLICATION.ID, @PAYMENTID, null)
)
insert into @ADJUSTEDAPPLICATION(
ID, APPLICATIONCODE, NEXTINSTALLMENTDATE, NEXTINSTALLMENTDUE, PASTDUEAMOUNT, TOTALPAID, TRANSACTIONCURRENCYID, RGACTIONABOVEAMOUNT, RGACTIONBELOWAMOUNTS
)
select
B.ID,
B.APPLICATIONCODE,
B.DATE,
B.NEXTINSTALLMENTDUE,
case when B.PASTDUEAMOUNT = B.NEXTINSTALLMENTDUE or -- don't show if the same as the next installment amount
(U.APPLYTOPASTINSTALLMENTS = 0 and
(U.PASTBALANCEUNDERPAYMENTCODE = 0 or -- don't show if applying that amount wouldn't result in paying off the past balance
U.OVERPAYMENTCODE = 2)) -- or that amount would not all be applied to the RG
then 0 else B.PASTDUEAMOUNT end,
B.TOTALPAID,
B.TRANSACTIONCURRENCYID,
U.ACTIONABOVEAMOUNT,
U.ACTIONBELOWAMOUNTS
from BASE B
cross apply dbo.UFN_RECURRINGGIFT_GETPAYMENTUIFIELDS(B.ID,B.NEXTINSTALLMENTDUE,B.PASTDUEAMOUNT,B.DATE,getdate(),@PAYMENTID) U;
--Planned gift (6), Matching gift claim (7), Donor challenge (13)
insert into @ADJUSTEDAPPLICATION(
ID, APPLICATIONCODE, BALANCE, TOTALPAID, TRANSACTIONCURRENCYID
)
select
APPLICATION.ID,
APPLICATION.APPLICATIONCODE,
dbo.UFN_PLEDGE_GETBALANCEIGNOREPAYMENT(APPLICATION.ID, @PAYMENTID),
dbo.UFN_PLEDGE_GETAMOUNTPAIDIGNOREPAYMENT(APPLICATION.ID, @PAYMENTID),
APPLICATION.TRANSACTIONCURRENCYID
from @APPLICATION APPLICATION
where APPLICATION.APPLICATIONCODE in (6, 7, 13)
select
ID,
APPLICATIONCODE,
NEXTINSTALLMENTDATE,
coalesce(NEXTINSTALLMENTDUE,0),
coalesce(BALANCE,0),
coalesce(PASTDUEAMOUNT,0),
coalesce(TOTALPAID,0),
TRANSACTIONCURRENCYID,
RGACTIONABOVEAMOUNT,
RGACTIONBELOWAMOUNTS
from @ADJUSTEDAPPLICATION
order by APPLICATIONCODE;
end