USP_DATALIST_CONSTITUENTGROUP_GIVINGHISTORY
This datalist returns all of a constituent group and its members' gifts.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@INCLUDESOFTCREDIT | bit | IN | Include soft credits |
@NUMBERTOSHOWCODE | smallint | IN | Show |
@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. |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENTGROUP_GIVINGHISTORY
(
@CONSTITUENTID uniqueidentifier,
@INCLUDESOFTCREDIT bit = 0,
@NUMBERTOSHOWCODE smallint = 2,
@CURRENTAPPUSERID uniqueidentifier = null,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null
) as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
declare @GROUPINCLUDESMEMBERGIVING bit;
-- households are always donors and include member giving, other types get looked up
select
@GROUPINCLUDESMEMBERGIVING =
case
when GD.GROUPTYPECODE = 0 then 1
when GD.GROUPTYPECODE = 1 then GT.INCLUDEMEMBERGIVING
end
from dbo.GROUPDATA GD
left join dbo.GROUPTYPE GT on GD.GROUPTYPEID = GT.ID
where GD.ID=@CONSTITUENTID;
if @NUMBERTOSHOWCODE in (0,3,4,5) begin
declare @STARTDATE datetime;
if @NUMBERTOSHOWCODE = 3 --Last 30 Days
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-29,@CURRENTDATE));
else if @NUMBERTOSHOWCODE = 4 --Last 90 Days
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-89,@CURRENTDATE));
else if @NUMBERTOSHOWCODE = 5 --Last Year
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,1,dateadd(year,-1,@CURRENTDATE)))
else
set @STARTDATE = @CURRENTDATE;
declare @ENDDATE datetime;
set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATE);
-- group member pledges and payments (gifts or recurring gift payments)
with MYSITESREV_CTE as
(
select
ID,
CONSTITUENTID,
AMOUNT,
TRANSACTIONTYPE,
TRANSACTIONTYPECODE,
DATE,
DATEADDED
from
dbo.REVENUE
where
(not @NUMBERTOSHOWCODE in (3,4,5) or (REVENUE.DATE >= @STARTDATE and REVENUE.DATE <= @ENDDATE))
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = REVENUE.ID
/*next line is #SITEEXTENTION code*/
and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[REVSITES].[SITEID] or (SITEID is null and [REVSITES].[SITEID] is null)))
and
(
@SITEFILTERMODE = 0
or
exists(select UFN_SITE_BUILDDATALISTSITEFILTER.SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) where UFN_SITE_BUILDDATALISTSITEFILTER.SITEID = REVSITES.SITEID)
)
)
)
select
MYSITESREV_CTE.ID,
MYSITESREV_CTE.CONSTITUENTID,
(select NAME from dbo.CONSTITUENT where ID=MYSITESREV_CTE.CONSTITUENTID) as CONSTITUENTNAME,
MYSITESREV_CTE.ID as RECORDID,
MYSITESREV_CTE.DATE,
MYSITESREV_CTE.DATEADDED,
case when MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 then MYSITESREV_CTE.AMOUNT
else (select sum(RS.AMOUNT) from dbo.REVENUESPLIT RS where RS.REVENUEID = MYSITESREV_CTE.ID and RS.APPLICATIONCODE in (0, 3))
end AMOUNT,
case MYSITESREV_CTE.TRANSACTIONTYPECODE when 1 then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGEGROSSAMOUNT(MYSITESREV_CTE.ID)
else (select sum(dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATESPLITGROSSAMOUNT(RS.ID, 1)) from dbo.REVENUESPLIT RS where RS.REVENUEID = MYSITESREV_CTE.ID and RS.APPLICATIONCODE in (0,3)) end as GROSSAMOUNT,
case MYSITESREV_CTE.TRANSACTIONTYPECODE when 1 then dbo.UFN_PLEDGE_GETBALANCE(MYSITESREV_CTE.ID) else null end as BALANCE,
MYSITESREV_CTE.TRANSACTIONTYPECODE as Typecode,
MYSITESREV_CTE.TRANSACTIONTYPE as Type,
dbo.UFN_REVENUE_DESIGNATIONLIST(MYSITESREV_CTE.ID) as DESIGNATIONS,
(
select dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME) from REVENUESPLIT, REVENUESPLITCAMPAIGN, CAMPAIGN where REVENUESPLIT.REVENUEID=MYSITESREV_CTE.id and REVENUESPLITCAMPAIGN.REVENUESPLITID=REVENUESPLIT.id and REVENUESPLITCAMPAIGN.CAMPAIGNID=CAMPAIGN.ID
) as CAMPAIGNS,
dbo.UFN_REVENUE_BUILDSITELIST(MYSITESREV_CTE.ID) SITES
from
MYSITESREV_CTE
inner join dbo.GROUPMEMBER GM on GM.MEMBERID = MYSITESREV_CTE.CONSTITUENTID
left join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
left join dbo.V_PLANNEDGIFTREVENUE_WITHADDITIONS PGR on PGR.REVENUEID = MYSITESREV_CTE.ID
left join dbo.PLANNEDGIFT PG on PG.ID = PGR.PLANNEDGIFTID
where @GROUPINCLUDESMEMBERGIVING = 1
and GM.GROUPID = @CONSTITUENTID
and (MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 --Pledge
or (MYSITESREV_CTE.TRANSACTIONTYPECODE = 4 and PG.VEHICLECODE in (0,1,2,5,6,7,8,9,10,11,12,13)) --Planned gifts
or (MYSITESREV_CTE.TRANSACTIONTYPECODE = 0
and exists(select 1
from dbo.REVENUESPLIT RS
where RS.REVENUEID = MYSITESREV_CTE.ID
and RS.APPLICATIONCODE in (0,3)
) --Payment (Gift or recurring gift payment)
)
)
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= MYSITESREV_CTE.DATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= MYSITESREV_CTE.DATE))
or (GMDR.DATEFROM <= MYSITESREV_CTE.DATE and GMDR.DATETO >= MYSITESREV_CTE.DATE))
union all
-- group pledges and payments (gifts or recurring gift payments)
select
MYSITESREV_CTE.ID,
MYSITESREV_CTE.CONSTITUENTID,
(select NAME from dbo.CONSTITUENT where ID=MYSITESREV_CTE.CONSTITUENTID) as CONSTITUENTNAME,
MYSITESREV_CTE.ID as RECORDID,
MYSITESREV_CTE.DATE,
MYSITESREV_CTE.DATEADDED,
case
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 then MYSITESREV_CTE.AMOUNT
else (select sum(RS.AMOUNT) from dbo.REVENUESPLIT RS where RS.REVENUEID = MYSITESREV_CTE.ID and RS.APPLICATIONCODE in (0, 3))
end AMOUNT,
case
when MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 then MYSITESREV_CTE.AMOUNT
else (select sum(RS.AMOUNT) from dbo.REVENUESPLIT RS where RS.REVENUEID = MYSITESREV_CTE.ID and RS.APPLICATIONCODE in (0, 3))
end as GROSSAMOUNT, --Groups do not get Gift Aid
case MYSITESREV_CTE.TRANSACTIONTYPECODE when 1 then dbo.UFN_PLEDGE_GETBALANCE(MYSITESREV_CTE.ID) else null end as BALANCE,
MYSITESREV_CTE.TRANSACTIONTYPECODE,
MYSITESREV_CTE.TRANSACTIONTYPE,
dbo.UFN_REVENUE_DESIGNATIONLIST(MYSITESREV_CTE.ID) as DESIGNATIONS,
(
select dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME) from REVENUESPLIT, REVENUESPLITCAMPAIGN, CAMPAIGN where REVENUESPLIT.REVENUEID=MYSITESREV_CTE.id and REVENUESPLITCAMPAIGN.REVENUESPLITID=REVENUESPLIT.id and REVENUESPLITCAMPAIGN.CAMPAIGNID=CAMPAIGN.ID
) as CAMPAIGNS,
dbo.UFN_REVENUE_BUILDSITELIST(MYSITESREV_CTE.ID) SITES
from
MYSITESREV_CTE
left join dbo.PLANNEDGIFTREVENUE PGR on PGR.REVENUEID = MYSITESREV_CTE.ID
left join dbo.PLANNEDGIFT PG on PG.ID = PGR.ID
where MYSITESREV_CTE.CONSTITUENTID = @CONSTITUENTID
and (MYSITESREV_CTE.TRANSACTIONTYPECODE = 1 --Pledge
or (MYSITESREV_CTE.TRANSACTIONTYPECODE = 4 and PG.VEHICLECODE in (0,1,2,5,6,7,8,9,10,11,12,13)) --Planned gifts
or (MYSITESREV_CTE.TRANSACTIONTYPECODE = 0
and exists(select 1
from dbo.REVENUESPLIT RS
where RS.REVENUEID = MYSITESREV_CTE.ID
and RS.APPLICATIONCODE in (0,3)
) --Payment (Gift or recurring gift payment)
)
)
order by
DATE desc, DATEADDED desc, AMOUNT desc;
end
else begin
declare @NUMBERTOSHOW int;
if @NUMBERTOSHOWCODE = 1
set @NUMBERTOSHOW = 5;
else if @NUMBERTOSHOWCODE = 2
set @NUMBERTOSHOW = 10;
else
set @NUMBERTOSHOW = 0;
with MYSITESREV_CTE as
(
select
REVENUE.ID,
REVENUE.CONSTITUENTID,
REVENUE.AMOUNT,
REVENUE.TRANSACTIONTYPE,
REVENUE.TRANSACTIONTYPECODE,
REVENUE.DATE,
REVENUE.DATEADDED
from
dbo.REVENUE
left join dbo.PLANNEDGIFTREVENUE PGR on PGR.REVENUEID = REVENUE.ID
left join dbo.PLANNEDGIFT PG on PG.ID = PGR.ID
where
(REVENUE.TRANSACTIONTYPECODE = 1 --Pledge
or (REVENUE.TRANSACTIONTYPECODE = 4 and PG.VEHICLECODE in (0,1,2,5,6,7,8,9,10,11,12,13)) --Planned gift
or (REVENUE.TRANSACTIONTYPECODE = 0
and exists(select 1
from dbo.REVENUESPLIT RS
where RS.REVENUEID = REVENUE.ID
and RS.APPLICATIONCODE in (0,3)
) --Payment (Gift or recurring gift payment)
)
)
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = REVENUE.ID
/*next line is #SITEEXTENTION code*/
and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[REVSITES].[SITEID] or (SITEID is null and [REVSITES].[SITEID] is null)))
and
(
@SITEFILTERMODE = 0
or
exists(select UFN_SITE_BUILDDATALISTSITEFILTER.SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) where UFN_SITE_BUILDDATALISTSITEFILTER.SITEID = REVSITES.SITEID)
)
)
)
select top(@NUMBERTOSHOW)
ID,
CONSTITUENTID,
CONSTITUENTNAME,
RECORDID,
DATE,
DATEADDED,
AMOUNT,
GROSSAMOUNT,
BALANCE,
TRANSACTIONTYPECODE as TYPECODE,
TRANSACTIONTYPE as TYPE,
DESIGNATIONS,
CAMPAIGNS,
SITES
from
(
-- group member pledges and payments
select top(@NUMBERTOSHOW)
MYSITESREV_CTE.ID,
MYSITESREV_CTE.CONSTITUENTID,
(select NAME from dbo.CONSTITUENT where ID=MYSITESREV_CTE.CONSTITUENTID) as CONSTITUENTNAME,
MYSITESREV_CTE.ID as RECORDID,
MYSITESREV_CTE.DATE,
MYSITESREV_CTE.DATEADDED,
case
when MYSITESREV_CTE.TRANSACTIONTYPECODE in (1,4) then MYSITESREV_CTE.AMOUNT
else (select sum(RS.AMOUNT) from dbo.REVENUESPLIT RS where RS.REVENUEID = MYSITESREV_CTE.ID and RS.APPLICATIONCODE in (0, 3))
end AMOUNT,
case MYSITESREV_CTE.TRANSACTIONTYPECODE when 1 then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGEGROSSAMOUNT(MYSITESREV_CTE.ID)
else (select sum(dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATESPLITGROSSAMOUNT(RS.ID, 1)) from dbo.REVENUESPLIT RS where RS.REVENUEID = MYSITESREV_CTE.ID and RS.APPLICATIONCODE in (0,3)) end as GROSSAMOUNT,
case MYSITESREV_CTE.TRANSACTIONTYPECODE when 1 then dbo.UFN_PLEDGE_GETBALANCE(MYSITESREV_CTE.ID) else null end as BALANCE,
MYSITESREV_CTE.TRANSACTIONTYPECODE,
MYSITESREV_CTE.TRANSACTIONTYPE,
dbo.UFN_REVENUE_DESIGNATIONLIST(MYSITESREV_CTE.ID) as DESIGNATIONS,
(
select dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME) from REVENUESPLIT, REVENUESPLITCAMPAIGN, CAMPAIGN where REVENUESPLIT.REVENUEID=MYSITESREV_CTE.id and REVENUESPLITCAMPAIGN.REVENUESPLITID=REVENUESPLIT.id and REVENUESPLITCAMPAIGN.CAMPAIGNID=CAMPAIGN.ID
) as CAMPAIGNS,
dbo.UFN_REVENUE_BUILDSITELIST(MYSITESREV_CTE.ID) SITES
from MYSITESREV_CTE
inner join dbo.GROUPMEMBER GM on MYSITESREV_CTE.CONSTITUENTID = GM.MEMBERID
left join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
where @GROUPINCLUDESMEMBERGIVING = 1
and GM.GROUPID = @CONSTITUENTID
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= MYSITESREV_CTE.DATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= MYSITESREV_CTE.DATE))
or (GMDR.DATEFROM <= MYSITESREV_CTE.DATE and GMDR.DATETO >= MYSITESREV_CTE.DATE))
order by
DATE desc, DATEADDED desc, AMOUNT desc
union all
-- group pledges and payments
select top(@NUMBERTOSHOW)
MYSITESREV_CTE.ID,
MYSITESREV_CTE.CONSTITUENTID,
(select NAME from dbo.CONSTITUENT where ID=MYSITESREV_CTE.CONSTITUENTID) as CONSTITUENTNAME,
MYSITESREV_CTE.ID as RECORDID,
MYSITESREV_CTE.DATE,
MYSITESREV_CTE.DATEADDED,
case
when MYSITESREV_CTE.TRANSACTIONTYPECODE in (1,4) then MYSITESREV_CTE.AMOUNT
else (select sum(RS.AMOUNT) from dbo.REVENUESPLIT RS where RS.REVENUEID = MYSITESREV_CTE.ID and RS.APPLICATIONCODE in (0, 3))
end AMOUNT,
case
when MYSITESREV_CTE.TRANSACTIONTYPECODE in (1,4) then MYSITESREV_CTE.AMOUNT
else (select sum(RS.AMOUNT) from dbo.REVENUESPLIT RS where RS.REVENUEID = MYSITESREV_CTE.ID and RS.APPLICATIONCODE in (0, 3))
end as GROSSAMOUNT, --groups do not get Gift Aid
case MYSITESREV_CTE.TRANSACTIONTYPECODE when 1 then dbo.UFN_PLEDGE_GETBALANCE(MYSITESREV_CTE.ID) else null end as BALANCE,
MYSITESREV_CTE.TRANSACTIONTYPECODE as TYPECODE,
MYSITESREV_CTE.TRANSACTIONTYPE,
dbo.UFN_REVENUE_DESIGNATIONLIST(MYSITESREV_CTE.ID) as DESIGNATIONS,
(
select dbo.UDA_BUILDLIST(distinct CAMPAIGN.NAME) from REVENUESPLIT, REVENUESPLITCAMPAIGN, CAMPAIGN where REVENUESPLIT.REVENUEID=MYSITESREV_CTE.id and REVENUESPLITCAMPAIGN.REVENUESPLITID=REVENUESPLIT.id and REVENUESPLITCAMPAIGN.CAMPAIGNID=CAMPAIGN.ID
) as CAMPAIGNS,
dbo.UFN_REVENUE_BUILDSITELIST(MYSITESREV_CTE.ID) SITES
from
MYSITESREV_CTE
where
MYSITESREV_CTE.CONSTITUENTID = @CONSTITUENTID
order by
DATE desc, DATEADDED desc, AMOUNT desc
) as RESULT
order by
RESULT.DATE desc, RESULT.DATEADDED desc, RESULT.AMOUNT desc;
end