USP_CONSTITUENTGROUP_CUMULATIVEGIVINGSUMMARYGET
Returns the cumulative giving history for a constituent group.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SITEFILTERMODE | tinyint | IN | |
@SITESSELECTED | xml | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | tinyint | IN | |
@CURRENCYCODE | tinyint | IN |
Definition
Copy
CREATE procedure [dbo].[USP_CONSTITUENTGROUP_CUMULATIVEGIVINGSUMMARYGET]
(
@CONSTITUENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@CURRENCYCODE tinyint = 1
)
as
set nocount on;
declare @GROUPINCLUDESMEMBERGIVING bit = null;
declare @ISHOUSEHOLD bit = null;
declare @TOTALNUMBER int = null;
declare @TOTALAMOUNT money = null;
declare @TOTALGROUPAMOUNT money = null;
declare @TOTALGROUPMEMBERAMOUNT money = null;
declare @AVERAGEAMOUNT money = null;
declare @MOSTFREQUENTAMOUNT money = null;
declare @TOTALPLEDGEBALANCE money = null;
declare @TOTALYEARS int = null;
declare @CONSECUTIVEYEARS int = null;
declare @GIVENSINCEFISCALYEAR datetime = null;
declare @LARGESTID uniqueidentifier = null;
declare @LARGESTRECORDID uniqueidentifier = null;
declare @LARGESTDATE datetime = null;
declare @LARGESTTYPECODE tinyint = null;
declare @LARGESTTYPE nvarchar(22) = null;
declare @LARGESTAMOUNT money = null;
declare @LARGESTPLEDGEBALANCE money = null;
declare @LARGESTSPLITS xml = null;
declare @LARGESTCONSTITUENTNAME nvarchar(300) = null;
declare @FIRSTID uniqueidentifier = null;
declare @FIRSTRECORDID uniqueidentifier = null;
declare @FIRSTDATE datetime = null;
declare @FIRSTTYPECODE tinyint = null;
declare @FIRSTTYPE nvarchar(22) = null;
declare @FIRSTAMOUNT money = null;
declare @FIRSTPLEDGEBALANCE money = null;
declare @FIRSTSPLITS xml = null;
declare @FIRSTCONSTITUENTNAME nvarchar(300) = null;
declare @LATESTID uniqueidentifier = null;
declare @LATESTRECORDID uniqueidentifier = null;
declare @LATESTDATE datetime = null;
declare @LATESTTYPECODE tinyint = null;
declare @LATESTTYPE nvarchar(22) = null;
declare @LATESTAMOUNT money = null;
declare @LATESTPLEDGEBALANCE money = null;
declare @LATESTSPLITS xml = null;
declare @LATESTCONSTITUENTNAME nvarchar(300) = null;
declare @RECOGNITIONTOTALNUMBER int = null;
declare @RECOGNITIONTOTALAMOUNT money = null;
declare @RECOGNITIONTOTALGROUPAMOUNT money = null;
declare @RECOGNITIONTOTALGROUPMEMBERAMOUNT money = null;
declare @RECOGNITIONAVERAGEAMOUNT money = null;
declare @RECOGNITIONMOSTFREQUENTAMOUNT money = null;
declare @RECOGNITIONTOTALYEARS int = null;
declare @RECOGNITIONCONSECUTIVEYEARS int = null;
declare @RECOGNITIONGIVENSINCEFISCALYEAR datetime = null;
declare @RECOGNITIONLARGESTRECORDID uniqueidentifier = null;
declare @RECOGNITIONLARGESTDATE datetime = null;
declare @RECOGNITIONLARGESTTYPECODE tinyint = null;
declare @RECOGNITIONLARGESTTYPE nvarchar(22) = null;
declare @RECOGNITIONLARGESTAMOUNT money = null;
declare @RECOGNITIONLARGESTCONSTITUENTNAME nvarchar(300) = null;
declare @RECOGNITIONFIRSTRECORDID uniqueidentifier = null;
declare @RECOGNITIONFIRSTDATE datetime = null;
declare @RECOGNITIONFIRSTTYPECODE tinyint = null;
declare @RECOGNITIONFIRSTTYPE nvarchar(22) = null;
declare @RECOGNITIONFIRSTAMOUNT money = null;
declare @RECOGNITIONFIRSTCONSTITUENTNAME nvarchar(300) = null;
declare @RECOGNITIONLATESTRECORDID uniqueidentifier = null;
declare @RECOGNITIONLATESTDATE datetime = null;
declare @RECOGNITIONLATESTTYPECODE tinyint = null;
declare @RECOGNITIONLATESTTYPE nvarchar(22) = null;
declare @RECOGNITIONLATESTAMOUNT money = null;
declare @RECOGNITIONLATESTCONSTITUENTNAME nvarchar(300) = null;
declare @GROUPMEMBERTAXCLAIMAMOUNT money = null;
declare @RECOGNITIONGROUPMEMBERTAXCLAIMAMOUNT money = null;
declare @MATCHEDGIFTSAMOUNT money = null;
declare @CURRENCYID uniqueidentifier
if @CURRENCYCODE = 1
set @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
else
set @CURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
declare @ORIGINCODE tinyint;
select @ORIGINCODE = coalesce(ORGANIZATIONAMOUNTORIGINCODE, 0) from dbo.MULTICURRENCYCONFIGURATION;
select @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),
@DECIMALDIGITS = DECIMALDIGITS,
@ROUNDINGTYPECODE = ROUNDINGTYPECODE
from
dbo.CURRENCY
where
CURRENCY.ID = @CURRENCYID;
exec dbo.USP_GROUP_GIVINGSUMMARYGET
@CONSTITUENTID,
@GROUPINCLUDESMEMBERGIVING = @GROUPINCLUDESMEMBERGIVING output,
@ISHOUSEHOLD = @ISHOUSEHOLD output,
@TOTALNUMBER = @TOTALNUMBER output,
@TOTALAMOUNT = @TOTALAMOUNT output,
@TOTALGROUPAMOUNT = @TOTALGROUPAMOUNT output,
@TOTALGROUPMEMBERAMOUNT = @TOTALGROUPMEMBERAMOUNT output,
@AVERAGEAMOUNT = @AVERAGEAMOUNT output,
@MOSTFREQUENTAMOUNT = @MOSTFREQUENTAMOUNT output,
@TOTALPLEDGEBALANCE = @TOTALPLEDGEBALANCE output,
@TOTALYEARS = @TOTALYEARS output,
@CONSECUTIVEYEARS = @CONSECUTIVEYEARS output,
@GIVENSINCEFISCALYEAR = @GIVENSINCEFISCALYEAR output,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@SITEFILTERMODE = @SITEFILTERMODE,
@SITESSELECTED = @SITESSELECTED,
@SECURITYFEATUREID = @SECURITYFEATUREID,
@SECURITYFEATURETYPE = @SECURITYFEATURETYPE,
@GROUPMEMBERTAXCLAIMAMOUNT = @GROUPMEMBERTAXCLAIMAMOUNT output,
@MATCHEDGIFTSAMOUNT = @MATCHEDGIFTSAMOUNT output,
@CURRENCYID = @CURRENCYID;
declare @HOUSEHOLDSCANBEDONORS as bit = dbo.UFN_INSTALLATIONINFO_GETHOUSEHOLDSCANBEDONORS()
declare @GIVING table
(
REVENUEID uniqueidentifier,
TRANSACTIONTYPECODE tinyint,
TRANSACTIONTYPE nvarchar(19),
REVENUEAMOUNT money,
[DATE] datetime,
DATEADDED datetime,
SPLITID uniqueidentifier,
APPLICATIONCODE tinyint,
DESIGNATIONID uniqueidentifier,
SPLITAMOUNT money,
WRITEOFFAMOUNT money,
CONSTITUENTID uniqueidentifier,
SPLITNETAMOUNT money
)
if @GROUPINCLUDESMEMBERGIVING = 1
begin
declare @MEMBERIDS table
(
ID uniqueidentifier,
DATEFROM datetime,
DATETO datetime
)
insert into @MEMBERIDS
select
GROUPMEMBER.MEMBERID ID, DATEFROM, DATETO
from
dbo.GROUPMEMBER
left join
dbo.GROUPMEMBERDATERANGE on GROUPMEMBERDATERANGE.GROUPMEMBERID = GROUPMEMBER.ID
where
GROUPMEMBER.GROUPID = @CONSTITUENTID;
insert into @GIVING
select
REVENUEID,
TRANSACTIONTYPECODE,
TRANSACTIONTYPE,
REVENUEAMOUNT,
[DATE],
DATEADDED,
SPLITID,
APPLICATIONCODE,
DESIGNATIONID,
SPLITAMOUNT,
WRITEOFFAMOUNT,
MEMBERIDS.ID CONSTITUENTID,
REV.SPLITNETAMOUNT
from
@MEMBERIDS MEMBERIDS
cross apply dbo.UFN_CONSTITUENT_GIVINGHISTORYINCURRENCY_BULK(
MEMBERIDS.ID,
@CURRENTAPPUSERID,
@SITEFILTERMODE,
@SITESSELECTED,
@SECURITYFEATUREID,
@SECURITYFEATURETYPE,
@CURRENCYID,
@ORGANIZATIONCURRENCYID,
@DECIMALDIGITS,
@ROUNDINGTYPECODE) REV
where
((MEMBERIDS.DATEFROM is null or REV.DATE >= MEMBERIDS.DATEFROM) and
(MEMBERIDS.DATETO is null or REV.DATE <= MEMBERIDS.DATETO));
end
if not (@ISHOUSEHOLD = 1 and @HOUSEHOLDSCANBEDONORS = 0)
begin
insert into @GIVING
select
REVENUEID,
TRANSACTIONTYPECODE,
TRANSACTIONTYPE,
REVENUEAMOUNT,
[DATE],
DATEADDED,
SPLITID,
APPLICATIONCODE,
DESIGNATIONID,
SPLITAMOUNT,
WRITEOFFAMOUNT,
@CONSTITUENTID,
SPLITNETAMOUNT
from dbo.UFN_CONSTITUENT_GIVINGHISTORYINCURRENCY_BULK(
@CONSTITUENTID,
@CURRENTAPPUSERID,
@SITEFILTERMODE,
@SITESSELECTED,
@SECURITYFEATUREID,
@SECURITYFEATURETYPE,
@CURRENCYID,
@ORGANIZATIONCURRENCYID,
@DECIMALDIGITS,
@ROUNDINGTYPECODE);
end
-- largest gift
select top 1
@LARGESTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=G.CONSTITUENTID),
@LARGESTID = G.REVENUEID,
@LARGESTRECORDID = G.REVENUEID,
@LARGESTDATE = G.DATE,
@LARGESTTYPECODE = G.TRANSACTIONTYPECODE,
@LARGESTTYPE = G.TRANSACTIONTYPE,
@LARGESTAMOUNT = sum(G.SPLITNETAMOUNT),
@LARGESTPLEDGEBALANCE = case G.TRANSACTIONTYPECODE when 1 then PLEDGEBALANCE.BALANCEINCURRENCY else null end,
--using this instead of TOXML function, because a different root element is needed
@LARGESTSPLITS = (select
[AMOUNT],
[ID],
[PURPOSE]
from
dbo.[UFN_REVENUE_GETSPLITS_LISTINCURRENCY_BULK](G.REVENUEID, @CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @ORIGINCODE)
order by
ID
for xml raw('ITEM'),type,elements,root('LARGESTSPLITS'),BINARY BASE64)
from @GIVING G
left join dbo.UFN_PLEDGE_GETBALANCEASOFINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, getdate(), @ORIGINCODE, 3) PLEDGEBALANCE on PLEDGEBALANCE.ID = G.REVENUEID
group by
G.REVENUEID, G.TRANSACTIONTYPE, G.TRANSACTIONTYPECODE, G.DATE, G.DATEADDED, G.CONSTITUENTID, PLEDGEBALANCE.BALANCEINCURRENCY
order by
sum(SPLITNETAMOUNT) desc, G.DATE desc, G.DATEADDED desc;
-- first gift
select top 1
@FIRSTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=G.CONSTITUENTID),
@FIRSTID = G.REVENUEID,
@FIRSTRECORDID = G.REVENUEID,
@FIRSTDATE = G.DATE,
@FIRSTTYPECODE = G.TRANSACTIONTYPECODE,
@FIRSTTYPE = G.TRANSACTIONTYPE,
@FIRSTAMOUNT = sum(G.SPLITNETAMOUNT),
@FIRSTPLEDGEBALANCE = case G.TRANSACTIONTYPECODE when 1 then PLEDGEBALANCE.BALANCEINCURRENCY else null end,
--using this instead of TOXML function, because a different root element is needed
@FIRSTSPLITS = (select
[AMOUNT],
[ID],
[PURPOSE]
from
dbo.[UFN_REVENUE_GETSPLITS_LISTINCURRENCY_BULK](G.REVENUEID, @CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @ORIGINCODE)
order by
ID
for xml raw('ITEM'),type,elements,root('FIRSTSPLITS'),BINARY BASE64)
from @GIVING G
left join dbo.UFN_PLEDGE_GETBALANCEASOFINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, getdate(), @ORIGINCODE, 3) PLEDGEBALANCE on PLEDGEBALANCE.ID = G.REVENUEID
group by
G.REVENUEID, G.TRANSACTIONTYPE, G.TRANSACTIONTYPECODE, G.DATE, G.DATEADDED, G.CONSTITUENTID, PLEDGEBALANCE.BALANCEINCURRENCY
order by
G.DATE asc, G.DATEADDED asc;
-- latest gift
select top 1
@LATESTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=G.CONSTITUENTID),
@LATESTID = G.REVENUEID,
@LATESTRECORDID = G.REVENUEID,
@LATESTDATE = G.DATE,
@LATESTTYPECODE = G.TRANSACTIONTYPECODE,
@LATESTTYPE = G.TRANSACTIONTYPE,
@LATESTAMOUNT = sum(G.SPLITNETAMOUNT),
@LATESTPLEDGEBALANCE = case G.TRANSACTIONTYPECODE when 1 then PLEDGEBALANCE.BALANCEINCURRENCY else null end,
--using this instead of TOXML function, because a different root element is needed
@LATESTSPLITS = (select
[AMOUNT],
[ID],
[PURPOSE]
from
dbo.[UFN_REVENUE_GETSPLITS_LISTINCURRENCY_BULK](G.REVENUEID, @CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @ORIGINCODE)
order by
ID
for xml raw('ITEM'),type,elements,root('LATESTSPLITS'),BINARY BASE64)
from @GIVING G
left join dbo.UFN_PLEDGE_GETBALANCEASOFINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, getdate(), @ORIGINCODE, 3) PLEDGEBALANCE on PLEDGEBALANCE.ID = G.REVENUEID
group by
G.REVENUEID, G.TRANSACTIONTYPE, G.TRANSACTIONTYPECODE, G.DATE, G.DATEADDED, G.CONSTITUENTID, PLEDGEBALANCE.BALANCEINCURRENCY
order by
G.DATE desc, G.DATEADDED desc;
-- Handle recognitions
exec dbo.USP_GROUP_RECOGNITIONSUMMARYGET
@CONSTITUENTID,
@RECOGNITIONTOTALNUMBER = @RECOGNITIONTOTALNUMBER output,
@RECOGNITIONTOTALAMOUNT = @RECOGNITIONTOTALAMOUNT output,
@RECOGNITIONTOTALGROUPAMOUNT = @RECOGNITIONTOTALGROUPAMOUNT output,
@RECOGNITIONTOTALGROUPMEMBERAMOUNT = @RECOGNITIONTOTALGROUPMEMBERAMOUNT output,
@RECOGNITIONAVERAGEAMOUNT = @RECOGNITIONAVERAGEAMOUNT output,
@RECOGNITIONMOSTFREQUENTAMOUNT = @RECOGNITIONMOSTFREQUENTAMOUNT output,
@RECOGNITIONTOTALYEARS = @RECOGNITIONTOTALYEARS output,
@RECOGNITIONCONSECUTIVEYEARS = @RECOGNITIONCONSECUTIVEYEARS output,
@RECOGNITIONGIVENSINCEFISCALYEAR = @RECOGNITIONGIVENSINCEFISCALYEAR output,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@SITEFILTERMODE = @SITEFILTERMODE,
@SITESSELECTED = @SITESSELECTED,
@SECURITYFEATUREID = @SECURITYFEATUREID,
@SECURITYFEATURETYPE = @SECURITYFEATURETYPE,
@RECOGNITIONGROUPMEMBERTAXCLAIMAMOUNT = @RECOGNITIONGROUPMEMBERTAXCLAIMAMOUNT output,
@CURRENCYID = @CURRENCYID;
--group member largest gift
select top 1
@RECOGNITIONLARGESTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=RR.CONSTITUENTID),
@RECOGNITIONLARGESTRECORDID = R.ID,
@RECOGNITIONLARGESTDATE = RR.EFFECTIVEDATE,
@RECOGNITIONLARGESTTYPECODE = R.TYPECODE,
@RECOGNITIONLARGESTTYPE = R.TYPE,
@RECOGNITIONLARGESTAMOUNT = RR.AMOUNTINCURRENCY
from
dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) RR
inner join dbo.FINANCIALTRANSACTIONLINEITEM RS on RR.REVENUESPLITID = RS.ID
inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = RS.ID
inner join dbo.FINANCIALTRANSACTION R on RS.FINANCIALTRANSACTIONID = R.ID
inner join dbo.GROUPMEMBER GM on RR.CONSTITUENTID = GM.MEMBERID
left join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
where @GROUPINCLUDESMEMBERGIVING = 1
and GM.GROUPID = @CONSTITUENTID
and R.DELETEDON is null
and RS.DELETEDON is null
and RS.TYPECODE <> 1
and
(R.TYPECODE = 1 or
(R.TYPECODE = 3) or -- Matching gift claim
(R.TYPECODE = 5 and RSE.APPLICATIONCODE = 0) or -- Donations on orders
(R.TYPECODE = 0 and RSE.APPLICATIONCODE in (0, 3, 18, 19)) or --Pledge or Payment (Gift or Recurring gift payment)
(R.TYPECODE = 7)) --Auction donation
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= RR.EFFECTIVEDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= RR.EFFECTIVEDATE))
or (GMDR.DATEFROM <= RR.EFFECTIVEDATE and GMDR.DATETO >= RR.EFFECTIVEDATE))
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = R.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)
)
)
order by
RR.AMOUNTINCURRENCY desc, RR.EFFECTIVEDATE desc, RR.DATEADDED desc;
-- group largest recognition
select top 1
@RECOGNITIONLARGESTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=RR.CONSTITUENTID),
@RECOGNITIONLARGESTRECORDID = R.ID,
@RECOGNITIONLARGESTDATE = RR.EFFECTIVEDATE,
@RECOGNITIONLARGESTTYPECODE = R.TYPECODE,
@RECOGNITIONLARGESTTYPE = R.TYPE,
@RECOGNITIONLARGESTAMOUNT = RR.AMOUNTINCURRENCY
from
dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) RR
inner join dbo.FINANCIALTRANSACTIONLINEITEM RS on RR.REVENUESPLITID = RS.ID
inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = RS.ID
inner join dbo.FINANCIALTRANSACTION R on RS.FINANCIALTRANSACTIONID = R.ID
where RR.CONSTITUENTID = @CONSTITUENTID
and R.DELETEDON is null
and RS.DELETEDON is null
and RS.TYPECODE <> 1
and
(R.TYPECODE = 1 or
(R.TYPECODE = 3) or -- Matching gift claim
(R.TYPECODE = 5 and RSE.APPLICATIONCODE = 0) or -- Donations on orders
(R.TYPECODE = 0 and RSE.APPLICATIONCODE in (0, 3, 18, 19)) or --Pledge or Payment (Gift or Recurring gift payment)
(R.TYPECODE = 7)) --Auction donation
and (@RECOGNITIONLARGESTAMOUNT is null or RR.AMOUNTINCURRENCY > @RECOGNITIONLARGESTAMOUNT)
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = R.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)
)
)
order by
RR.AMOUNTINCURRENCY desc, RR.EFFECTIVEDATE desc, RR.DATEADDED desc;
-- first group member recognition
select top 1
@RECOGNITIONFIRSTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=RR.CONSTITUENTID),
@RECOGNITIONFIRSTRECORDID = R.ID,
@RECOGNITIONFIRSTDATE = RR.EFFECTIVEDATE,
@RECOGNITIONFIRSTTYPECODE = R.TYPECODE,
@RECOGNITIONFIRSTTYPE = R.TYPE,
@RECOGNITIONFIRSTAMOUNT = RR.AMOUNTINCURRENCY
from
dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) RR
inner join dbo.FINANCIALTRANSACTIONLINEITEM RS on RR.REVENUESPLITID = RS.ID
inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = RS.ID
inner join dbo.FINANCIALTRANSACTION R on RS.FINANCIALTRANSACTIONID = R.ID
inner join dbo.GROUPMEMBER GM on RR.CONSTITUENTID = GM.MEMBERID
left join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
where @GROUPINCLUDESMEMBERGIVING = 1
and GM.GROUPID = @CONSTITUENTID
and R.DELETEDON is null
and RS.DELETEDON is null
and RS.TYPECODE <> 1
and
(R.TYPECODE = 1 or
(R.TYPECODE = 3) or -- Matching gift claim
(R.TYPECODE = 5 and RSE.APPLICATIONCODE = 0) or -- Donations on orders
(R.TYPECODE = 0 and RSE.APPLICATIONCODE in (0, 3, 18, 19)) or --Pledge or Payment (Gift or Recurring gift payment)
(R.TYPECODE = 7)) --Auction donation
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= RR.EFFECTIVEDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= RR.EFFECTIVEDATE))
or (GMDR.DATEFROM <= RR.EFFECTIVEDATE and GMDR.DATETO >= RR.EFFECTIVEDATE))
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = R.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)
)
)
order by
RR.EFFECTIVEDATE asc, RR.DATEADDED asc;
-- first group recognition
select top 1
@RECOGNITIONFIRSTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=RR.CONSTITUENTID),
@RECOGNITIONFIRSTRECORDID = R.ID,
@RECOGNITIONFIRSTDATE = RR.EFFECTIVEDATE,
@RECOGNITIONFIRSTTYPECODE = R.TYPECODE,
@RECOGNITIONFIRSTTYPE = R.TYPE,
@RECOGNITIONFIRSTAMOUNT = RR.AMOUNTINCURRENCY
from
dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) RR
inner join dbo.FINANCIALTRANSACTIONLINEITEM RS on RR.REVENUESPLITID = RS.ID
inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = RS.ID
inner join dbo.FINANCIALTRANSACTION R on RS.FINANCIALTRANSACTIONID = R.ID
where RR.CONSTITUENTID = @CONSTITUENTID
and R.DELETEDON is null
and RS.DELETEDON is null
and RS.TYPECODE <> 1
and
(R.TYPECODE = 1 or
(R.TYPECODE = 3) or -- Matching gift claim
(R.TYPECODE = 5 and RSE.APPLICATIONCODE = 0) or -- Donations on orders
(R.TYPECODE = 0 and RSE.APPLICATIONCODE in (0, 3, 18, 19)) or --Pledge or Payment (Gift or Recurring gift payment)
(R.TYPECODE = 7)) --Auction donation
and (@RECOGNITIONFIRSTDATE is null or RR.EFFECTIVEDATE < @RECOGNITIONFIRSTDATE)
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = R.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)
)
)
order by
RR.EFFECTIVEDATE asc, RR.DATEADDED asc;
-- group member latest recognition
select top 1
@RECOGNITIONLATESTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=RR.CONSTITUENTID),
@RECOGNITIONLATESTRECORDID = R.ID,
@RECOGNITIONLATESTDATE = RR.EFFECTIVEDATE,
@RECOGNITIONLATESTTYPECODE = R.TYPECODE,
@RECOGNITIONLATESTTYPE = R.TYPE,
@RECOGNITIONLATESTAMOUNT = RR.AMOUNTINCURRENCY
from
dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) RR
inner join dbo.FINANCIALTRANSACTIONLINEITEM RS on RR.REVENUESPLITID = RS.ID
inner join REVENUESPLIT_EXT RSE on RSE.ID = RS.ID
inner join dbo.FINANCIALTRANSACTION R on RS.FINANCIALTRANSACTIONID = R.ID
inner join dbo.GROUPMEMBER GM on RR.CONSTITUENTID = GM.MEMBERID
left join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
where @GROUPINCLUDESMEMBERGIVING = 1
and GM.GROUPID = @CONSTITUENTID
and R.DELETEDON is null
and RS.DELETEDON is null
and RS.TYPECODE <> 1
and
(R.TYPECODE = 1 or
(R.TYPECODE = 3) or -- Matching gift claim
(R.TYPECODE = 5 and RSE.APPLICATIONCODE = 0) or -- Donations on orders
(R.TYPECODE = 0 and RSE.APPLICATIONCODE in (0, 3, 18, 19)) or --Pledge or Payment (Gift or Recurring gift payment)
(R.TYPECODE = 7)) --Auction donation
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= RR.EFFECTIVEDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= RR.EFFECTIVEDATE))
or (GMDR.DATEFROM <= RR.EFFECTIVEDATE and GMDR.DATETO >= RR.EFFECTIVEDATE))
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = R.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)
)
)
order by
RR.EFFECTIVEDATE desc, RR.DATEADDED desc;
-- group latest recognition
select top 1
@RECOGNITIONLATESTCONSTITUENTNAME = (select NAME from dbo.CONSTITUENT where ID=RR.CONSTITUENTID),
@RECOGNITIONLATESTRECORDID = R.ID,
@RECOGNITIONLATESTDATE = RR.EFFECTIVEDATE,
@RECOGNITIONLATESTTYPECODE = R.TYPECODE,
@RECOGNITIONLATESTTYPE = R.TYPE,
@RECOGNITIONLATESTAMOUNT = RR.AMOUNTINCURRENCY
from
dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) RR
inner join dbo.FINANCIALTRANSACTIONLINEITEM RS on RR.REVENUESPLITID = RS.ID
inner join REVENUESPLIT_EXT RSE on RSE.ID = RS.ID
inner join dbo.FINANCIALTRANSACTION R on RS.FINANCIALTRANSACTIONID = R.ID
where RR.CONSTITUENTID = @CONSTITUENTID
and (@RECOGNITIONLATESTDATE is null or RR.EFFECTIVEDATE > @RECOGNITIONLATESTDATE)
and R.DELETEDON is null
and RS.DELETEDON is null
and RS.TYPECODE <> 1
and
(R.TYPECODE = 1 or
(R.TYPECODE = 3) or -- Matching gift claim
(R.TYPECODE = 5 and RSE.APPLICATIONCODE = 0) or -- Donations on orders
(R.TYPECODE = 0 and RSE.APPLICATIONCODE in (0, 3, 18, 19)) or --Pledge or Payment (Gift or Recurring gift payment)
(R.TYPECODE = 7)) --Auction donation
and exists
(
select top 1 RSSUB.ID from dbo.REVENUESPLIT RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.REVENUEID = R.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)
)
)
order by
RR.EFFECTIVEDATE desc, RR.DATEADDED desc;
select
@GROUPINCLUDESMEMBERGIVING as GROUPINCLUDESMEMBERGIVING,
@ISHOUSEHOLD as ISHOUSEHOLD,
@TOTALNUMBER as TOTALNUMBER,
@TOTALAMOUNT as TOTALAMOUNT,
@TOTALGROUPAMOUNT as TOTALGROUPAMOUNT,
@TOTALGROUPMEMBERAMOUNT as TOTALGROUPMEMBERAMOUNT,
@AVERAGEAMOUNT as AVERAGEAMOUNT,
@MOSTFREQUENTAMOUNT as MOSTFREQUENTAMOUNT,
@TOTALPLEDGEBALANCE as TOTALPLEDGEBALANCE,
@TOTALYEARS as TOTALYEARS,
@CONSECUTIVEYEARS as CONSECUTIVEYEARS,
@GIVENSINCEFISCALYEAR as GIVENSINCEFISCALYEAR,
@LARGESTID as LARGESTID,
@LARGESTRECORDID as LARGESTRECORDID,
@LARGESTDATE as LARGESTDATE,
@LARGESTTYPECODE as LARGESTTYPECODE,
@LARGESTTYPE as LARGESTTYPE,
@LARGESTAMOUNT as LARGESTAMOUNT,
@LARGESTPLEDGEBALANCE as LARGESTPLEDGEBALANCE,
@LARGESTSPLITS as LARGESTSPLITS,
@LARGESTCONSTITUENTNAME as LARGESTCONSTITUENTNAME,
@FIRSTID as FIRSTID,
@FIRSTRECORDID as FIRSTRECORDID,
@FIRSTDATE as FIRSTDATE,
@FIRSTTYPECODE as FIRSTTYPECODE,
@FIRSTTYPE as FIRSTTYPE,
@FIRSTAMOUNT as FIRSTAMOUNT,
@FIRSTPLEDGEBALANCE as FIRSTPLEDGEBALANCE,
@FIRSTSPLITS as FIRSTSPLITS,
@FIRSTCONSTITUENTNAME as FIRSTCONSTITUENTNAME,
@LATESTID as LATESTID,
@LATESTRECORDID as LATESTRECORDID,
@LATESTDATE as LATESTDATE,
@LATESTTYPECODE as LATESTTYPECODE,
@LATESTTYPE as LATESTTYPE,
@LATESTAMOUNT as LATESTAMOUNT,
@LATESTPLEDGEBALANCE as LATESTPLEDGEBALANCE,
@LATESTSPLITS as LATESTSPLITS,
@LATESTCONSTITUENTNAME as LATESTCONSTITUENTNAME,
@RECOGNITIONTOTALNUMBER as RECOGNITIONTOTALNUMBER,
@RECOGNITIONTOTALAMOUNT as RECOGNITIONTOTALAMOUNT,
@RECOGNITIONTOTALGROUPAMOUNT as RECOGNITIONTOTALGROUPAMOUNT,
@RECOGNITIONTOTALGROUPMEMBERAMOUNT as RECOGNITIONTOTALGROUPMEMBERAMOUNT,
@RECOGNITIONAVERAGEAMOUNT as RECOGNITIONAVERAGEAMOUNT,
@RECOGNITIONMOSTFREQUENTAMOUNT as RECOGNITIONMOSTFREQUENTAMOUNT,
@RECOGNITIONTOTALYEARS as RECOGNITIONTOTALYEARS,
@RECOGNITIONCONSECUTIVEYEARS as RECOGNITIONCONSECUTIVEYEARS,
@RECOGNITIONGIVENSINCEFISCALYEAR as RECOGNITIONGIVENSINCEFISCALYEAR,
@RECOGNITIONLARGESTRECORDID as RECOGNITIONLARGESTRECORDID,
@RECOGNITIONLARGESTDATE as RECOGNITIONLARGESTDATE,
@RECOGNITIONLARGESTTYPECODE as RECOGNITIONLARGESTTYPECODE,
@RECOGNITIONLARGESTTYPE as RECOGNITIONLARGESTTYPE,
@RECOGNITIONLARGESTAMOUNT as RECOGNITIONLARGESTAMOUNT,
@RECOGNITIONLARGESTCONSTITUENTNAME as RECOGNITIONLARGESTCONSTITUENTNAME,
@RECOGNITIONFIRSTRECORDID as RECOGNITIONFIRSTRECORDID,
@RECOGNITIONFIRSTDATE as RECOGNITIONFIRSTDATE,
@RECOGNITIONFIRSTTYPECODE as RECOGNITIONFIRSTTYPECODE,
@RECOGNITIONFIRSTTYPE as RECOGNITIONFIRSTTYPE,
@RECOGNITIONFIRSTAMOUNT as RECOGNITIONFIRSTAMOUNT,
@RECOGNITIONFIRSTCONSTITUENTNAME as RECOGNITIONFIRSTCONSTITUENTNAME,
@RECOGNITIONLATESTRECORDID as RECOGNITIONLATESTRECORDID,
@RECOGNITIONLATESTDATE as RECOGNITIONLATESTDATE,
@RECOGNITIONLATESTTYPECODE as RECOGNITIONLATESTTYPECODE,
@RECOGNITIONLATESTTYPE as RECOGNITIONLATESTTYPE,
@RECOGNITIONLATESTAMOUNT as RECOGNITIONLATESTAMOUNT,
@RECOGNITIONLATESTCONSTITUENTNAME as RECOGNITIONLATESTCONSTITUENTNAME,
@GROUPMEMBERTAXCLAIMAMOUNT as GROUPMEMBERTAXCLAIMAMOUNT,
@RECOGNITIONGROUPMEMBERTAXCLAIMAMOUNT as RECOGNITIONGROUPMEMBERTAXCLAIMAMOUNT,
@MATCHEDGIFTSAMOUNT as MATCHEDGIFTSAMOUNT,
CURRENCY.ISO4217,
CURRENCY.DECIMALDIGITS,
CURRENCY.CURRENCYSYMBOL,
CURRENCY.SYMBOLDISPLAYSETTINGCODE
from
-- Have a placeholder row so we can left join to CURRENCY and still have all other values returned
-- if @CURRENCYID is null
(
select 1 as PLACEHOLDERVALUE
) as PLACEHOLDERROW
left join dbo.CURRENCY on ID = @CURRENCYID;