USP_REPORT_FAFFUNDRAISINGGROUPSHIERARCHY
FAF Fundraising Groups Hierarchy
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EventID | uniqueidentifier | IN | |
@GroupTypes | int | IN | |
@WEBURL | nvarchar(1200) | IN | |
@WEBURLGROUP | nvarchar(1200) | IN | |
@REPORTUSERID | nvarchar(128) | IN | |
@ALTREPORTUSERID | nvarchar(128) | IN | |
@SITEFILTERMODE | tinyint | IN | |
@SITESSELECTED | nvarchar(max) | IN | |
@GROUPID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_FAFFUNDRAISINGGROUPSHIERARCHY
(
@EventID uniqueidentifier,
@GroupTypes int = 4,
@WEBURL nvarchar(1200) = '',
@WEBURLGROUP nvarchar(1200) = '',
@REPORTUSERID nvarchar(128) = null,
@ALTREPORTUSERID nvarchar(128) = null,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED nvarchar(max) = null,
@GROUPID uniqueidentifier = null
)
as
begin
declare @CURRENTAPPUSERID as uniqueidentifier
set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);
declare @ISADMIN bit;
declare @SITESGRANTED table(
SITEID uniqueidentifier
)
insert into @SITESGRANTED
select SITEID
from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'30ec8b3f-2cde-416d-993e-c35ae722d54b', 21)
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
declare @EventIDP as uniqueidentifier set @EventIDP = (Select PRIORYEAREVENTID from EVENTEXTENSION where EVENTID = @EventID);
--select @EventIDP
with GroupFacts as (
--select distinct ID, MEMBERCOUNT Members, MEMBERCOUNT - MEMBERNEWCOUNT MembersRetained, PARTMEMBERCOUNTRETAINED PctMembersRetained, SUBGROUPCOUNT Teams, SUBGROUPRETAINEDCOUNT TeamsRetained, PARCSUBGROUPRETAINEDCOUNT PctTeamsRetained, COMMUNICATIONSENT CommsSent
select distinct ID, MEMBERNUMBER Members, MEMBERNUMBER - MEMBERNUMBERNEW MembersRetained, PARTMEMBERNUMBERRETAINED PctMembersRetained, SUBGROUPNUMBER Teams, SUBGROUPRETAINEDNUMBER TeamsRetained, PARTOFSUBGROUPRETAINED PctTeamsRetained, ( COMMUNICATIONSENTACTUAL + isnull( COMMUNICATIONSENTSOCIAL,0) ) CommsSent
from [V_QUERY_REGISTRANT_FUNDRAISINGGROUP]
where EVENTID = @EventID
), PriorGroupFacts as (
--select distinct RF.ID, MEMBERCOUNT Members, MEMBERCOUNT - MEMBERNEWCOUNT MembersRetained, PARTMEMBERCOUNTRETAINED PctMembersRetained, SUBGROUPCOUNT Teams, SUBGROUPRETAINEDCOUNT TeamsRetained, PARCSUBGROUPRETAINEDCOUNT PctTeamsRetained, COMMUNICATIONSENT CommsSent
select distinct RF.ID, MEMBERNUMBER Members, MEMBERNUMBER - MEMBERNUMBERNEW MembersRetained, PARTMEMBERNUMBERRETAINED PctMembersRetained, SUBGROUPNUMBER Teams, SUBGROUPRETAINEDNUMBER TeamsRetained, PARTOFSUBGROUPRETAINED PctTeamsRetained, ( COMMUNICATIONSENTACTUAL + isnull( COMMUNICATIONSENTSOCIAL,0) ) CommsSent
from [V_QUERY_REGISTRANT_FUNDRAISINGGROUP] RF
inner join TEAMEXTENSION P on P.TEAMFUNDRAISINGTEAMID = RF.ID
inner join TEAMEXTENSION C on C.TEAMCONSTITUENTID = P.TEAMCONSTITUENTID
where P.EVENTID = @EventIDP and C.EVENTID = @EventID
), RegistrantRoles as (
select * from UFN_REGISTRANT_GETFAFROLE(@EventID, null)
)
select CASE WHEN @WEBURL = '' THEN 'http://www.blackbaud.com/REGISTRANTID?REGISTRANTID=' + convert(nvarchar(36), R.ID)
ELSE @WEBURL + convert(nvarchar(36), R.ID) END as REGISTRANTID,
--'http://www.blackbaud.com/REGISTRANTID?REGISTRANTID=' + convert(nvarchar(36), R.ID) as REGISTRANTID,
C.NAME, C.ID as ConstituentID,
-- Think of TopLevel as 'Where the hierarchy stops rolling up'
case when H.HouseholdID is null and H.TEAMID is null and H.COMPANYID is null then 1 -- Independent Individuals
when TXH.TYPECODE = 3 and H.TEAMID is null and H.COMPANYID is null then 2 -- Independent Households
when TX.TYPECODE = 1 and H.COMPANYID is null then 3 -- Independent Teams
when TXC.TYPECODE = 2 then 4 -- Under a company
else 9 end as TopLevel, -- One can't imagine how one gets this result
ROLES.Role,
ROLES.isLeader,
RR.DATEPURCHASED RegistrationDate,
RX.FUNDRAISINGGOAL FRGoal, RX.TARGETFUNDRAISINGGOAL TgtGoal,
dbo.UFN_REVENUE_GETPARTICIPANTRAISEDTOTAL(R.ID, R.EVENTID) Raised,
RX.COMMUNICATIONGOAL CommsGoal,
dbo.UFN_FAFGETTOTALCOMMUNICATIONS(R.EVENTID, dbo.UFN_CLIENTUSERID_GET_BY_CONSTITUENT(R.CONSTITUENTID)) +
(SELECT COUNT(*)
FROM [FAFEVENTSOCIALNETWORKPOST]
WHERE registrantid = r.id
) CommsSent,
case when RP.ID is null then 0 else 1 end as ParticipantReturned,
--Team
CASE WHEN @WEBURLGROUP = '' THEN 'http://www.blackbaud.com/TEAMID?TEAMID=' + convert(nvarchar(36), H.TEAMID)
ELSE @WEBURLGROUP + convert(nvarchar(36), H.TEAMID) END as TEAMID,
--- 'http://www.blackbaud.com/TEAMID?TEAMID=' + convert(nvarchar(36), H.TEAMID) as TEAMID,
TX.TEAMCONSTITUENTID as TeamConstituentID,
H.TEAMNAME,
T.DATEADDED as TeamRegistrationDate,
T.GOAL TeamGoal,
dbo.UFN_REVENUE_GETTEAMRAISEDTOTAL(H.TEAMID, R.EVENTID) TeamRaised,
TGF.CommsSent TeamCommsSent,
TX.COMMUNICATIONGOAL TeamCommsGoal,
TGF.Members TeamTeamMembers,
TGFP.Members TeamPriorMembers,
case when TGFP.ID is null then 0 else 1 end as TeamReturned,
--TX.TEAMMEMBERGOAL,
--TX.PCTTEAMMEMBERRETENSION,
--Company
CASE WHEN @WEBURLGROUP = '' THEN 'http://www.blackbaud.com/COMPANYID?COMPANYID=' + convert(nvarchar(36), H.COMPANYID)
ELSE @WEBURLGROUP + convert(nvarchar(36), H.COMPANYID) END as COMPANYID,
--'http://www.blackbaud.com/COMPANYID?COMPANYID=' + convert(nvarchar(36), H.COMPANYID) as COMPANYID,
TXC.TEAMCONSTITUENTID as CompanyConstituentID,
H.COMPANYNAME,
TC.DATEADDED as CompanyRegistrationDate,
TC.GOAL CompanyGoal,
dbo.UFN_REVENUE_GETCOMPANYRAISEDTOTAL(H.COMPANYID, R.EVENTID) CompanyRaised,
CGF.CommsSent CompanyCommsSent,
TXC.COMMUNICATIONGOAL CompanyCommGoal,
CGF.Members CompanyTeamMembers,
CGFP.Members CompanyPriorMembers,
CGF.Teams CompanyTeams,
CGFP.Teams CompanyPriorTeams,
case when CGFP.ID is null then 0 else 1 end as CompanyReturned,
--Household
CASE WHEN @WEBURLGROUP = '' THEN 'http://www.blackbaud.com/HOUSEHOLDID?HOUSEHOLDID=' + convert(nvarchar(36), H.HOUSEHOLDID)
ELSE @WEBURLGROUP + convert(nvarchar(36), H.HOUSEHOLDID) END as HOUSEHOLDID,
-- 'http://www.blackbaud.com/HOUSEHOLDID?HOUSEHOLDID=' + convert(nvarchar(36), H.HOUSEHOLDID) as HOUSEHOLDID,
TXH.TEAMCONSTITUENTID as HouseholdConstituentID,
H.HouseholdName,
TH.DATEADDED as HouseholdRegistrationDate,
TH.GOAL HouseholdGoal,
dbo.UFN_REVENUE_GETHOUSEHOLDRAISEDTOTAL(H.HouseholdID, R.EVENTID) HouseholdRaised,
HGF.CommsSent HouseholdCommsSent,
TXH.COMMUNICATIONGOAL HouseholdCommsGoal,
HGF.Members HouseholdMembers,
HGFP.Members HouseholdPriorMembers,
case when HGFP.ID is null then 0 else 1 end as HouseholdReturned
--, H.*
--, RX.*
from REGISTRANT R
inner join CONSTITUENT C on R.CONSTITUENTID = C.ID
inner join REGISTRANTEXTENSION RX on R.ID = RX.REGISTRANTID
left join REGISTRANTREGISTRATION RR on R.ID = RR.REGISTRANTID
left join REGISTRANT RP on R.CONSTITUENTID = RP.CONSTITUENTID and RP.EVENTID = @EventIDP
--left join RegistrantRoles ROLES on ROLES.REGISTRANTID = R.ID
outer apply (select top 1 * from RegistrantRoles rrr where rrr.REGISTRANTID = R.ID) ROLES --(Make sure we only return 1 record)
outer apply UFN_FAF_GETTEAMCOMPANYHOUSEHOLDINFO_BY_REGISTRANT(@EventID, R.CONSTITUENTID) H
outer apply UFN_FAF_GETTEAMCOMPANYHOUSEHOLDINFO_BY_REGISTRANT(@EventIDP, R.CONSTITUENTID) HP
left join TEAMFUNDRAISINGTEAM T on T.ID = H.TEAMID
left join TEAMFUNDRAISINGTEAM TC on TC.ID = H.COMPANYID
left join TEAMFUNDRAISINGTEAM TH on TH.ID = H.HouseholdID
left join GroupFacts TGF on TGF.id = H.TEAMID
left join PriorGroupFacts TGFP on TGFP.id = HP.TEAMID
left join GroupFacts HGF on HGF.id = H.HouseholdID
left join PriorGroupFacts HGFP on HGFP.id = HP.HouseholdID
left join GroupFacts CGF on CGF.id = H.COMPANYID
left join PriorGroupFacts CGFP on CGFP.id = HP.COMPANYID
left join TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = H.TEAMID
left join TEAMEXTENSION TXC on TXC.TEAMFUNDRAISINGTEAMID = H.COMPANYID
left join TEAMEXTENSION TXH on TXH.TEAMFUNDRAISINGTEAMID = H.HouseholdID
where R.EVENTID = @EventID
--and TopLevel = ISNULL(@GroupType, TopLevel)
-- site filter
and
(
@SITEFILTERMODE = 0
or exists(
select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(R.EVENTID) EVENTSITE
where EVENTSITE.SITEID in (select SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED))
)
)
-- Check site security
and
exists(
select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(R.EVENTID) EVENTSITE
where (@ISADMIN = 1 or exists (select 1 from @SITESGRANTED SITESGRANTED where SITESGRANTED.SITEID=[EVENTSITE].[SITEID] or (SITESGRANTED.SITEID is null and [EVENTSITE].[SITEID] is null))
))
and ( ISNULL( @GROUPID , T.ID ) = T.ID OR ISNULL( @GROUPID , TC.ID ) = TC.ID OR ISNULL( @GROUPID , TH.ID ) = TH.ID
OR ( ISNULL(@GROUPID, @GROUPID ) is null and ROLES.Role = 'Individual' ) )
order by TopLevel desc, H.COMPANYNAME, H.TEAMNAME, H.HouseholdName, isLeader desc, C.KEYNAME
end