USP_DATALIST_CONSTITUENTPROFILEDASHBOARDGROUPMEMBERGIVINGSUMMARY
List of constituent group's members giving for use in the constituent profile report.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Constituent |
@ISVISIBLE | bit | IN | Visible |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@SELECTEDCURRENCYID | uniqueidentifier | IN | Selected currency ID |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENTPROFILEDASHBOARDGROUPMEMBERGIVINGSUMMARY
(
@CONSTITUENTID uniqueidentifier,
@ISVISIBLE bit = 1,
@CURRENTAPPUSERID uniqueidentifier,
@SELECTEDCURRENCYID uniqueidentifier = null
)
as
set nocount on;
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
declare @APPUSER_IN_NONSITEROLE bit;
declare @APPUSER_IN_NOSITEROLE bit;
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);
if @ISVISIBLE = 1
begin
select
NF.NAME,
REVENUESUM,
REVENUECOUNT,
DATEFROM,
DATETO
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
C.ID,
C.KEYNAME,
C.FIRSTNAME,
cast(sum(cast(dbo.UFN_REVENUE_GETAMOUNTINCURRENCY(R.ID, @SELECTEDCURRENCYID) as decimal(20,5)) - cast(coalesce(WO.AMOUNT, 0) as decimal(20,5))) as money) as REVENUESUM,
count(R.AMOUNT) as REVENUECOUNT,
GMDR.DATEFROM,
GMDR.DATETO
from dbo.GROUPMEMBER 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.REVENUE 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 outer join
(select
WRITEOFF.REVENUEID,
sum(coalesce(dbo.UFN_INSTALLMENTSPLITWRITEOFF_GETAMOUNTINCURRENCY(INSTALLMENTSPLITWRITEOFF.ID, @SELECTEDCURRENCYID),0)) AMOUNT
from
dbo.WRITEOFF
left join
dbo.INSTALLMENTSPLITWRITEOFF
on
INSTALLMENTSPLITWRITEOFF.WRITEOFFID = WRITEOFF.ID
group by
WRITEOFF.REVENUEID) WO on WO.REVENUEID = R.ID
where
GM.GROUPID = @CONSTITUENTID and
(R.TRANSACTIONTYPECODE = 1 or --Pledge
((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, GMDR.DATEFROM, GMDR.DATETO
) as GS
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(GS.ID) NF
order by GS.KEYNAME, GS.FIRSTNAME
end