USP_REPORT_FAFLAPSEDFUNDRAISINGGROUPS

Lapsed Top Level Fundraising Groups

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

Definition

Copy


CREATE procedure dbo.USP_REPORT_FAFLAPSEDFUNDRAISINGGROUPS
(
    @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 
)
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,'24ec10b8-ba27-4700-bddc-6a66de2819fd', 21)

  set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);


  declare @CURRENTEVENTID as uniqueidentifier 
 set @CURRENTEVENTID = @EVENTID;

declare @EventIDP as uniqueidentifier set @EventIDP = (Select PRIORYEAREVENTID from EVENTEXTENSION where EVENTID = @EventID)
declare @EventIDPP as uniqueidentifier set @EventIDPP = (Select PRIORYEAREVENTID from EVENTEXTENSION where EVENTID = @EventIDP)

declare  @GroupFacts as table (id uniqueidentifier, Members int, MembersRetained int, PctMembersRetained float, Teams int, TeamsRetained int, PctTeamsRetained float, CommsSent int)
insert into @GroupFacts (id, Members, MembersRetained, PctMembersRetained, Teams, TeamsRetained, PctTeamsRetained, CommsSent)
--select distinct ID, MEMBERCOUNT, MEMBERCOUNT - MEMBERNEWCOUNT, PARTMEMBERCOUNTRETAINED, SUBGROUPCOUNT, SUBGROUPRETAINEDCOUNT, PARCSUBGROUPRETAINEDCOUNT, COMMUNICATIONSENT

select distinct ID, MEMBERNUMBER Members, MEMBERNUMBER - MEMBERNUMBERNEW MembersRetained, PARTMEMBERNUMBERRETAINED PctMembersRetained, SUBGROUPNUMBER Teams, SUBGROUPRETAINEDNUMBER TeamsRetained, PARTOFSUBGROUPRETAINED PctTeamsRetained, COMMUNICATIONSENTACTUAL CommsSent
from [V_QUERY_REGISTRANT_FUNDRAISINGGROUP]
where EVENTID = @EventIDP

declare  @PriorGroupFacts as table (id uniqueidentifier, Members int, MembersRetained int, PctMembersRetained float, Teams int, TeamsRetained int, PctTeamsRetained float, CommsSent int)
insert into @PriorGroupFacts (id, Members, MembersRetained, PctMembersRetained, Teams, TeamsRetained, PctTeamsRetained, CommsSent)
--select distinct ID, MEMBERCOUNT, MEMBERCOUNT - MEMBERNEWCOUNT, PARTMEMBERCOUNTRETAINED, SUBGROUPCOUNT, SUBGROUPRETAINEDCOUNT, PARCSUBGROUPRETAINEDCOUNT, COMMUNICATIONSENT

select distinct ID, MEMBERNUMBER Members, MEMBERNUMBER - MEMBERNUMBERNEW MembersRetained, PARTMEMBERNUMBERRETAINED PctMembersRetained, SUBGROUPNUMBER Teams, SUBGROUPRETAINEDNUMBER TeamsRetained, PARTOFSUBGROUPRETAINED PctTeamsRetained, COMMUNICATIONSENTACTUAL CommsSent
from [V_QUERY_REGISTRANT_FUNDRAISINGGROUP]
where EVENTID = @EventIDPP

DECLARE @PreviousEventName nvarchar(200)  
SET @PreviousEventName = (SELECT NAME FROM Event WHERE ID = @EventIDP)   


declare @IncludeCompany as int    set @IncludeCompany =    case when @GroupTypes = 4 then 1 when @GroupTypes = 2 then 1 else 0  end 
declare @IncludeTeam as int       set @IncludeTeam =       case when @GroupTypes = 4 then 1 when @GroupTypes = 1 then 1 else 0  end 
declare @IncludeIndividual as int set @IncludeIndividual = case when @GroupTypes = 4 then 1 when @GroupTypes = 0 then 1 else 0  end 
declare @IncludeHousehold as int  set @includeHousehold =  case when @GroupTypes = 4 then 1 when @GroupTypes = 3 then 1 else 0  end 

--

--Orphan Individuals

--

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,

