USP_DATALIST_CONSTITUENTGROUPMATCHEDGIFTS
This datalist returns a list of a the matched gifts along with claim history for a constituent group.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@SITEFILTERMODE | tinyint | IN | Sites |
@SITESSELECTED | xml | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@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 |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENTGROUPMATCHEDGIFTS
(
@CONSTITUENTID uniqueidentifier,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null,
@CURRENCYCODE tinyint = 2
)
as
set nocount on;
declare @CURRENCYID uniqueidentifier
declare @ORGTOMYBASEEXCHANGERATE uniqueidentifier = null
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;
declare @GROUPINCLUDESMEMBERGIVING bit = null;
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;
declare @MEMBERREVENUE table
(
REVENUEID uniqueidentifier
)
if @GROUPINCLUDESMEMBERGIVING = 1
begin
insert into @MEMBERREVENUE
select
FINANCIALTRANSACTION.ID
from
dbo.FINANCIALTRANSACTION
inner join
dbo.GROUPMEMBER on GROUPMEMBER.MEMBERID = FINANCIALTRANSACTION.CONSTITUENTID
left join
dbo.GROUPMEMBERDATERANGE on GROUPMEMBERDATERANGE.GROUPMEMBERID = GROUPMEMBER.ID
where
GROUPMEMBER.GROUPID = @CONSTITUENTID
and
((GROUPMEMBERDATERANGE.DATEFROM is null or FINANCIALTRANSACTION.DATE >= GROUPMEMBERDATERANGE.DATEFROM)
and (GROUPMEMBERDATERANGE.DATETO is null or FINANCIALTRANSACTION.DATE <= GROUPMEMBERDATERANGE.DATETO))
end;
with CONSTITUENTREVENUE_CTE as
(
select
FINANCIALTRANSACTION.ID,
FINANCIALTRANSACTION.CONSTITUENTID,
FINANCIALTRANSACTION.TYPE,
FINANCIALTRANSACTION.BASEAMOUNT as AMOUNT,
FINANCIALTRANSACTION.TRANSACTIONAMOUNT,
cast(FINANCIALTRANSACTION.DATE as datetime) DATE,
FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID) BASECURRENCYID,
REVENUE_EXT.GIVENANONYMOUSLY
from
dbo.FINANCIALTRANSACTION
inner join dbo.REVENUE_EXT on REVENUE_EXT.ID = FINANCIALTRANSACTION.ID
inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
where
(FINANCIALTRANSACTION.CONSTITUENTID = @CONSTITUENTID or FINANCIALTRANSACTION.ID in (select REVENUEID from @MEMBERREVENUE))
and exists
(
select top 1 RSSUB.ID from dbo.FINANCIALTRANSACTIONLINEITEM RSSUB
cross apply dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(RSSUB.ID) REVSITES
where RSSUB.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
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
CONSTITUENTREVENUE_CTE.ID as REVENUEID,
CONSTITUENT.ID as CONSTITUENTID,
CONSTITUENT.NAME as CONSTITUENTNAME,
null as MGCLAIMID,
'Original gift' as TYPE,
CONSTITUENTREVENUE_CTE.DATE as DATE,
null as MGORGID,
null as MGORGNAME,
case @CURRENCYCODE
when 2 then CONSTITUENTREVENUE_CTE.TRANSACTIONAMOUNT
when 1 then dbo.UFN_REVENUE_GETAMOUNTINCURRENCY(CONSTITUENTREVENUE_CTE.ID,@CURRENCYID)
when 3 then dbo.UFN_REVENUE_GETAMOUNTINCURRENCY(CONSTITUENTREVENUE_CTE.ID,@CURRENCYID)
else CONSTITUENTREVENUE_CTE.AMOUNT
end as AMOUNT,
null as MGCLAIMAMOUNT,
null as PARENT,
row_number() over (order by CONSTITUENTREVENUE_CTE.DATE, CONSTITUENTREVENUE_CTE.AMOUNT desc) as SEQUENCE,
dbo.UFN_REVENUE_BUILDSITELIST(CONSTITUENTREVENUE_CTE.ID) as SITES,
case @CURRENCYCODE
when 2 then CONSTITUENTREVENUE_CTE.TRANSACTIONCURRENCYID
when 0 then CONSTITUENTREVENUE_CTE.BASECURRENCYID
else @CURRENCYID
end as DISPLAYCURRENCY,
case when CONSTITUENTREVENUE_CTE.GIVENANONYMOUSLY = 1 then 'catalog:Blackbaud.AppFx.Fundraising.Catalog.dll,Blackbaud.AppFx.Fundraising.Catalog.gift_anonymous_16.png' else '' end IMAGEKEY
from
CONSTITUENTREVENUE_CTE
inner join
dbo.CONSTITUENT on CONSTITUENT.ID = CONSTITUENTREVENUE_CTE.CONSTITUENTID
where exists(select top(1) ID from dbo.REVENUEMATCHINGGIFT where REVENUEMATCHINGGIFT.MGSOURCEREVENUEID = CONSTITUENTREVENUE_CTE.ID)
union all
select
REVENUE.ID as REVENUEID,
null as CONSTITUENTID,
null as CONSTITUENTNAME,
REVENUE.ID as MGCLAIMID,
REVENUE.TRANSACTIONTYPE as TYPE,
REVENUE.DATE as DATE,
CONSTITUENT.ID as MGORGID,
CONSTITUENT.NAME as MGORGNAME,
case @CURRENCYCODE
when 2 then (select TRANSACTIONAMOUNT from dbo.REVENUE where ID=REVENUEMATCHINGGIFT.ID)
when 1 then dbo.UFN_REVENUE_GETAMOUNTINCURRENCY(REVENUE.ID,@CURRENCYID)
when 3 then dbo.UFN_REVENUE_GETAMOUNTINCURRENCY(REVENUE.ID,@CURRENCYID)
else REVENUE.AMOUNT
end as AMOUNT,
case @CURRENCYCODE
when 2 then dbo.UFN_PLEDGE_GETBALANCEINCURRENCY(REVENUE.ID, REVENUE.TRANSACTIONCURRENCYID)
when 0 then dbo.UFN_PLEDGE_GETBALANCEINCURRENCY(REVENUE.ID, REVENUE.BASECURRENCYID)
else dbo.UFN_PLEDGE_GETBALANCEINCURRENCY(REVENUE.ID, @CURRENCYID)
end as MGCLAIMBALANCE,
REVENUEMATCHINGGIFT.MGSOURCEREVENUEID as PARENT,
row_number() over (order by REVENUE.DATE, REVENUE.AMOUNT desc) as SEQUENCE,
null as SITES,
case @CURRENCYCODE
when 2 then REVENUE.TRANSACTIONCURRENCYID
when 0 then REVENUE.BASECURRENCYID
else @CURRENCYID
end as DISPLAYCURRENCY,
case when REVENUE.GIVENANONYMOUSLY = 1 then 'catalog:Blackbaud.AppFx.Fundraising.Catalog.dll,Blackbaud.AppFx.Fundraising.Catalog.gift_anonymous_16.png' else '' end IMAGEKEY
from
dbo.REVENUEMATCHINGGIFT
inner join
CONSTITUENTREVENUE_CTE on CONSTITUENTREVENUE_CTE.ID = REVENUEMATCHINGGIFT.MGSOURCEREVENUEID
inner join
dbo.REVENUE on REVENUE.ID = REVENUEMATCHINGGIFT.ID
inner join
dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID