USP_DATALIST_COMMITMENTINFO
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@COMMITMENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_COMMITMENTINFO
(
@COMMITMENTID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null
)
as
set nocount on;
begin
/*
* this datalist is based on UFN_CONSTITUENTUNREALIZEDREVENUE
* it's intent is to return the same shape data as UFN_CONSTITUENTUNREALIZEDREVENUE
* but based on the COMMITMENTID instead of other parameters
*/
declare @APPUSERISSYSADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
/*
* The site security check was removed from the initial select because it
* considerably slowed down the query for databases with large numbers of
* revenue records. Given that only a small number of records should be
* returned for a given constituent/household's unrealized revenue, it was
* quicker to insert all the records into a table variable, then remove any
* ones the user did not have site access to.
*/
declare @REVENUECOMMITMENTS 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),
APPLICATIONCURRENCYID uniqueidentifier,
PDACCOUNTSYSTEMID uniqueidentifier,
SPONSORSHIPRGADDITIONALGIFT bit,
MEMBERSHIPPROGRAMNAME nvarchar(255),
MEMBERSHIPLEVELNAME nvarchar(255)
);
insert into @REVENUECOMMITMENTS
select
REVENUE.ID,
CONSTITUENT.ID,
case
when MGREVENUE.ID is not null
then
case REVENUE.TYPECODE
when 3
then CONSTITUENT.NAME + ' - ' + NF.NAME + ' (' + MGCONSTIT.LOOKUPID + ')'
else CONSTITUENT.NAME + ' - ' + MGCONSTIT.NAME
end
else CONSTITUENT.NAME
end as CONSTITUENTNAME,
0,
V_QUERY_REVENUE_PLEDGEBALANCE.BALANCE,
INSTALLMENTBALANCE.BALANCE,
NEXTINSTALLMENT.INSTALLMENTDATE,
case REVENUE.TYPECODE
when 6 then 9
when 8 then 10
else REVENUE.TYPECODE
end, -- handle grant awards differently to avoid type collision with event registrations
'',
1 SORTORDER,
null as DESIGNATIONLIST,
null as SPONSORSHIPOPPORTUNITY,
REVENUE.TRANSACTIONCURRENCYID,
REVENUE.PDACCOUNTSYSTEMID,
0,
null as MEMBERSHIPPROGRAMNAME,
null as MEMBERSHIPLEVELNAME
from dbo.FINANCIALTRANSACTION as REVENUE
inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
inner join dbo.UFN_REVENUE_GETNEXTINSTALLMENT_BULK() as NEXTINSTALLMENT on NEXTINSTALLMENT.REVENUEID = REVENUE.ID
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
left join dbo.REVENUEMATCHINGGIFT on REVENUE.ID = REVENUEMATCHINGGIFT.ID
left join dbo.FINANCIALTRANSACTION MGREVENUE on MGREVENUE.ID = REVENUEMATCHINGGIFT.MGSOURCEREVENUEID
left join dbo.CONSTITUENT MGCONSTIT on MGCONSTIT.ID = MGREVENUE.CONSTITUENTID
left join V_QUERY_REVENUE_PLEDGEBALANCE on V_QUERY_REVENUE_PLEDGEBALANCE.ID = REVENUE.ID
left join dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE_BULK() as INSTALLMENTBALANCE on INSTALLMENTBALANCE.ID = NEXTINSTALLMENT.INSTALLMENTID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(MGCONSTIT.ID) NF
where
REVENUE.ID=@COMMITMENTID
and
case
when V_QUERY_REVENUE_PLEDGEBALANCE.BALANCE > 0
then 1
else 0
end = 1
--and REVENUESCHEDULE.ISPENDING = 0 --Isn't Pending
and( REVENUEMATCHINGGIFT.ISACTIVE = 1
or REVENUE.TYPECODE <> 3
)
and REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9)
and REVENUE.DELETEDON is null
and NEXTINSTALLMENT.INSTALLMENTID is not null
union all
select
REVENUE.ID,
CONSTITUENT.ID,
CONSTITUENT.NAME,
0,
REVENUE.TRANSACTIONAMOUNT, -- TRANSACTIONAMOUNT
NEXTINSTALLMENT.BALANCE,
NEXTINSTALLMENT.DATE,
REVENUE.TYPECODE,
'',
1,
null,
coalesce(SPONSORSHIPINFO.SPONSORSHIPOPPORTUNITY,null) as SPONSORSHIPOPPORTUNITY,
REVENUE.TRANSACTIONCURRENCYID,
null as PDACCOUNTSYSTEMID,
case
when exists(
select 1
from dbo.REVENUESPLIT
where REVENUEID = REVENUE.ID and TYPECODE = 17
)
then 1
else 0
end,
coalesce(MEMBERSHIPINFO.PROGRAMNAME,null) as MEMBERSHIPPROGRAMNAME,
coalesce(MEMBERSHIPINFO.LEVELNAME, null) as MEMBERSHIPLEVELNAME
from dbo.FINANCIALTRANSACTION as REVENUE
--inner join @CONSTITUENTCTE as CONSTITUENTCTE on CONSTITUENTCTE.ID = REVENUE.CONSTITUENTID
inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
left outer join(
select
SP.REVENUEID,
coalesce(
(
select NAME
from SPONSORSHIPOPPORTUNITYCHILD
where ID=S.SPONSORSHIPOPPORTUNITYID
),
(
select NAME
from SPONSORSHIPOPPORTUNITYPROJECT
where ID = S.SPONSORSHIPOPPORTUNITYID
)
) SPONSORSHIPOPPORTUNITY
from dbo.REVENUESPLIT SP
inner join SPONSORSHIP S on S.REVENUESPLITID = SP.ID
inner join SPONSORSHIPOPPORTUNITY SO on SO.ID = S.SPONSORSHIPOPPORTUNITYID
where S.ISMOSTRECENTFORCOMMITMENT = 1
) SPONSORSHIPINFO on SPONSORSHIPINFO.REVENUEID = REVENUE.ID
left outer join(
select
MS.REVENUEID,
MP.NAME as [PROGRAMNAME],
ML.NAME as [LEVELNAME]
from
dbo.REVENUESPLIT MS
inner join MEMBERSHIPTRANSACTION MT on MT.REVENUESPLITID = MS.ID
inner join MEMBERSHIP M on M.ID = MT.MEMBERSHIPID
inner join MEMBERSHIPPROGRAM MP on MP.ID = M.MEMBERSHIPPROGRAMID
inner join MEMBERSHIPLEVEL ML on ML.ID = M.MEMBERSHIPLEVELID
) MEMBERSHIPINFO on MEMBERSHIPINFO.REVENUEID = REVENUE.ID
outer apply dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTINFO(REVENUE.ID,null) NEXTINSTALLMENT
where
REVENUE.ID=@COMMITMENTID
and REVENUE.TYPECODE = 2 --Recurring Gift
and REVENUESCHEDULE.STATUSCODE in (0,5) --Active & Lapsed
--and REVENUESCHEDULE.ISPENDING = 0 --Isn't pending
and REVENUE.TRANSACTIONAMOUNT > 0 --Has Value???
and REVENUE.DELETEDON is null
if @APPUSERISSYSADMIN = 0
begin
-- Remove records that the user does not have site access to.
delete from @REVENUECOMMITMENTS
where not exists (
select 1
from dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUEID) as SITE
where exists (
select 1
from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE)
where SITEID=[SITE].[SITEID]
or (SITEID is null
and [SITE].[SITEID] is null
)
)
);
end
-- Set DESIGNATIONLIST separately from the insert to get a better query plan.
update REVENUECOMMITMENTS
set
DESIGNATIONLIST = (
select
left(dbo.UDA_BUILDLIST(DESIGNATION.USERID), 500) as DESIGNATIONLIST
from dbo.REVENUESPLIT
inner join dbo.DESIGNATION on DESIGNATION.ID = REVENUESPLIT.DESIGNATIONID
where REVENUESPLIT.REVENUEID = REVENUECOMMITMENTS.REVENUEID
)
from @REVENUECOMMITMENTS as REVENUECOMMITMENTS;
select
REVENUEID,
CONSTITUENTID,
CONSTITUENTNAME,
APPLIED,
BALANCE,
AMOUNTDUE,
DATEDUE,
REVENUETYPECODE,
DESCRIPTION,
SORTORDER,
DESIGNATIONLIST,
SPONSORSHIPOPPORTUNITY,
APPLICATIONCURRENCYID,
PDACCOUNTSYSTEMID,
SPONSORSHIPRGADDITIONALGIFT,
MEMBERSHIPPROGRAMNAME,
MEMBERSHIPLEVELNAME
from @REVENUECOMMITMENTS
union all
select
REGISTRANT.ID,
CONSTITUENT.ID,
CONSTITUENT.NAME,
0,
REGISTRANTBALANCE.BALANCE,
REGISTRANTBALANCE.BALANCE,
[EVENT].STARTDATE, --JamesWill CR260844-113006 2007/03/15 Use the event start date as the due date
6, --Event Registration
[EVENT].NAME,
1,
'' as DESIGNATIONLIST,
null as SPONSORSHIPOPPORTUNITY,
EVENT.BASECURRENCYID,
null as PDACCOUNTSYSTEMID,
0,
null as MEMBERSHIPPROGRAMNAME,
null as MEMBERSHIPLEVELNAME
from dbo.REGISTRANT
--inner join @CONSTITUENTCTE as CONSTITUENTCTE on CONSTITUENTCTE.ID = REGISTRANT.CONSTITUENTID
inner join dbo.CONSTITUENT on CONSTITUENT.ID = REGISTRANT.CONSTITUENTID
inner join dbo.[EVENT] on [EVENT].ID = REGISTRANT.EVENTID
left join V_QUERY_EVENTREGISTRANT_BALANCE REGISTRANTBALANCE on REGISTRANTBALANCE.REGISTRANTID = REGISTRANT.ID
where
REGISTRANT.ID=@COMMITMENTID
and REGISTRANTBALANCE.BALANCE > 0
and (--Check site security
@APPUSERISSYSADMIN = 1
or exists (
select 1
from dbo.UFN_SITEID_MAPFROM_EVENTID([EVENT].ID) as SITE
where exists (
select 1
from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE)
where SITEID=[SITE].[SITEID]
or (SITEID is null
and [SITE].[SITEID] is null
)
)
)
)
--union all
--select --only pull primary members, due for renewal
-- MEMBERSHIP.ID,
-- CONSTITUENT.ID,
-- CONSTITUENT.NAME,
-- 0,
-- MEMBERSHIPLEVELTERM.AMOUNT,
-- MEMBERSHIPLEVELTERM.AMOUNT,
-- MEMBERSHIP.EXPIRATIONDATE,
-- 5, --Membership
-- dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - ' + dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID),
-- 1,
-- '' as DESIGNATIONLIST,
-- null as SPONSORSHIPOPPORTUNITY,
-- MEMBERSHIPLEVELTERM.BASECURRENCYID,
-- null as PDACCOUNTSYSTEMID,
-- 0
--from dbo.MEMBERSHIP
-- inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
-- inner join dbo.MEMBER on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
--inner join @CONSTITUENTCTE C on C.ID = MEMBER.CONSTITUENTID
-- inner join dbo.CONSTITUENT on MEMBER.CONSTITUENTID = CONSTITUENT.ID
-- inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
--where
-- MEMBERSHIP.ID=@COMMITMENTID
-- and MEMBER.ISPRIMARY = 1
-- and MEMBER.ISDROPPED = 0
-- and (MEMBERSHIP.ISGIFT = 0
-- or MEMBERSHIP.SENDRENEWALCODE <> 0
-- )
--and @LOADALL = 0
-- and (
-- @APPUSERISSYSADMIN = 1
-- or exists (
-- select 1
-- from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE)
-- where SITEID = dbo.UFN_SITEID_MAPFROM_MEMBERSHIPID(MEMBERSHIP.ID)
-- or (SITEID is null
-- and dbo.UFN_SITEID_MAPFROM_MEMBERSHIPID(MEMBERSHIP.ID) is null
-- )
-- )
-- )
--union all
--select
-- MEMBERSHIP.ID,
-- CONSTITUENT.ID,
-- CONSTITUENT.NAME,
-- 0,
-- MEMBERSHIPLEVELTERM.AMOUNT,
-- MEMBERSHIPLEVELTERM.AMOUNT,
-- MEMBERSHIP.EXPIRATIONDATE,
-- 5, --Membership
-- dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - ' + dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID),
-- 1,
-- '' as DESIGNATIONLIST,
-- null as SPONSORSHIPOPPORTUNITY,
-- MEMBERSHIPLEVELTERM.BASECURRENCYID,
-- null as PDACCOUNTSYSTEMID,
-- 0
--from dbo.MEMBERSHIP
-- inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
-- inner join dbo.MEMBER on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
--inner join @CONSTITUENTCTE C on C.ID = MEMBERSHIP.GIVENBYID
-- inner join dbo.CONSTITUENT on MEMBERSHIP.GIVENBYID = CONSTITUENT.ID
-- inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
--where
-- MEMBERSHIP.ID=@COMMITMENTID
-- and MEMBERSHIP.SENDRENEWALCODE <> 1
--and @LOADALL = 0
-- and (
-- @APPUSERISSYSADMIN = 1
-- or exists (
-- select 1
-- from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE)
-- where SITEID = dbo.UFN_SITEID_MAPFROM_MEMBERSHIPID(MEMBERSHIP.ID)
-- or (SITEID is null
-- and dbo.UFN_SITEID_MAPFROM_MEMBERSHIPID(MEMBERSHIP.ID) is null
-- )
-- )
-- )
--union all
--select --only pull primary members, due for renewal
-- MEMBERSHIP.ID,
-- CONSTITUENT.ID,
-- CONSTITUENT.NAME,
-- 0,
-- MEMBERSHIPLEVELTERM.AMOUNT,
-- MEMBERSHIPLEVELTERM.AMOUNT,
-- MEMBERSHIP.EXPIRATIONDATE,
-- 5, --Membership
-- dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID) + ' - ' + dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID),
-- 1,
-- '' as DESIGNATIONLIST,
-- null as SPONSORSHIPOPPORTUNITY,
-- MEMBERSHIPLEVELTERM.BASECURRENCYID,
-- null as PDACCOUNTSYSTEMID,
-- 0
--from dbo.MEMBERSHIP
-- inner join dbo.MEMBER on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
--inner join @CONSTITUENTCTE C on C.ID = MEMBER.CONSTITUENTID
-- inner join dbo.CONSTITUENT on MEMBER.CONSTITUENTID = CONSTITUENT.ID
-- inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
--where
-- MEMBERSHIP.ID=@COMMITMENTID
-- and MEMBER.ISDROPPED = 0
--and @LOADALL <> 0
-- and (
-- @APPUSERISSYSADMIN = 1
-- or exists (
-- select 1
-- from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE)
-- where SITEID = dbo.UFN_SITEID_MAPFROM_MEMBERSHIPID(MEMBERSHIP.ID)
-- or (SITEID is null
-- and dbo.UFN_SITEID_MAPFROM_MEMBERSHIPID(MEMBERSHIP.ID) is null
-- )
-- )
-- )
union all
-- THIS SECTION MAY NOT BE USED, PLEASE CONSIDER FOR REMOVAL - DavidHe
select
OPPORTUNITY.ID,
CONSTITUENT.ID,
CONSTITUENT.NAME,
0,
OPPORTUNITY.AMOUNT - dbo.UFN_OPPORTUNITY_GETAMOUNTPAID(OPPORTUNITY.ID),
null, -- amount due
null, -- date due
100, -- arbitrary application type code for opportunities, resolved in USP_REVENUE_APPLYTOREVENUESTREAMS
dbo.UFN_OPPORTUNITY_GETDESCRIPTION(OPPORTUNITY.ID),
1,
(
select top 1 left(dbo.UDA_BUILDLIST(DESIGNATION.USERID), 500) as DESIGNATIONLIST
from dbo.DESIGNATION
inner join dbo.OPPORTUNITYDESIGNATION on DESIGNATION.ID = OPPORTUNITYDESIGNATION.DESIGNATIONID
where OPPORTUNITYDESIGNATION.OPPORTUNITYID = OPPORTUNITY.ID
) as DESIGNATIONLIST,
null as SPONSORSHIPOPPORTUNITY,
null as APPLCATIONCURRENCYID ,
null as PDACCOUNTSYSTEMID,
0,
null as MEMBERSHIPPROGRAMNAME,
null as MEMBERSHIPLEVELNAME
from dbo.OPPORTUNITY
inner join dbo.PROSPECTPLAN on PROSPECTPLAN.ID = OPPORTUNITY.PROSPECTPLANID
--inner join @CONSTITUENTCTE as CONSTITUENTCTE on CONSTITUENTCTE.ID = PROSPECTPLAN.PROSPECTID
-- CR298118-041508 Only include opportunities which have designations associated with them so that
-- when we go to fill in a payment for them we have something to apply them to.
-- DavidHe (removed inner join and made a where exists clause to prevent multiple rows from pulling where only one should).
left outer join dbo.CONSTITUENT on CONSTITUENT.ID = PROSPECTPLAN.PROSPECTID
where
OPPORTUNITY.ID=@COMMITMENTID
and exists (
select ID
from dbo.OPPORTUNITYDESIGNATION
where OPPORTUNITYDESIGNATION.OPPORTUNITYID = OPPORTUNITY.ID);
end