USP_DATALIST_PROSPECT_PLANNEDGIFTS
List of a prospect's planned gists.
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_PLANNEDGIFTS
(
@PROSPECTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier = null,
@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;
declare @CURRENTDATE as date;
set @CURRENTDATE = getdate();
-------------------------------------
--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.NAME NAME,
PG.ID PLANNEDGIFTID
from
dbo.PLANNEDGIFT PG
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PG.CONSTITUENTID) NF
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 uniqueidentifier,
VEHICLE nvarchar(100),
DATE date,
AMOUNT money,
ISANONYMOUS bit,
ISREVOCABLE bit,
STATUS nvarchar(100),
EXPECTEDMATURITY smallint,
SITES nvarchar(400),
DISPLAYCURRENCY uniqueidentifier,
CONSTITUENTNAME nvarchar(400),
BALANCE money,
PAYMENTS money,
PARENTID uniqueidentifier,
VIEWFORMID uniqueidentifier,
CAMPAIGNS nvarchar(max)
)
insert into @PLANNEDGIFTINFO
select
PG.ID,
PG.VEHICLE,
PG.GIFTDATE DATE,
dbo.UFN_PLANNEDGIFTREVENUE_GETTOTALAMOUNT(PG.ID, @CURRENCYCODE, @CURRENCYID) as AMOUNT,
PG.ISANONYMOUS,
PG.ISREVOCABLE,
PG.STATUS,
PG.EXPECTEDMATURITY,
dbo.UFN_PLANNEDGIFT_GETSITELIST(PG.ID) SITES,
dbo.UFN_PLANNEDGIFTREVENUE_GETCURRENCYIDFROMCODE(PG.ID, @CURRENCYCODE, @CURRENCYID) as DISPLAYCURRENCY,
PROSPECT.NAME CONSTITUENTNAME,
dbo.UFN_PLANNEDGIFT_GETBALANCE(PG.ID, @CURRENCYID, @CURRENCYCODE) BALANCE,
dbo.UFN_PLANNEDGIFT_GETPAYMENTS(PG.ID, @CURRENCYID, @CURRENCYCODE) PAYMENTS,
null PARENTID,
'C1FBFDA5-2EF8-4211-8B9A-B1E30689D08C' 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
where
(
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
--Grab all household member planned gifts if this prospect is a household
select
PG.ID,
PG.VEHICLE,
PG.GIFTDATE DATE,
dbo.UFN_PLANNEDGIFTREVENUE_GETTOTALAMOUNT(PG.ID, @CURRENCYCODE, @CURRENCYID) as AMOUNT,
PG.ISANONYMOUS,
PG.ISREVOCABLE,
PG.STATUS,
PG.EXPECTEDMATURITY,
dbo.UFN_PLANNEDGIFT_GETSITELIST(PG.ID) SITES,
dbo.UFN_PLANNEDGIFTREVENUE_GETCURRENCYIDFROMCODE(PG.ID, @CURRENCYCODE, @CURRENCYID) as DISPLAYCURRENCY,
NF.NAME CONSTITUENTNAME,
dbo.UFN_PLANNEDGIFT_GETBALANCE(PG.ID, @CURRENCYID, @CURRENCYCODE) BALANCE,
dbo.UFN_PLANNEDGIFT_GETPAYMENTS(PG.ID, @CURRENCYID, @CURRENCYCODE) PAYMENTS,
null PARENTID,
'C1FBFDA5-2EF8-4211-8B9A-B1E30689D08C' 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.GROUPMEMBER GM
inner join
dbo.PLANNEDGIFT PG on PG.CONSTITUENTID = GM.MEMBERID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PG.CONSTITUENTID) NF
left outer join
dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
where
GM.GROUPID = @PROSPECTID
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= @CURRENTDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE))
or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO >= @CURRENTDATE))
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
--get all planned gift additions
select
PGA.ID,
PG.VEHICLE,
PGA.GIFTDATE DATE,
dbo.UFN_PLANNEDGIFTADDITIONREVENUE_GETTOTALAMOUNT(PGA.ID, @CURRENCYCODE, @CURRENCYID) as AMOUNT,
PG.ISANONYMOUS,
PG.ISREVOCABLE,
PG.STATUS,
PG.EXPECTEDMATURITY,
dbo.UFN_PLANNEDGIFT_GETSITELIST(PG.ID) SITES,
dbo.UFN_PLANNEDGIFTADDITIONREVENUE_GETCURRENCYIDFROMCODE(PGA.ID, @CURRENCYCODE, @CURRENCYID) as DISPLAYCURRENCY,
PROSPECT.NAME CONSTITUENTNAME,
dbo.UFN_PLANNEDGIFTADDITION_GETBALANCE(PGA.ID, @CURRENCYID, @CURRENCYCODE) BALANCE,
dbo.UFN_PLANNEDGIFTADDITION_GETPAYMENTS(PGA.ID, @CURRENCYID, @CURRENCYCODE) PAYMENTS,
PG.ID PARENTID,
'd8e2f2b5-4c4f-46de-a2f7-39c595dd2892' 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 PG.ID = PGA.PLANNEDGIFTID
where
(
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
)
)
union all
--Grab all household member planned gifts if this prospect is a household
select
PGA.ID,
PG.VEHICLE,
PGA.GIFTDATE DATE,
dbo.UFN_PLANNEDGIFTADDITIONREVENUE_GETTOTALAMOUNT(PGA.ID, @CURRENCYCODE, @CURRENCYID) as AMOUNT,
PG.ISANONYMOUS,
PG.ISREVOCABLE,
PG.STATUS,
PG.EXPECTEDMATURITY,
dbo.UFN_PLANNEDGIFT_GETSITELIST(PG.ID) SITES,
dbo.UFN_PLANNEDGIFTADDITIONREVENUE_GETCURRENCYIDFROMCODE(PGA.ID, @CURRENCYCODE, @CURRENCYID) as DISPLAYCURRENCY,
NF.NAME CONSTITUENTNAME,
dbo.UFN_PLANNEDGIFTADDITION_GETBALANCE(PGA.ID, @CURRENCYID, @CURRENCYCODE) BALANCE,
dbo.UFN_PLANNEDGIFTADDITION_GETPAYMENTS(PGA.ID, @CURRENCYID, @CURRENCYCODE) PAYMENTS,
PG.ID PARENTID,
'd8e2f2b5-4c4f-46de-a2f7-39c595dd2892' 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.GROUPMEMBER GM
inner join
dbo.PLANNEDGIFT PG on PG.CONSTITUENTID = GM.MEMBERID
inner join
dbo.PLANNEDGIFTADDITION PGA on PG.ID = PGA.PLANNEDGIFTID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PG.CONSTITUENTID) NF
left outer join
dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
where
GM.GROUPID = @PROSPECTID
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= @CURRENTDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE))
or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO >= @CURRENTDATE))
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,
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 DISPLAYCURRENCY from @PLANNEDGIFTINFO PGADDITIONINFO where PGINFO.ID = PGADDITIONINFO.PARENTID),PGINFO.DISPLAYCURRENCY) = PGINFO.DISPLAYCURRENCY 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.STATUS,
PGINFO.EXPECTEDMATURITY,
PGINFO.SITES,
PGINFO.DISPLAYCURRENCY,
PGINFO.CONSTITUENTNAME,
case when coalesce(PGCHILDNODEINFO.CURRENCYCOUNT, 1) = 1 and coalesce((select top 1 DISPLAYCURRENCY from @PLANNEDGIFTINFO PGADDITIONINFO where PGINFO.ID = PGADDITIONINFO.PARENTID),PGINFO.DISPLAYCURRENCY) = PGINFO.DISPLAYCURRENCY 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 DISPLAYCURRENCY from @PLANNEDGIFTINFO PGADDITIONINFO where PGINFO.ID = PGADDITIONINFO.PARENTID),PGINFO.DISPLAYCURRENCY) = PGINFO.DISPLAYCURRENCY 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.DISPLAYCURRENCY) 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,
VEHICLE,
DATE,
AMOUNT,
ISANONYMOUS,
ISREVOCABLE,
STATUS,
EXPECTEDMATURITY,
SITES,
DISPLAYCURRENCY,
'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,
VEHICLE,
DATE,
AMOUNT,
ISANONYMOUS,
ISREVOCABLE,
STATUS,
EXPECTEDMATURITY,
SITES,
DISPLAYCURRENCY,
'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