USP_DATALIST_FUNDRAISINGGROUPMERGEDATA

Returns fundraising group merge data

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN Event ID
@GROUPID uniqueidentifier IN Group ID
@ISPREVIOUSEVENT bit IN IsPreviousEvent
@CONSTITUENTID uniqueidentifier IN Constituent ID

Definition

Copy


CREATE procedure dbo.USP_DATALIST_FUNDRAISINGGROUPMERGEDATA
(
  @EVENTID uniqueidentifier,
  @GROUPID uniqueidentifier,
  @ISPREVIOUSEVENT bit = 0, -- used for marketing message merge fields only

  @CONSTITUENTID uniqueidentifier = null -- constituent leader ID if applicable

)
  as
      set nocount on;

  declare @numberOfTeams int,
          @FGTotalAmountRaised nvarchar(10),
          @FGNUMBEROFPARTICIPANTSRECRUITED int,
          @TYPECODE int,
          @FGNumberOfCommunicationsSent int,
          @NumberOfDonorsRetained decimal(5,2),
          @LYFundraisingGoal money,
          @LYFundraisingTotal money,
          @FGPageUrl nvarchar(500),
              @FGPARTICIPANTGOALACTUAL int,
              @FGNumberofteammembersactual int,
              @FGNumberofteammembersRetained int,
          @IsLeader bit = 0,
          @PreviousTeamID uniqueidentifier,
          @PreviousTeamCount int


  --Get typeCode of group

  select @TYPECODE=TYPECODE from TEAMEXTENSION where TEAMFUNDRAISINGTEAMID=@GROUPID 

  -- todo -- change logic

  select @numberOfTeams = count(1
    from TEAMFUNDRAISINGTEAM T
   where T.PARENTTEAMID = @GROUPID

   --- smart field

  -- exec dbo.USP_SMARTFIELD_VALUEBYRECORDID @SMARTFIELDCATALOGID='ed84f75a-b11a-4eb8-b9e0-673a3ab7a15a', @RECORDID=@GROUPID, @SFINSTANCENAME_ENDWITH='TO DATE', @RESULT=@FGTotalAmountRaised OUTPUT;


    /*select  @FGTotalAmountRaised = CASE WHEN TE.TYPECODE=1 THEN dbo.UFN_REVENUE_GETTEAMRAISEDTOTAL(@GROUPID, TE.EVENTID)
                                                        WHEN TE.TYPECODE=2 THEN dbo.UFN_REVENUE_GETCOMPANYRAISEDTOTAL(@GROUPID, TE.EVENTID)
                                                        WHEN TE.TYPECODE=3 THEN dbo.UFN_REVENUE_GETHOUSEHOLDRAISEDTOTAL(@GROUPID, TE.EVENTID) END
    from dbo.TEAMEXTENSION TE
    where TE.TEAMFUNDRAISINGTEAMID = @GROUPID*/

   --Get Number of participants recruited

  select  @FGNUMBEROFPARTICIPANTSRECRUITED=COUNT(fc.TYPEGUID)     
  from      FAFCOMMUNICATIONSLOG fl
  join      FAFEVENTCOMMUNICATIONCHANNEL fc on fl.EMAILJOBID = fc.EMAILJOBID
  where  fc.TYPEGUID IN (select REGISTRANTID from dbo.UFN_REGISTRANT_GROUPMEMBERLIST() where GROUPID= @GROUPID AND TYPECODE=@TYPECODE)

    --get number of communications sent 

  select @FGNumberOfCommunicationsSent=COUNT(ID) 
  from   FAFCOMMUNICATIONSLOG 
  where  CLIENTUSERSID  IN (
  select dbo.UFN_CLIENTUSERID_GET_BY_CONSTITUENT(CONSTITUENTID) from REGISTRANT 
  where ID IN (select REGISTRANTID from dbo.UFN_REGISTRANT_GROUPMEMBERLIST() where GROUPID= @GROUPID AND TYPECODE=@TYPECODE) )

    --get number of donors retained

  select @NumberOfDonorsRetained=case when count(RC.ID)=0 then 0 else cast(COUNT(A.RID) as decimal)/cast(COUNT(RC.ID) as decimal) end
    from dbo.UFN_FAF_GETTEAMHIEARACHY(@GROUPID) T
    inner join TEAMEXTENSION TE ON TE.TEAMFUNDRAISINGTEAMID=T.teamID
    inner join dbo.EVENTEXTENSION ET ON ET.EVENTID=TE.EVENTID
    left join dbo.REVENUERECOGNITION RC ON RC.CONSTITUENTID=TE.TEAMCONSTITUENTID
    left join (
        select TE1.TEAMCONSTITUENTID
        , TE1.EventID
        ,RC1.ID RID 
        from dbo.UFN_FAF_GETTEAMHIEARACHY(@GROUPID) T1
        inner join TEAMEXTENSION TE1 ON TE1.TEAMFUNDRAISINGTEAMID=T1.teamID
        inner join dbo.REVENUERECOGNITION RC1 ON RC1.CONSTITUENTID=TE1.TEAMCONSTITUENTID
    ) A ON A.TEAMCONSTITUENTID=TE.TEAMCONSTITUENTID and A.EVENTID=ET.PRIORYEAREVENTID

    --Get last year data

    select @LYFundraisingGoal=LYRE.FUNDRAISINGGOAL
            ,@LYFundraisingTotal=  dbo.UFN_REGISTRANT_GETDONATIONAMOUNT(LYR.ID, EEXT.PRIORYEAREVENTID, LYTFT.ID, LYTE.TYPECODE, NULL)
    from EVENTEXTENSION EEXT 
    left join dbo.EVENTEXTENSION LYET ON LYET.ID=EEXT.PRIORYEAREVENTID 
    left join dbo.EVENT LYEV ON LYEV.ID=LYET.EVENTID
    left join dbo.TEAMFUNDRAISINGTEAM LYTFT ON LYTFT.APPEALID=LYEV.APPEALID 
    left join dbo.TEAMEXTENSION LYTE ON LYTE.TEAMFUNDRAISINGTEAMID=LYTFT.ID 
    left join dbo.TEAMFUNDRAISINGTEAMCAPTAIN LYTC on LYTFT.ID = LYTC.TEAMFUNDRAISINGTEAMID
    left join dbo.REGISTRANT LYR on LYR.constituentid = LYTC.constituentID and LYR.eventID = LYEV.ID 
    left join dbo.RegistrantExtension LYRE on LYRE.registrantID = LYR.ID
    where LYTE.TEAMCONSTITUENTID=@GROUPID 
    and EEXT.ID=@EVENTID

    select @FGPageUrl=dbo.UFN_VANITYURL_GETFAFPARTICIPANTURL(@GROUPID,@EVENTID,TYPECODE)
    from TEAMEXTENSION 
    where TEAMFUNDRAISINGTEAMID=@GROUPID
        and TEAMEXTENSION.EVENTID=@EVENTID 

  -- If it is the only parameter I need ? instead of & for a valid URL

    IF CHARINDEX( '?',  @FGPageUrl ) = 0 
        begin
            declare @personalpageid int
            select @personalpageid=VALUE from dbo.CMSSITESETTING
            where CMSSITESETTING.ENUMID = 30 and CMSSITESETTING.CLIENTSITESID in (select CLIENTSITESID from dbo.EVENTEXTENSION where EVENTID = @EVENTID
            set @FGPageUrl=(case when RIGHT(@FGPageUrl,1)='/' then LEFT(@FGPageUrl,len(@FGPageUrl)-1) else @FGPageUrl end) + '?ch=1&frmfaf=1'
        end
    ELSE
          set @FGPageUrl=(case when RIGHT(@FGPageUrl,1)='/' then LEFT(@FGPageUrl,len(@FGPageUrl)-1) else @FGPageUrl end) + '&ch=1&frmfaf=1'

  declare @dashboardURL nvarchar(500)
  select @dashboardURL = S2.VALUE + '?pid=' + S1.VALUE + '&tab=' + cast(@TYPECODE as nvarchar(2))
    from EVENTEXTENSION EX --on EX.EVENTID = R.EVENTID

    left join CMSSITESETTING S1 on EX.CLIENTSITESID = S1.CLIENTSITESID and S1.ENUMID = 38
    left join CMSSITESETTING S2 on EX.CLIENTSITESID = S2.CLIENTSITESID and S2.ENUMID = 10
    where EX.EVENTID = @EVENTID

     select @FGPARTICIPANTGOALACTUAL = COUNT(fc.TYPEGUID)     
     from      FAFCOMMUNICATIONSLOG fl
   join      FAFEVENTCOMMUNICATIONCHANNEL fc on fl.EMAILJOBID = fc.EMAILJOBID
   where      fc.TYPEGUID IN (
            select REGISTRANTID from dbo.UFN_REGISTRANT_GROUPMEMBERLIST() RG
            inner join TEAMEXTENSION TE ON TE.TEAMFUNDRAISINGTEAMID=RG.GROUPID 
            where GROUPID=@GROUPID  AND RG.TYPECODE=TE.TYPECODE
        )

   select @IsLeader=1 from dbo.TEAMFUNDRAISINGTEAMCAPTAIN where TEAMFUNDRAISINGTEAMID = @GROUPID and CONSTITUENTID = @CONSTITUENTID

   --number of team member actual

   select @FGNumberofteammembersactual = COUNT(teamid) from dbo.UFN_NUMBERTEAMMEMBERS_GROUP (@GROUPID)

   -- get previous team ID

   select @PreviousTeamID = pTX.TEAMFUNDRAISINGTEAMID from TEAMEXTENSION TX 
   join EVENTEXTENSION EX on TX.EVENTID = EX.EVENTID
   left join TEAMEXTENSION pTX on pTX.TEAMCONSTITUENTID = TX.TEAMCONSTITUENTID and EX.PRIORYEAREVENTID = pTX.EVENTID
   where TX.TEAMFUNDRAISINGTEAMID = @GROUPID

   -- get previous team member count if there is one   

   select @PreviousTeamCount=count(teamid) from dbo.UFN_NUMBERTEAMMEMBERS_GROUP (@PreviousTeamID)

   --Group number Of Team Members Retained

   select @FGNumberofteammembersRetained = SUM(MEMBERRETAINEDNUMBER) from dbo.UFN_REGISTRANT_GROUPMEMBERLIST() where GROUPID= @GROUPID

  select 
    FGID = TeamC.LookupID
  , FGName = T.NAME
  , FGLeaderName = C.NAME
  , FGTypeName = TE.[Type]
  , FGPageUrl =@FGPageUrl

  , FGMinFundraisingGoal = case when TE.TYPECODE = 3 then T.Goal else 0 end
  , FGTargetFundraisingGoal = TE.TargetFundraisingGoal
  , FGTotalAmountGoal = isnull(T.Goal,0)
  , FGTotalAmountRaised = 0
  , FGPercentageOfFundraisingGoal = 0

  , FGParticipantgoal = TE.PARTICIPANTGOAL 
  , FGParticipantactual =isnull(@FGPARTICIPANTGOALACTUAL,0)
  , FGParcParticipant = case when isnull(TE.PARTICIPANTGOAL ,0)= 0 then 0 else CONVERT(DECIMAL, @FGPARTICIPANTGOALACTUAL)/TE.PARTICIPANTGOAL  end


  , FGNumberofcommunicationstosend = TE.COMMUNICATIONGOAL 
  , FGNumberOfCommunicationsSent = isnull(@FGNumberOfCommunicationsSent,0)
  , FGPercentageOfCommunicationsSent =case when ISNULL(TE.COMMUNICATIONGOAL,0) = 0 then 0 else cast(@FGNumberOfCommunicationsSent as decimal)/TE.COMMUNICATIONGOAL end

  , FGNumberofteammembersgoal = TE.TEAMMEMBERGOAL 
  , FGNumberofteammembersactual = ISNULL(@FGNumberofteammembersactual, 0)
  ,    FGPERCENTAGEOFTEAMMEMBERSGOAL = case isnull(TE.TEAMMEMBERGOAL, 0) when 0 then 0 else convert(decimal,ISNULL(@FGNumberofteammembersactual, 0)) / TE.TEAMMEMBERGOAL end
  , FGPercentageOfTeamMembersToRetain = isnull(TE.PCTTEAMMEMBERRETENSION,0)
  , FGPercentageOfTeamMembersRetained =case isnull(@PreviousTeamCount, 0) when 0 then 0 else convert(decimal(5,2),ISNULL(@FGNumberofteammembersRetained, 0)) / @PreviousTeamCount end

  , FGNumberofteamsgoal = TE.TEAMRECRUITMENTGOAL
  , FGNumberofteamsactual = isnull(AG.TEAMNUMBER,0)
  , FGPercentageofteamsgoal = case when isnull(TE.TEAMRECRUITMENTGOAL,0)= 0 then 0 else CONVERT(DECIMAL(5,2), isnull(AG.TEAMNUMBER,0))/TE.TEAMRECRUITMENTGOAL end

  , FGNumberofcompaniesgoal = null -- this is for fundraising coach of future sprint

  , FGNumberofcompaniesactual = null
  , FGPercentageofcompaniesgoal = null

  , FGNumberforothergoal = isnull(TE.OTHERGOAL,0)

   --future sprint

  , FGPercentageOfDonorsToRetain = TE.DONORRETENTIONGOAL 
  --not sure

  , FGPercentageOfDonorsRetained =@NumberOfDonorsRetained
  , FGPercentageOfTeamsToRetain = TE.PCTTEAMSRETENSION
  , FGPercentageOfTeamsRetained = case when isnull(AG.PREVIOUSTEAMSCNT,0)=0 then 0 else convert(decimal,AG.TEAMRETAINEDNUMBER)/AG.PREVIOUSTEAMSCNT end
  , FGPercentageOfCompaniesToRetain = null
  , FGPercentageOfCompaniesRetained = null

  , FGLYTotalAmountGoal = isnull(@LYFundraisingGoal,0)
  , FGLYTotalAmountActual = case when ISNULL(@LYFundraisingGoal,0) =0 then 0 else convert(decimal,@LYFundraisingTotal)/@LYFundraisingGoal end
  , FGLYNumberOfParticipantsToRecruit = null
  , FGLYNumberOfParticipantsRecruited = null
  , FGLYPercentageOfDonorsToRetain = null
  , FGLYPercentageOfDonorsRetained = null
  , FGLYNumberOfCommunicationsToSend = null
  , FGLYNumberOfCommunicationsSent = null
  , FGLYNumberOfTeamMembersGoal = null
  , FGLYNumberOfTeamMembersActual = null
  , FGLYPercentageOfTeamMembersToRetain = null
  , FGLYPercentageOfTeamMembersRetained = null
  , FGLYNumberOfTeamsGoal = null
  , FGLYNumberOfTeamsActual = null
  , FGLYPercentageOfTeamsToRetain = null
  , FGLYPercentageOfTeamsRetained = null
  , FGLYNumberOfCompaniesGoal = null
  , FGLYNumberOfCompaniesActual = null
  , FGLYPercentageOfCompaniesToRetain = null
  , FGLYPercentageOfCompaniesRetained = null

  , FGLYGroupTypeName = (CASE WHEN @ISPREVIOUSEVENT = 1 THEN TE.[Type] ELSE PrevTE.TYPE END)
  , FGDashboardURL=@dashboardURL


  --, SHOWHOUSEHOLDSECTION = case when TE.TYPECODE = 3 then 1 else 0 end

  --, SHOWTEAMSECTION = case when TE.TYPECODE = 1 then 1 else 0 end

  --, SHOWCOMPANYSECTION = case when TE.TYPECODE = 2 then 1 else 0 end

  --, SHOWFUNDRAISINGCOACHSECTION = 0


  from dbo.TEAMFUNDRAISINGTEAM T
  inner join dbo.EVENT EV on T.APPEALID = EV.APPEALID 
  inner join dbo.EVENTEXTENSION EEXT on EV.ID = EEXT.EVENTID
  left outer join dbo.TEAMEXTENSION TE on T.ID = TE.TEAMFUNDRAISINGTEAMID 
  left outer join dbo.TEAMFUNDRAISINGTEAMCAPTAIN TC on T.ID = TC.TEAMFUNDRAISINGTEAMID and (@IsLeader=0 or (TC.CONSTITUENTID = @CONSTITUENTID and @IsLeader = 1))
  left outer join dbo.CONSTITUENT C on C.ID = TC.CONSTITUENTID
  left outer join dbo.REGISTRANT R on R.constituentid = TC.constituentID and r.eventID = @EVENTID
  left outer join dbo.RegistrantExtension RE on RE.registrantID = R.ID
  left outer join dbo.CMSSITESETTING CMS1 on CMS1.CLIENTSITESID = EEXT.CLIENTSITESID and CMS1.SETTING = 'PAGEBASEURL'
  left outer join dbo.CMSSITESETTING CMS2 on CMS2.CLIENTSITESID = EEXT.CLIENTSITESID and CMS2.SETTING = 'FAFPARTICIPANTPAGEID'
  left join    dbo.UFN_COMPANY_TEAMS (@GROUPID) AG    ON TE.EVENTID= AG.EVENTID    
  left join dbo.EVENTEXTENSION PrevET on PrevET.EVENTID = EEXT.PRIORYEAREVENTID
  left join dbo.TEAMEXTENSION PrevTE on PrevTE.EVENTID = PrevET.EVENTID and PrevTE.TEAMCONSTITUENTID = TE.TEAMCONSTITUENTID
  left join dbo.CONSTITUENT TeamC ON TeamC.ID=TE.TEAMCONSTITUENTID

  where EV.ID = @EVENTID
        and T.ID = @GROUPID