USP_DATALIST_PROSPECT_PLANNEDGIFTSACCEPTED
List of a prospect's accepted planned gifts.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PROSPECTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@SITEFILTERMODE | tinyint | IN | Sites |
@SITESSELECTED | xml | IN | |
@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. |
@CURRENCYCODE | tinyint | IN | Currency |
@CAMPAIGNFILTERMODE | tinyint | IN | Campaigns |
@CAMPAIGNSSELECTED | xml | IN | |
@INCLUDERELATED | tinyint | IN | Include planned gifts from relationships |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_PROSPECT_PLANNEDGIFTSACCEPTED
(
@PROSPECTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@CURRENCYCODE tinyint = 2,
@CAMPAIGNFILTERMODE tinyint = 0,
@CAMPAIGNSSELECTED xml = null,
@INCLUDERELATED tinyint = 1
)
as begin
set nocount on;
-------------------------------------
--CAMPAIGNSSELECTED
-------------------------------------
declare @CAMPAIGNFILTERTABLE table (ID uniqueidentifier)
if @CAMPAIGNFILTERMODE != 0
begin
insert into @CAMPAIGNFILTERTABLE
select T.c.value('(ID)[1]','uniqueidentifier')
from @CAMPAIGNSSELECTED.nodes('/CAMPAIGNSSELECTED/ITEM') T(c);
end
-------------------------------------
--MULTICURRENCY
-------------------------------------
declare @CURRENCYID uniqueidentifier;
declare @MULTICURRENCYENABLED bit;
set @MULTICURRENCYENABLED = dbo.UFN_CONDITIONSETTING_EVALUATEEXISTSCONDITION('Multicurrency');
if @MULTICURRENCYENABLED = 0
set @CURRENCYCODE = 1;
if @CURRENCYCODE = 1
set @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if @CURRENCYCODE = 3
begin
set @CURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);
if @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
begin
set @CURRENCYCODE = 1
end
end;
-------------------------------------
--GET PROSPECTIDS
-------------------------------------
declare @PROSPECTIDS table
(
ID uniqueidentifier,
NAME nvarchar(300),
PLANNEDGIFTID uniqueidentifier
);
insert into @PROSPECTIDS
select distinct
PG.CONSTITUENTID ID,
NF_PROSPECT.NAME NAME,
PG.ID PLANNEDGIFTID
from
dbo.PLANNEDGIFT PG
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PG.CONSTITUENTID) NF_PROSPECT
where
PG.CONSTITUENTID = @PROSPECTID
union all
select distinct
RELATEDCONSTITUENT.ID ID,
NF.NAME NAME,
PG.ID PLANNEDGIFTID
from
dbo.PLANNEDGIFT PG
left join
dbo.PLANNEDGIFTRELATIONSHIP on PG.ID = PLANNEDGIFTRELATIONSHIP.PLANNEDGIFTID
left join
dbo.RELATIONSHIP on PLANNEDGIFTRELATIONSHIP.RELATIONSHIPID = RELATIONSHIP.ID
left join
dbo.CONSTITUENT RELATEDCONSTITUENT on
(RELATEDCONSTITUENT.ID = RELATIONSHIP.RECIPROCALCONSTITUENTID and RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @PROSPECTID) or
(RELATEDCONSTITUENT.ID = RELATIONSHIP.RELATIONSHIPCONSTITUENTID and RELATIONSHIP.RECIPROCALCONSTITUENTID = @PROSPECTID)
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(RELATEDCONSTITUENT.ID) NF
where @INCLUDERELATED = 1
-------------------------------------
--MAIN WORK
-------------------------------------
declare @PLANNEDGIFTINFO table(
ID nvarchar(80),
REVENUEID uniqueidentifier,
VEHICLE nvarchar(100),
DATE date,
AMOUNT money,
ISANONYMOUS bit,
ISREVOCABLE bit,
EXPECTEDMATURITY smallint,
STATUS nvarchar(100),
SITES nvarchar(400),
DISPLAYCURRENCYID uniqueidentifier,
CONSTITUENTNAME nvarchar(400),
BALANCE money,
PAYMENTS money,
PARENTID nvarchar(80),
VIEWFORMID uniqueidentifier,
CAMPAIGNS nvarchar(max)
)
insert into @PLANNEDGIFTINFO
select
cast(PG.ID as nvarchar(36)) + '|' + cast(@CURRENCYCODE as nvarchar(1)) + '|' + cast(@CURRENTAPPUSERID as nvarchar(36)) as ID,
PGR.REVENUEID,
PG.VEHICLE,
PG.GIFTDATE DATE,
dbo.UFN_PLANNEDGIFTREVENUE_GETTOTALAMOUNT(PG.ID, @CURRENCYCODE, @CURRENCYID) as AMOUNT,
PG.ISANONYMOUS,
PG.ISREVOCABLE,
PG.EXPECTEDMATURITY,
PG.STATUS,
dbo.UFN_PLANNEDGIFT_GETSITELIST(PG.ID) SITES,
dbo.UFN_PLANNEDGIFTREVENUE_GETCURRENCYIDFROMCODE(PG.ID, @CURRENCYCODE, @CURRENCYID) as DISPLAYCURRENCYID,
PROSPECT.NAME CONSTITUENTNAME,
dbo.UFN_PLANNEDGIFT_GETBALANCE(PG.ID, @CURRENCYID, @CURRENCYCODE) BALANCE,
dbo.UFN_PLANNEDGIFT_GETPAYMENTS(PG.ID, @CURRENCYID, @CURRENCYCODE) PAYMENTS,
null PARENTID,
'bcf0a5df-a874-4107-80c1-9cc2b3f27f0f' VIEWFORMID,
(
select dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME)
from dbo.PLANNEDGIFTDESIGNATION
inner join dbo.PLANNEDGIFTDESIGNATIONCAMPAIGN on PLANNEDGIFTDESIGNATION.ID = PLANNEDGIFTDESIGNATIONCAMPAIGN.PLANNEDGIFTDESIGNATIONID
inner join dbo.CAMPAIGN on CAMPAIGN.ID = PLANNEDGIFTDESIGNATIONCAMPAIGN.CAMPAIGNID
where PLANNEDGIFTDESIGNATION.PLANNEDGIFTID = PG.ID
) CAMPAIGNS
from dbo.PLANNEDGIFT PG
inner join @PROSPECTIDS PROSPECT on PG.CONSTITUENTID = PROSPECT.ID and PROSPECT.PLANNEDGIFTID = PG.ID
left outer join dbo.PLANNEDGIFTREVENUE PGR on PGR.ID = PG.ID
where
STATUSCODE in (2,5) --accepted or matured
and
(
select count(*)
from dbo.UFN_SITEID_MAPFROM_PLANNEDGIFTID(PG.ID) as PLANNEDGIFTSITE
where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[PLANNEDGIFTSITE].[SITEID] or (SITEID is null and [PLANNEDGIFTSITE].[SITEID] is null)))
) > 0
and
(
@SITEFILTERMODE = 0
or
PG.ID in
(
select PLANNEDGIFTSITE.PLANNEDGIFTID
from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
inner join dbo.PLANNEDGIFTSITE on PLANNEDGIFTSITE.SITEID = SITEFILTER.SITEID
)
)
and
(
@CAMPAIGNFILTERMODE = 0
or
exists
(
select 1
from dbo.PLANNEDGIFTDESIGNATION
inner join dbo.PLANNEDGIFTDESIGNATIONCAMPAIGN on PLANNEDGIFTDESIGNATION.ID = PLANNEDGIFTDESIGNATIONCAMPAIGN.PLANNEDGIFTDESIGNATIONID
inner join @CAMPAIGNFILTERTABLE CAMPAIGNFILTER on PLANNEDGIFTDESIGNATIONCAMPAIGN.CAMPAIGNID = CAMPAIGNFILTER.ID
where PLANNEDGIFTDESIGNATION.PLANNEDGIFTID = PG.ID
)
)
union all
select
cast(PGA.ID as nvarchar(36)) + '|' + cast(@CURRENCYCODE as nvarchar(1)) + '|' + cast(@CURRENTAPPUSERID as nvarchar(36)) as ID,
PGAR.REVENUEID,
PG.VEHICLE,
PGA.GIFTDATE DATE,
dbo.UFN_PLANNEDGIFTADDITIONREVENUE_GETTOTALAMOUNT(PGA.ID, @CURRENCYCODE, @CURRENCYID) as AMOUNT,
PG.ISANONYMOUS,
PG.ISREVOCABLE,
PG.EXPECTEDMATURITY,
PG.STATUS,
dbo.UFN_PLANNEDGIFT_GETSITELIST(PG.ID) SITES,
dbo.UFN_PLANNEDGIFTADDITIONREVENUE_GETCURRENCYIDFROMCODE(PGA.ID, @CURRENCYCODE, @CURRENCYID) as DISPLAYCURRENCYID,
PROSPECT.NAME CONSTITUENTNAME,
dbo.UFN_PLANNEDGIFTADDITION_GETBALANCE(PGA.ID, @CURRENCYID, @CURRENCYCODE) BALANCE,
dbo.UFN_PLANNEDGIFTADDITION_GETPAYMENTS(PGA.ID, @CURRENCYID, @CURRENCYCODE) PAYMENTS,
cast(PG.ID as nvarchar(36)) + '|' + cast(@CURRENCYCODE as nvarchar(1)) + '|' + cast(@CURRENTAPPUSERID as nvarchar(36)) PARENTID,
'9b8221c9-910e-40dd-b34a-202b54d71e2c' VIEWFORMID,
(
select dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME)
from dbo.PLANNEDGIFTADDITIONDESIGNATION
inner join dbo.PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN on PLANNEDGIFTADDITIONDESIGNATION.ID = PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN.PLANNEDGIFTADDITIONDESIGNATIONID
inner join dbo.CAMPAIGN on CAMPAIGN.ID = PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN.CAMPAIGNID
where PLANNEDGIFTADDITIONDESIGNATION.PLANNEDGIFTADDITIONID = PGA.ID
) CAMPAIGNS
from dbo.PLANNEDGIFT PG
inner join @PROSPECTIDS PROSPECT on PG.CONSTITUENTID = PROSPECT.ID and PROSPECT.PLANNEDGIFTID = PG.ID
inner join dbo.PLANNEDGIFTADDITION PGA on PGA.PLANNEDGIFTID = PG.ID
left outer join dbo.PLANNEDGIFTADDITIONREVENUE PGAR on PGAR.ID = PGA.ID
where
STATUSCODE in (2,5) --accepted or matured
and
(
select count(*)
from dbo.UFN_SITEID_MAPFROM_PLANNEDGIFTID(PG.ID) as PLANNEDGIFTSITE
where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[PLANNEDGIFTSITE].[SITEID] or (SITEID is null and [PLANNEDGIFTSITE].[SITEID] is null)))
) > 0
and
(
@SITEFILTERMODE = 0
or
PG.ID in
(
select PLANNEDGIFTSITE.PLANNEDGIFTID
from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
inner join dbo.PLANNEDGIFTSITE on PLANNEDGIFTSITE.SITEID = SITEFILTER.SITEID
)
)
and
(
@CAMPAIGNFILTERMODE = 0
or
exists
(
select 1
from dbo.PLANNEDGIFTADDITIONDESIGNATION
inner join dbo.PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN on PLANNEDGIFTADDITIONDESIGNATION.ID = PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN.PLANNEDGIFTADDITIONDESIGNATIONID
inner join @CAMPAIGNFILTERTABLE CAMPAIGNFILTER on PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN.CAMPAIGNID = CAMPAIGNFILTER.ID
where PLANNEDGIFTADDITIONDESIGNATION.PLANNEDGIFTADDITIONID = PGA.ID
)
);
--TOP ROLLUP LEVEL
select
PGINFO.ID,
REVENUEID,
PGINFO.VEHICLE,
case when PGCHILDNODEINFO.PARENTID is null then PGINFO.DATE else null end DATE,
case when coalesce(PGCHILDNODEINFO.CURRENCYCOUNT, 1) = 1 and coalesce((select top 1 DISPLAYCURRENCYID from @PLANNEDGIFTINFO PGADDITIONINFO where PGINFO.ID = PGADDITIONINFO.PARENTID),PGINFO.DISPLAYCURRENCYID) = PGINFO.DISPLAYCURRENCYID then
case
when PGINFO.AMOUNT is not null and PGCHILDNODEINFO.TOTALAMOUNT is not null then
PGINFO.AMOUNT + PGCHILDNODEINFO.TOTALAMOUNT
when PGINFO.AMOUNT is not null and PGCHILDNODEINFO.TOTALAMOUNT is null then
PGINFO.AMOUNT
when PGINFO.AMOUNT is null and PGCHILDNODEINFO.TOTALAMOUNT is not null then
PGCHILDNODEINFO.TOTALAMOUNT
else
null
end
end AMOUNT,
PGINFO.ISANONYMOUS,
PGINFO.ISREVOCABLE,
PGINFO.EXPECTEDMATURITY,
PGINFO.STATUS,
PGINFO.SITES,
PGINFO.DISPLAYCURRENCYID,
PGINFO.CONSTITUENTNAME,
case when coalesce(PGCHILDNODEINFO.CURRENCYCOUNT, 1) = 1 and coalesce((select top 1 DISPLAYCURRENCYID from @PLANNEDGIFTINFO PGADDITIONINFO where PGINFO.ID = PGADDITIONINFO.PARENTID),PGINFO.DISPLAYCURRENCYID) = PGINFO.DISPLAYCURRENCYID then
case
when PGINFO.BALANCE is not null and PGCHILDNODEINFO.TOTALBALANCE is not null then
PGINFO.BALANCE + PGCHILDNODEINFO.TOTALBALANCE
when PGINFO.BALANCE is not null and PGCHILDNODEINFO.TOTALBALANCE is null then
PGINFO.BALANCE
when PGINFO.BALANCE is null and PGCHILDNODEINFO.TOTALBALANCE is not null then
PGCHILDNODEINFO.TOTALBALANCE
else
null
end
end BALANCE,
case when coalesce(PGCHILDNODEINFO.CURRENCYCOUNT, 1) = 1 and coalesce((select top 1 DISPLAYCURRENCYID from @PLANNEDGIFTINFO PGADDITIONINFO where PGINFO.ID = PGADDITIONINFO.PARENTID),PGINFO.DISPLAYCURRENCYID) = PGINFO.DISPLAYCURRENCYID then
case
when PGINFO.PAYMENTS is not null and PGCHILDNODEINFO.TOTALPAYMENTS is not null then
PGINFO.PAYMENTS + PGCHILDNODEINFO.TOTALPAYMENTS
when PGINFO.PAYMENTS is not null and PGCHILDNODEINFO.TOTALPAYMENTS is null then
PGINFO.PAYMENTS
when PGINFO.PAYMENTS is null and PGCHILDNODEINFO.TOTALPAYMENTS is not null then
PGCHILDNODEINFO.TOTALPAYMENTS
else
null
end
end PAYMENTS,
null PARENTID,
PGINFO.ID IDFORTREE,
PGINFO.VIEWFORMID,
0 ISADDITION,
case when PGINFO.ISANONYMOUS = 1 then 'catalog:Blackbaud.AppFx.Fundraising.Catalog.dll,Blackbaud.AppFx.Fundraising.Catalog.gift_anonymous_16.png' else '' end IMAGEKEY,
PGINFO.CAMPAIGNS
from @PLANNEDGIFTINFO PGINFO
left join (
select
PGADDITIONINFO.PARENTID,
count(distinct PGADDITIONINFO.DISPLAYCURRENCYID) CURRENCYCOUNT,
sum(PGADDITIONINFO.AMOUNT) TOTALAMOUNT,
sum(PGADDITIONINFO.BALANCE) TOTALBALANCE,
sum(PGADDITIONINFO.PAYMENTS) TOTALPAYMENTS
from @PLANNEDGIFTINFO PGADDITIONINFO
group by PGADDITIONINFO.PARENTID
) PGCHILDNODEINFO on PGINFO.ID = PGCHILDNODEINFO.PARENTID
where
PGINFO.PARENTID is null
union all
--PLANNED GIFTS
select
ID,
REVENUEID,
VEHICLE,
DATE,
AMOUNT,
ISANONYMOUS,
ISREVOCABLE,
EXPECTEDMATURITY,
STATUS,
SITES,
DISPLAYCURRENCYID,
'Original gift' CONSTITUENTNAME,
BALANCE,
PAYMENTS,
ID PARENTID,
null IDFORTREE,
VIEWFORMID,
0 ISADDITION,
case when PGINFO.ISANONYMOUS = 1 then 'catalog:Blackbaud.AppFx.Fundraising.Catalog.dll,Blackbaud.AppFx.Fundraising.Catalog.gift_anonymous_16.png' else '' end IMAGEKEY,
PGINFO.CAMPAIGNS
from @PLANNEDGIFTINFO PGINFO
where
PARENTID is null and
ID in (select PGINFOSUB.PARENTID from @PLANNEDGIFTINFO as PGINFOSUB)
union all
--PLANNED GIFT ADDITIONS
select
ID,
REVENUEID,
VEHICLE,
DATE,
AMOUNT,
ISANONYMOUS,
ISREVOCABLE,
EXPECTEDMATURITY,
STATUS,
SITES,
DISPLAYCURRENCYID,
'Addition' CONSTITUENTNAME,
BALANCE,
PAYMENTS,
PARENTID,
null IDFORTREE,
VIEWFORMID,
1 ISADDITION,
case when PGINFO.ISANONYMOUS = 1 then 'catalog:Blackbaud.AppFx.Fundraising.Catalog.dll,Blackbaud.AppFx.Fundraising.Catalog.gift_anonymous_16.png' else '' end IMAGEKEY,
PGINFO.CAMPAIGNS
from @PLANNEDGIFTINFO PGINFO
where
PARENTID is not null
order by
CONSTITUENTNAME desc, DATE desc
end