USP_FAF_PARTICIPANTFUNDRAISING_REPORT
Generates report of FAF participant fundraising success
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTID | uniqueidentifier | IN | |
@REGISTRATIONOPTION | nvarchar(50) | 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_FAF_PARTICIPANTFUNDRAISING_REPORT]
(
@EVENTID uniqueidentifier,
@REGISTRATIONOPTION nvarchar(50) = null ,
@WEBURL nvarchar(1200) = '',
@WEBURLGROUP nvarchar(1200) = '',
@REPORTUSERID nvarchar(128) = null,
@ALTREPORTUSERID nvarchar(128) = null,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED nvarchar(max) = null
)
AS
BEGIN
set nocount on;
-- BEGIN SP LOGIC
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,'825a8f05-a46a-4813-a329-93a2493b324e', 21)
where SITEID is not null
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
if @REGISTRATIONOPTION = 'All' set @REGISTRATIONOPTION = null;
-- get previous linked event
declare @EventIDP as uniqueidentifier
set @EventIDP = (Select PRIORYEAREVENTID from EVENTEXTENSION where EVENTID = @EventID);
declare @REGSREPORT table
(
RegistrantID uniqueidentifier,
LASTNAME nvarchar(200),
FIRSTNAME nvarchar(200),
TOTALRAISED money,
FUNDRAISINGGOAL money,
TARGETFUNDRAISINGGOAL money,
RegisteredDate datetime,
RegistrationFee money,
GroupName nvarchar(512),
[Role] nvarchar(50),
GroupType nvarchar(512),
RegistrationOption nvarchar(50),
ReturnedParticipant int,
PercentageOfDonorsRetained float,
NumGiftsReceived int,
TotalCommunicationsSent int,
ImagePersonalized bit,
StoryPersonalized bit,
Benefits nvarchar(512),
RoleCode int,
TypeCode int
)
declare @PAYMENTCOUNT int;
DECLARE @CONSTITUENTSEQUENCEID int;
declare @registrantsbyevent table
(
ID uniqueidentifier,
DATEADDED datetime,
CONSTITUENTID uniqueidentifier,
EVENTID uniqueidentifier,
ROLE varchar(17),
TEAMFUNDRAISINGTEAMID uniqueidentifier,
ROLECODE int
)
insert into @registrantsbyevent(ID, DATEADDED, CONSTITUENTID, EVENTID, ROLE, TEAMFUNDRAISINGTEAMID, ROLECODE)
select R.id, R.dateadded, R.CONSTITUENTID, R.EVENTID, AG.Role, AG.TEAMFUNDRAISINGTEAMID, AG.RoleCode
from dbo.REGISTRANT R
JOIN dbo.UFN_REGISTRANT_GETFAFROLE(@eventid, null) AG ON R.ID = AG.REGISTRANTID
where R.EVENTID = @EventID
-- 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))
))
-- main registrant detail query
insert into @REGSREPORT
select
R.ID,
C.KEYNAME,
C.FIRSTNAME,
REVTOTAL.AMOUNTRAISED as TOTALRAISED,
rex.FUNDRAISINGGOAL,
rex.TARGETFUNDRAISINGGOAL,
r.DATEADDED as RegisteredDate,
rr.AMOUNT as RegistrationFee,
T.NAME as GroupName,
R.Role AS Role,
case when R.Role = 'Head of household' then 'Household'
when R.Role = 'Household member' then 'Household'
when R.Role = 'Team leader' then 'Team'
when R.Role = 'Team member' then 'Team'
when R.Role = 'Company leader' then 'Company'
when R.Role = 'Individual' and R.TEAMFUNDRAISINGTEAMID is null then 'Individual'
when R.Role = 'Individual' and R.TEAMFUNDRAISINGTEAMID is not null then 'Company'
when R.Role is null then 'Individual' end
as GroupType,
EP.NAME as RegistrationOption,
case when REG.ID is null then 0 else 1 end as ReturnedParticipant,
(select dbo.UFN_REVENUE_GETDONORRETENTION(C.ID, @EVENTID)) as PERCENTAGEOFDONORSRETAINED,
REVTOTAL.GIFTCOUNT as NumGiftsReceived,
dbo.UFN_FAFGETTOTALCOMMUNICATIONS(@EVENTID, dbo.UFN_CLIENTUSERID_GET_BY_CONSTITUENT(R.CONSTITUENTID)) AS TOTALCOMMUNICATIONS,
case when isnull(STO.FAFIMAGESID, '00000000-0000-0000-0000-000000000000') = '00000000-0000-0000-0000-000000000000' then 0 else 1 end as ImagePersonalized,
case when isnull(RTRIM(STO.STORYTEXT), '') = '' then 0 else 1 end as StoryPersonalized,
dbo.UFN_REGISTRANT_GETBENEFITLIST_BYREGISTRANTID(R.ID) as Benefits,
R.RoleCode,
isnull(TEX.TYPECODE, 0) as TypeCode
from
@registrantsbyevent R
join dbo.CONSTITUENT C on R.CONSTITUENTID = C.ID
join dbo.REGISTRANTREGISTRATION rr on rr.REGISTRANTID = R.ID
join dbo.EVENTPRICE EP ON RR.EVENTPRICEID = EP.ID
left join dbo.UFN_REVENUE_GETPARTICIPANTRAISEDTOTAL_2(@EVENTID) REVTOTAL on C.ID = REVTOTAL.CONSTITUENTID
left join dbo.TEAMFUNDRAISER TR on TR.CONSTITUENTID = r.CONSTITUENTID
left join dbo.TEAMFUNDRAISINGTEAM T on R.TEAMFUNDRAISINGTEAMID = T.ID
left join dbo.TEAMEXTENSION TEX on R.TEAMFUNDRAISINGTEAMID = TEX.TEAMFUNDRAISINGTEAMID
left join dbo.REGISTRANTEXTENSION rex on rex.REGISTRANTID = r.ID
left join dbo.EVENTEXTENSION eex ON r.EVENTID = eex.EVENTID
LEFT JOIN STORY STO on STO.REGISTRANTID = R.ID
left join dbo.REGISTRANT REG on REG.CONSTITUENTID = C.ID and REG.EVENTID = @EventIDP
where rex.STATUS = 'Active'
update @REGSREPORT
set TOTALRAISED = 0.0
where isnull(TOTALRAISED,'')='';
-- remove all household members
-- delete from @REGSREPORT
-- where TypeCode = 3 and RoleCode <> 3
-- Remove any extra head of households.
declare @MULTIPLEHEADS table
(
registrantid uniqueidentifier,
count int
)
/*
INSERT INTO @MULTIPLEHEADS
select RegistrantID , rn
FROM
(
select RegistrantID, row_number() over
(
partition by GroupName
order by RegisteredDate
) as rn
FROM @REGSREPORT WHERE TypeCode = 3 AND RoleCode = 3) as a
WHERE rn > 1
DELETE A
FROM @REGSREPORT A
INNER JOIN @MULTIPLEHEADS B
ON A.RegistrantID = B.REGISTRANTID
*/
select DISTINCT
CASE WHEN @WEBURL = '' THEN 'http://www.blackbaud.com/REGISTRANTID?REGISTRANTID=' + convert(nvarchar(36), RegistrantID)
ELSE @WEBURL + convert(nvarchar(36), RegistrantID) END as REGISTRANTID,
-- 'http://www.blackbaud.com/REGISTRANTID?REGISTRANTID=' + convert(nvarchar(36), RegistrantID) as REGISTRANTID,
LASTNAME,
FIRSTNAME,
TOTALRAISED,
FUNDRAISINGGOAL,
TARGETFUNDRAISINGGOAL,
RegisteredDate,
RegistrationFee,
GroupName,
[Role],
GroupType,
RegistrationOption,
ReturnedParticipant,
PercentageOfDonorsRetained,
NumGiftsReceived,
TotalCommunicationsSent,
ImagePersonalized,
StoryPersonalized,
Benefits
from @REGSREPORT
where RegistrationOption like isnull(@REGISTRATIONOPTION,'%')
END