'' as GROUPID,
C.NAME, R.CONSTITUENTID as ConstituentID,
Case when RP.ID is null then 0 else 1 end as Returner,
'Individual' as Type, 0 as TypeCode,
RR.DATEPURCHASED as RegistrationDate,
dbo.UFN_REVENUE_GETPARTICIPANTRAISEDTOTAL(R.ID, R.EVENTID) FundsRaised,
RX.TARGETFUNDRAISINGGOAL FundsGoal,
dbo.UFN_FAFGETTOTALCOMMUNICATIONS(R.EVENTID, dbo.UFN_CLIENTUSERID_GET_BY_CONSTITUENT(R.CONSTITUENTID)) CommsSent,
RX.COMMUNICATIONGOAL CommsGoal,
null Teams,
null TeamsGoal,
null TeamsPrior,
null TeamsRetained,
null TeamsPctRetained,
null TeamsRetentionGoal,
null TeamsToRetain,
null TeamMembers,
null TeamMembersGoal,
null TeamMembersPrior,
null TeamMembersRetained,
null TeamMembersPctRetained,
null TeamMemberRetentionGoal,
null TeamMembersToRetain,
@PreviousEventName as PreviousEventName
from (select * from REGISTRANT where EVENTID = @EventIDP and CONSTITUENTID not in (select CONSTITUENTID from REGISTRANT where EVENTID = @EventID)) R 
inner join CONSTITUENT C on R.CONSTITUENTID = C.ID
inner join REGISTRANTEXTENSION RX on R.ID = RX.REGISTRANTID
left join REGISTRANTREGISTRATION RR on RR.REGISTRANTID = R.ID
cross apply UFN_FAF_GETTEAMCOMPANYHOUSEHOLDINFO_BY_REGISTRANT(R.EVENTID, R.CONSTITUENTID) H
left join REGISTRANT RP on RP.CONSTITUENTID = R.CONSTITUENTID and RP.EVENTID = @EventIDPP
where 1 = 1 
--and R.EVENTID = @EventIDP

and H.COMPANYID is null 
and H.TEAMID is null
and H.HouseholdID is null
and 1 = @IncludeIndividual
  -- site filter  

 and  
      (  
        @SITEFILTERMODE = 0  
        or exists(  
            select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(@CURRENTEVENTID) 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(@CURRENTEVENTID) 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))  
  ))  
union
--

--Orphan Teams

--

select '' as REGISTRANTID,
        CASE WHEN @WEBURLGROUP = '' THEN 'http://www.blackbaud.com/GROUPID?GROUPID='  + convert(nvarchar(36), TFT.ID)
        ELSE @WEBURLGROUP +  convert(nvarchar(36), TFT.ID) END as GROUPID,
-- 'http://www.blackbaud.com/GROUPID?GROUPID=' + convert(nvarchar(36), TFT.ID) as GROUPID,

TFT.NAME, TX.TEAMCONSTITUENTID as ConstituentID,
Case when TXP.ID is null then 0 else 1 end as Returner,
TX.TYPE as Type, 2 as TypeCode,
TFT.DATEADDED as RegistrationDate,
dbo.UFN_REVENUE_GETTEAMRAISEDTOTAL(TFT.ID, TX.EVENTID) FundsRaised,
TX.TARGETFUNDRAISINGGOAL,
GF.CommsSent CommsSent,
TX.COMMUNICATIONGOAL CommsGoal,
null Teams,
null TeamsGoal,
null TeamsPrior,
null TeamsRetained,
null TeamsPctRetained,
null TeamsRetentionGoal,
null TeamsToRetain,
GF.Members TeamMembers,
PGF.Members TeamMembersPrior,
TX.TEAMMEMBERGOAL TeamMembersGoal,
GF.MembersRetained TeamMembersRetained,
GF.PctMembersRetained TeamMembersPctRetained,
TX.PCTTEAMMEMBERRETENSION TeamMemberRetentionGoal,
PGF.Members * TX.PCTTEAMMEMBERRETENSION TeamMembersToRetain,
@PreviousEventName AS PreviousEventName
--from TEAMFUNDRAISINGTEAM TFT

from (select * from TEAMFUNDRAISINGTEAM where ID in (select TEAMFUNDRAISINGTEAMID from TEAMEXTENSION where EVENTID = @EventIDP and TEAMCONSTITUENTID not in (select TEAMCONSTITUENTID from TEAMEXTENSION where EVENTID = @EventID))) TFT
inner join TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = TFT.ID
cross apply UFN_FAF_GETTEAMHIEARACHY(TFT.ID) TH
left join TEAMEXTENSION TXP on TXP.TEAMCONSTITUENTID = TX.TEAMCONSTITUENTID and TXP.EVENTID = @EventIDPP
left join @GroupFacts as GF on GF.ID = TFT.ID
left join @PriorGroupFacts as PGF on PGF.ID = TFT.ID
where TX.TYPECODE = 1 
and TH.ParentTeamID is null
--and TX.EVENTID = @EventID

and 1 = @IncludeTeam
  -- site filter  

 and  
      (  
        @SITEFILTERMODE = 0  
        or exists(  
            select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(@CURRENTEVENTID) 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(@CURRENTEVENTID) 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))  
  ))  
union
--

--I guess Companies are never orphans, but always included

--

select '' as REGISTRANTID,
        CASE WHEN @WEBURLGROUP = '' THEN 'http://www.blackbaud.com/GROUPID?GROUPID=' + convert(nvarchar(36), TFT.ID)
        ELSE @WEBURLGROUP +  convert(nvarchar(36), TFT.ID) END as GROUPID,
-- 'http://www.blackbaud.com/GROUPID?GROUPID=' + convert(nvarchar(36), TFT.ID) as GROUPID,

