USP_REPORT_GROUPFUNDRAISINGANDGIVING_RECOGNITIONSUMMARY
Stored procedure to get recognitions for committees
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@GROUPID | uniqueidentifier | IN | |
@REPORTUSERID | nvarchar(128) | IN | |
@CURRENCYCODE | smallint | IN | |
@ALTREPORTUSERID | nvarchar(128) | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_GROUPFUNDRAISINGANDGIVING_RECOGNITIONSUMMARY
(
@GROUPID uniqueidentifier,
@REPORTUSERID nvarchar(128) = null,
@CURRENCYCODE smallint = null, --3 = My base, (null, 1) = Organization
@ALTREPORTUSERID nvarchar(128) = null
)
as
declare @CURRENTAPPUSERID uniqueidentifier
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
declare @APPUSER_IN_NONSITEROLE bit;
declare @APPUSER_IN_NOSITEROLE bit;
set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);
declare @SELECTEDCURRENCYID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
if @CURRENCYCODE = 3
begin
if dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID) is not null
begin
select @SELECTEDCURRENCYID = CURRENCYSET.BASECURRENCYID,
@DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
@ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
from dbo.CURRENCYSET
inner join dbo.CURRENCY on CURRENCYSET.BASECURRENCYID = CURRENCY.ID
where
CURRENCYSET.ID = dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID);
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
end
else
begin
select @SELECTEDCURRENCYID = CURRENCYSET.BASECURRENCYID,
@DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
@ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
from dbo.CURRENCYSET
inner join dbo.CURRENCY on CURRENCYSET.BASECURRENCYID = CURRENCY.ID
where
CURRENCYSET.ID = dbo.UFN_CURRENCYSET_GETAPPUSERDEFAULTCURRENCYSET();
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
end
end
else
select
@ORGANIZATIONCURRENCYID = CURRENCY.ID,
@SELECTEDCURRENCYID = CURRENCY.ID,
@DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
@ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
from
dbo.CURRENCY
where
CURRENCY.ID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
with REVENUESOLICITOR_CTE as
(select REVENUESOLICITOR.ID,
REVENUESOLICITOR.REVENUESPLITID,
REVENUESOLICITOR.CONSTITUENTID,
REVENUESOLICITORBULK.AMOUNTINCURRENCY as AMOUNT,
REVENUE.CONSTITUENTID DONORID,
REVENUE.ID REVENUEID,
CONSTITUENT.KEYNAME
from dbo.REVENUESOLICITOR
inner join dbo.UFN_REVENUESOLICITOR_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) REVENUESOLICITORBULK on REVENUESOLICITOR.ID = REVENUESOLICITORBULK.ID
inner join dbo.REVENUESPLIT
on REVENUESPLIT.ID = REVENUESOLICITOR.REVENUESPLITID
inner join dbo.REVENUE
on REVENUE.ID = REVENUESPLIT.REVENUEID
inner join dbo.CONSTITUENT
on REVENUESOLICITOR.CONSTITUENTID = CONSTITUENT.ID
left join
dbo.V_PLANNEDGIFTREVENUE_WITHADDITIONS PGR on PGR.REVENUEID = REVENUE.ID
left join
dbo.PLANNEDGIFT PG on PG.ID = PGR.PLANNEDGIFTID
where
(REVENUE.TRANSACTIONTYPECODE = 1 or --Pledge
REVENUE.TRANSACTIONTYPECODE = 3 or --MG Pledge
(REVENUE.TRANSACTIONTYPECODE = 4 and PG.VEHICLECODE in (0,1,2,5,6,7,8,9)) or --Planned gift
((REVENUE.TRANSACTIONTYPECODE = 0 and exists(select top 1 ID from dbo.REVENUESPLIT where REVENUEID = REVENUE.ID and APPLICATIONCODE in (0, 3, 4))))) and --Payment (Gift or Recurring gift payment)
exists(select RSSUB.ID from REVENUESOLICITOR RSSUB
where RSSUB.REVENUESPLITID = REVENUESOLICITOR.REVENUESPLITID
and RSSUB.CONSTITUENTID = @GROUPID)
and
(
REVENUESOLICITOR.CONSTITUENTID = @GROUPID
or
exists(select ID from dbo.GROUPMEMBER where GROUPMEMBER.GROUPID = @GROUPID and GROUPMEMBER.MEMBERID = REVENUESOLICITOR.CONSTITUENTID)
)
and
(@ISADMIN = 1 or
(@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, REVENUESOLICITOR.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1)
and
(@APPUSER_IN_NONSITEROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, REVENUESOLICITOR.CONSTITUENTID, @APPUSER_IN_NOSITEROLE) = 1)
)
)
select 'http://www.blackbaud.com/CONSTITID?CONSTITID=' + CONVERT(nvarchar(36),CONSTITUENTID) as CONSTITURL,
dbo.UFN_CONSTITUENT_BUILDNAME(CONSTITUENTID) NAME,
KEYNAME,
SUM(AMOUNT) AMT,
COUNT(distinct DONORID) DONORCOUNT,
COUNT(distinct REVENUEID) GIFTCOUNT,
MAX(AMOUNT) LARGESTGIFT,
CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
CURRENCYPROPERTIES.CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
CURRENCYPROPERTIES.DECIMALDIGITS
from REVENUESOLICITOR_CTE
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES
where not exists(select ID from REVENUESOLICITOR_CTE RSSUB where RSSUB.CONSTITUENTID <> @GROUPID and RSSUB.REVENUESPLITID = REVENUESOLICITOR_CTE.REVENUESPLITID)
group by CONSTITUENTID, KEYNAME, CURRENCYPROPERTIES.ISO4217, CURRENCYPROPERTIES.CURRENCYSYMBOL, CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, CURRENCYPROPERTIES.DECIMALDIGITS
union
select 'http://www.blackbaud.com/CONSTITID?CONSTITID=' + CONVERT(nvarchar(36),CONSTITUENTID) as CONSTITURL,
dbo.UFN_CONSTITUENT_BUILDNAME(CONSTITUENTID),
KEYNAME,
SUM(AMOUNT) AMT,
COUNT(distinct DONORID) DONORCOUNT,
COUNT(distinct REVENUEID) GIFTCOUNT,
MAX(AMOUNT) LARGESTGIFT,
CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
CURRENCYPROPERTIES.CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
CURRENCYPROPERTIES.DECIMALDIGITS
from REVENUESOLICITOR_CTE
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES
where CONSTITUENTID <> @GROUPID
group by CONSTITUENTID, KEYNAME, CURRENCYPROPERTIES.ISO4217, CURRENCYPROPERTIES.CURRENCYSYMBOL, CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, CURRENCYPROPERTIES.DECIMALDIGITS
order by KEYNAME;