USP_DATALIST_REVENUEUPDATEBATCHCONSTITUENTUNREALIZEDREVENUE
Displays the list of currently applied payments and a list of unrealized revenue items for a constituent.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@CONSTITUENTID | uniqueidentifier | IN | |
@LOADALL | bit | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@SECURITYFEATUREID | uniqueidentifier | IN | Input parameter indicating the ID of the feature to use for site security checking. |
@SECURITYFEATURETYPE | tinyint | IN | Input parameter indicating the type of the feature to use for site security checking. |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_REVENUEUPDATEBATCHCONSTITUENTUNREALIZEDREVENUE
(
@REVENUEID uniqueidentifier,
@CONSTITUENTID uniqueidentifier,
@LOADALL bit = 0,
@CURRENTAPPUSERID uniqueidentifier = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null
)
as
set nocount on;
declare @PAYMENTAPPLIEDTABLE table
(
REVENUEID uniqueidentifier,
CONSTITUENTID uniqueidentifier,
CONSTITUENTNAME nvarchar(255),
APPLIED money,
BALANCE money,
AMOUNTDUE money,
DATEDUE datetime,
REVENUETYPECODE tinyint,
DESCRIPTION nvarchar(255),
SORTORDER int,
DESIGNATIONLIST nvarchar(500),
SPONSORSHIPOPPORTUNITY nvarchar(255),
REVENUESPLITID uniqueidentifier
);
insert into @PAYMENTAPPLIEDTABLE
-- Payments towards: Pledge (2), Planned Gift (6), Matching Gift (7), Grant Award (8), Donor Challenge (13)
select
INSTALLMENTSPLITPAYMENT.PLEDGEID as ID,
CONSTITUENT.ID as CONSTITUENTID,
(
select case PLEDGEREVENUE.TRANSACTIONTYPECODE
when 3 then
CONSTITUENT.NAME + ' - ' +
(
select
C1.NAME
from
dbo.REVENUEMATCHINGGIFT MG1
inner join dbo.REVENUE R1 on R1.ID = MG1.MGSOURCEREVENUEID
inner join dbo.CONSTITUENT C1 on C1.ID = R1.CONSTITUENTID
where
MG1.ID = PLEDGEREVENUE.ID
)
else
CONSTITUENT.NAME
end
) as CONSTITUENTNAME,
sum(INSTALLMENTSPLITPAYMENT.AMOUNT) as [APPLIED],
dbo.UFN_PLEDGE_GETBALANCE(INSTALLMENTSPLITPAYMENT.PLEDGEID) as [BALANCE],
case when REVENUESPLIT.APPLICATIONCODE in (6, 7, 13) then
dbo.UFN_PLEDGE_GETBALANCE(INSTALLMENTSPLITPAYMENT.PLEDGEID)
else
0.00
end as AMOUNTDUE,
min(INSTALLMENT.DATE) as [DATEDUE],
case PLEDGEREVENUE.TRANSACTIONTYPECODE when 6 then 9 when 8 then 10 else PLEDGEREVENUE.TRANSACTIONTYPECODE end as REVENUETYPECODE,
'' as DESCRIPTION,
1 as SORTORDER,
--dbo.UFN_DESIGNATION_GETNAME(REVENUESPLIT.DESIGNATIONID) as DESIGNATIONLIST,
(select VANITYNAME from dbo.DESIGNATION where ID = REVENUESPLIT.DESIGNATIONID) as DESIGNATIONLIST,
NULL as SPONSORSHIPOPPORTUNITY,
REVENUESPLIT.ID as REVENUESPLITID
from dbo.REVENUE
inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
inner join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLITPAYMENT.PAYMENTID = REVENUESPLIT.ID
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
left join dbo.INSTALLMENT on INSTALLMENT.ID = INSTALLMENTSPLIT.INSTALLMENTID
left join dbo.REVENUE as [PLEDGEREVENUE] on [PLEDGEREVENUE].ID = INSTALLMENTSPLITPAYMENT.PLEDGEID
left join dbo.CONSTITUENT on CONSTITUENT.ID = [PLEDGEREVENUE].CONSTITUENTID
left join dbo.REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = REVENUESPLIT.ID
where REVENUE.ID = @REVENUEID and REVENUESPLIT.APPLICATIONCODE in (2, 6, 7, 8, 13)
group by
REVENUESPLIT.ID,
INSTALLMENTSPLITPAYMENT.PLEDGEID,
REVENUESPLIT.APPLICATIONCODE,
PLEDGEREVENUE.TRANSACTIONTYPECODE,
PLEDGEREVENUE.CONSTITUENTID,
CONSTITUENT.ID,
REVENUESPLIT.DESIGNATIONID,
CONSTITUENT.NAME,
PLEDGEREVENUE.ID
union all
-- recurring gift payments
select
TEMPLATE.ID as ID,
CONSTITUENT.ID as CONSTITUENTID,
CONSTITUENT.NAME,
REVENUESPLIT.AMOUNT as APPLIED,
TEMPLATESPLIT.AMOUNT as BALANCE,
0.00 as AMOUNTDUE,
RECURRINGGIFTACTIVITY.SCHEDULEDATE as DATEDUE,
TEMPLATE.TRANSACTIONTYPECODE as REVENUETYPECODE,
'' as DESCRIPTION,
1 as SORTORDER,
--dbo.UFN_DESIGNATION_GETNAME(REVENUESPLIT.DESIGNATIONID) as DESIGNATIONLIST,
(select VANITYNAME from dbo.DESIGNATION where ID = REVENUESPLIT.DESIGNATIONID) as DESIGNATIONLIST,
(select coalesce((select NAME from SPONSORSHIPOPPORTUNITYCHILD where ID=SPONSORSHIP.SPONSORSHIPOPPORTUNITYID),
(select NAME from SPONSORSHIPOPPORTUNITYPROJECT where ID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID)) opportunity
from dbo.SPONSORSHIP
inner join dbo.SPONSORSHIPOPPORTUNITY OPP on OPP.ID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID
where SPONSORSHIP.ID = dbo.UFN_SPONSORSHIP_ID_FROM_REVENUEID( TEMPLATE.ID)
and SPONSORSHIP.ISMOSTRECENTFORCOMMITMENT = 1) as SPONSORSHIPOPPORTUNITY,
REVENUESPLIT.ID as REVENUESPLITID
from dbo.REVENUE
inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
inner join dbo.RECURRINGGIFTACTIVITY on PAYMENTREVENUEID = REVENUESPLIT.ID
inner join dbo.REVENUE TEMPLATE on TEMPLATE.ID = RECURRINGGIFTACTIVITY.SOURCEREVENUEID
left outer join dbo.REVENUESPLIT TEMPLATESPLIT on TEMPLATESPLIT.ID = TEMPLATE.ID and TEMPLATESPLIT.DESIGNATIONID = REVENUESPLIT.DESIGNATIONID
left join dbo.REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = REVENUESPLIT.ID
where REVENUE.ID = @REVENUEID and REVENUESPLIT.APPLICATIONCODE = 3
union all
-- Membership
select
MEMBERSHIP.ID as ID,
CONSTITUENT.ID,
CONSTITUENT.NAME,
REVENUESPLIT.AMOUNT as [APPLIED],
0 as BALANCE,
0 as AMOUNTDUE,
MEMBERSHIP.EXPIRATIONDATE,
5 as REVENUETYPECODE, --Membership
dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - ' + dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID) as description,
1 as SORTORDER,
'' as DESIGNATIONLIST,
null as SPONSORSHIPOPPORTUNITY,
REVENUESPLIT.ID as REVENUESPLITID
from dbo.MEMBERSHIP
inner join dbo.MEMBERSHIPTRANSACTION on MEMBERSHIP.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPID
inner join dbo.REVENUESPLIT on MEMBERSHIPTRANSACTION.REVENUESPLITID = REVENUESPLIT.ID
inner join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
inner join dbo.CONSTITUENT on MEMBERSHIP.GIVENBYID = CONSTITUENT.ID
inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
where REVENUE.ID = @REVENUEID and REVENUESPLIT.APPLICATIONCODE = 5
union all
-- Event Reg Payments
select
REGISTRANT.ID as ID,
CONSTITUENT.ID as CONSTITUENTID,
CONSTITUENT.NAME as CONSTITUENTNAME,
REVENUESPLIT.AMOUNT as [APPLIED],
dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) as [BALANCE],
dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) as AMOUNTDUE,
EVENT.STARTDATE as [DATEDUE],
6 as [REVENUETYPECODE],
EVENT.NAME as [DESCRIPTION],
1 as SORTORDER,
'' as DESIGNATIONLIST,
null as SPONSORSHIPOPPORTUNITY,
REVENUESPLIT.ID as REVENUESPLITID
from dbo.REGISTRANT
inner join dbo.CONSTITUENT on CONSTITUENT.ID = REGISTRANT.CONSTITUENTID
inner join dbo.[EVENT] on [EVENT].ID = REGISTRANT.EVENTID
inner join dbo.EVENTREGISTRANTPAYMENT as [PAYMENT] on [PAYMENT].REGISTRANTID = REGISTRANT.ID
inner join dbo.REVENUESPLIT on REVENUESPLIT.ID = [PAYMENT].PAYMENTID
inner join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
where REVENUE.ID = @REVENUEID and
REVENUESPLIT.APPLICATIONCODE = 1;
insert into @PAYMENTAPPLIEDTABLE
select REVENUEID,
CONSTITUENTID,
CONSTITUENTNAME,
APPLIED,
BALANCE,
AMOUNTDUE,
DATEDUE,
REVENUETYPECODE,
DESCRIPTION,
SORTORDER,
DESIGNATIONLIST,
SPONSORSHIPOPPORTUNITY,
null as REVENUESPLITID
from dbo.UFN_CONSTITUENTUNREALIZEDREVENUE(@CONSTITUENTID, @LOADALL, @CURRENTAPPUSERID, @SECURITYFEATUREID, @SECURITYFEATURETYPE) OPENCOMMITMENTS
where not exists (select 'X' from @PAYMENTAPPLIEDTABLE APPLIED where APPLIED.REVENUEID = OPENCOMMITMENTS.REVENUEID);
select REVENUEID,
CONSTITUENTID,
CONSTITUENTNAME,
APPLIED,
BALANCE,
AMOUNTDUE,
DATEDUE,
REVENUETYPECODE,
DESCRIPTION,
SORTORDER,
DESIGNATIONLIST,
SPONSORSHIPOPPORTUNITY,
REVENUESPLITID
from @PAYMENTAPPLIEDTABLE;