TFT.NAME, TX.TEAMCONSTITUENTID as ConstituentID,
Case when TXP.ID is null then 0 else 1 end as Returner,
TX.TYPE as Type, 3 as TypeCode,
TFT.DATEADDED as RegistrationDate,
dbo.UFN_REVENUE_GETCOMPANYRAISEDTOTAL(TFT.ID, TX.EVENTID) FundsRaised,
TX.TARGETFUNDRAISINGGOAL,
GF.CommsSent CommsSent,
TX.COMMUNICATIONGOAL CommsGoal,
GF.Teams Teams,
TX.TEAMRECRUITMENTGOAL TeamsGoal,
PGF.Teams TeamsPrior,
GF.TeamsRetained TeamsRetained,
GF.PctTeamsRetained TeamsPctRetained,
TX.PCTTEAMSRETENSION TeamsRetentionGoal,
PGF.Teams * TX.PCTTEAMSRETENSION TeamsToRetain,
GF.Members TeamMembers,
TX.TEAMMEMBERGOAL TeamMembersGoal,
PGF.Members TeamMembersPrior,
GF.MembersRetained TeamMembersRetained,
GF.PctTeamsRetained TeamMembersPctRetained,
TX.PCTTEAMMEMBERRETENSION TeamMemberRetentionGoal,
PGF.Members * TX.PCTTEAMMEMBERRETENSION TeamMembersToRetain,
@PreviousEventName AS PreviousEventName
--from TEAMFUNDRAISINGTEAM TFT

from (select * from TEAMFUNDRAISINGTEAM where ID in (select TEAMFUNDRAISINGTEAMID from TEAMEXTENSION where EVENTID = @EventIDP and TEAMCONSTITUENTID not in (select TEAMCONSTITUENTID from TEAMEXTENSION where EVENTID = @EventID))) TFT
inner join TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = TFT.ID
cross apply UFN_FAF_GETTEAMHIEARACHY(TFT.ID) TH
left join TEAMEXTENSION TXP on TXP.TEAMCONSTITUENTID = TX.TEAMCONSTITUENTID and TXP.EVENTID = @EventIDPP
left join @GroupFacts as GF on GF.ID = TFT.ID
left join @PriorGroupFacts as PGF on PGF.ID = TFT.ID
where TX.TYPECODE = 2
and 1 = @IncludeCompany
  -- site filter  

 and  
      (  
        @SITEFILTERMODE = 0  
        or exists(  
            select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(TX.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(TX.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))  
  ))  
union
--

--Orphan Households

--

select '' as REGISTRANTID,
        CASE WHEN @WEBURLGROUP = '' THEN 'http://www.blackbaud.com/GROUPID?GROUPID=' + convert(nvarchar(36), TFT.ID)
        ELSE @WEBURLGROUP +  convert(nvarchar(36), TFT.ID) END as GROUPID,
-- 'http://www.blackbaud.com/GROUPID?GROUPID=' + convert(nvarchar(36), TFT.ID) as GROUPID,

TFT.NAME, TX.TEAMCONSTITUENTID as ConstituentID,
Case when TXP.ID is null then 0 else 1 end as Returner,
TX.TYPE as Type, 1 as TypeCode,
TFT.DATEADDED as RegistrationDate,
dbo.UFN_REVENUE_GETHOUSEHOLDRAISEDTOTAL(TFT.ID, TX.EVENTID) FundsRaised,
TX.TARGETFUNDRAISINGGOAL,
GF.CommsSent CommsSent,
TX.COMMUNICATIONGOAL CommsGoal,
null Teams,
null TeamsGoal,
null TeamsPrior,
null TeamsRetained,
null TeamPctRetained,
null TeamsRetentionGoal,
null TeamsToRetain,
null TeamMembers,
null TeamMembersGoal,
null TeamMembersPrior,
null TeamMembersRetained,
null TeamMembersPctRetained,
null TeamMemberRetentionGoal,
null TeamMembersToRetain,
@PreviousEventName AS PreviousEventName
--from TEAMFUNDRAISINGTEAM TFT

from (select * from TEAMFUNDRAISINGTEAM where ID in (select TEAMFUNDRAISINGTEAMID from TEAMEXTENSION where EVENTID = @EventIDP and TEAMCONSTITUENTID not in (select TEAMCONSTITUENTID from TEAMEXTENSION where EVENTID = @EventID))) TFT
inner join TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = TFT.ID
cross apply UFN_FAF_GETTEAMHIEARACHY(TFT.ID) TH
left join TEAMEXTENSION TXP on TXP.TEAMCONSTITUENTID = TX.TEAMCONSTITUENTID and TXP.EVENTID = @EventIDPP
left join @GroupFacts as GF on GF.ID = TFT.ID
where TX.TYPECODE = 3 
and TH.ParentTeamID is null
and 1 = @IncludeHousehold
  -- site filter  

 and  
      (  
        @SITEFILTERMODE = 0  
        or exists(  
            select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(@CURRENTEVENTID) 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(@CURRENTEVENTID) 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))  
  ))  
order by TypeCode Desc, Name

end