USP_REPORT_GROUPFUNDRAISINGANDGIVING_GIVINGSUMMARY
Returns Giving Summary for Committee Fundraising and Giving Report
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_GIVINGSUMMARY
(
@GROUPID uniqueidentifier,
@REPORTUSERID nvarchar(128) = null,
@CURRENCYCODE smallint = null, --3 = My base, (null, 1) = Organization
@ALTREPORTUSERID nvarchar(128) = null
)
as
set nocount on;
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;
declare @ORIGINCODE 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();
select @ORIGINCODE = coalesce(ORGANIZATIONAMOUNTORIGINCODE, 0) from dbo.MULTICURRENCYCONFIGURATION;
select
GS.NAME,
CONSTITURL,
KEYNAME,
REVENUESUM,
REVENUECOUNT,
DATEFROM,
DATETO,
CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
CURRENCYPROPERTIES.CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
CURRENCYPROPERTIES.DECIMALDIGITS
from
-- Using a CTE so that all the values in the select list aren't returned. C.ID, C.KEYNAME, and C.FIRSTNAME
-- are included in the CTE for grouping/sorting purposes but don't need to be returned.
(
select
'http://www.blackbaud.com/CONSTITID?CONSTITID=' + CONVERT(nvarchar(36),C.ID) as CONSTITURL,
C.KEYNAME,
C.FIRSTNAME,
C.NAME,
cast(sum(cast(R.AMOUNTINCURRENCY as decimal(20,5)) - cast(coalesce(WO.AMOUNT, 0) as decimal(20,5))) as money) as REVENUESUM,
count(R.AMOUNTINCURRENCY) as REVENUECOUNT,
GMDR.DATEFROM,
GMDR.DATETO
from dbo.UFN_GROUP_GETGROUPANDMEMBERS_ONELEVELDEEP(@GROUPID, 1) GM
inner join dbo.CONSTITUENT C on GM.MEMBERID = C.ID
left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
left outer join dbo.UFN_REVENUE_GETAMOUNTSINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) R on
C.ID = R.CONSTITUENTID and
(GMDR.DATEFROM is null or GMDR.DATEFROM <= R.DATE) and
(GMDR.DATETO is null or GMDR.DATETO >= R.DATE)
left join
dbo.V_PLANNEDGIFTREVENUE_WITHADDITIONS PGR on PGR.REVENUEID = R.ID
left join
dbo.PLANNEDGIFT PG on PG.ID = PGR.PLANNEDGIFTID
left outer join
(select
WRITEOFF.REVENUEID,
sum(coalesce(INSTALLMENTSPLITWRITEOFF.AMOUNTINCURRENCY, 0)) AMOUNT
from
dbo.WRITEOFF
left join
dbo.UFN_INSTALLMENTSPLITWRITEOFF_GETAMOUNTSINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE, @ORIGINCODE, @CURRENCYCODE) INSTALLMENTSPLITWRITEOFF
on
INSTALLMENTSPLITWRITEOFF.WRITEOFFID = WRITEOFF.ID
group by
WRITEOFF.REVENUEID) WO on WO.REVENUEID = R.ID
where
(R.TRANSACTIONTYPECODE = 1 or --Pledge
(R.TRANSACTIONTYPECODE = 4 and PG.VEHICLECODE in (0,1,2,5,6,7,8,9)) or --Planned gift
((R.TRANSACTIONTYPECODE = 0 and exists(select top 1 ID from dbo.REVENUESPLIT where REVENUEID = R.ID and APPLICATIONCODE in (0, 3, 4))))) and --Payment (Gift or Recurring gift payment)
(@ISADMIN = 1 or
(@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, GM.MEMBERID, @APPUSER_IN_NOSECGROUPROLE) = 1)
and
(@APPUSER_IN_NONSITEROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, GM.MEMBERID, @APPUSER_IN_NOSITEROLE) = 1)
)
group by C.ID, C.KEYNAME, C.FIRSTNAME, C.NAME, GMDR.DATEFROM, GMDR.DATETO
) as GS
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES
order by GS.KEYNAME, GS.FIRSTNAME, CURRENCYPROPERTIES.ISO4217, CURRENCYPROPERTIES.CURRENCYSYMBOL, CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, CURRENCYPROPERTIES.DECIMALDIGITS