USP_DATALIST_FAF_GIFT_ACKNOWLEDGEMENT_TEAM
List of Team members that need to acknowledge their gifts
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTID | uniqueidentifier | IN | Event ID |
@TEAMID | uniqueidentifier | IN | Team ID |
@CLIENTUSERSID | int | IN | Client Users ID |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_FAF_GIFT_ACKNOWLEDGEMENT_TEAM
(
@EVENTID uniqueidentifier,
@TEAMID uniqueidentifier,
@CLIENTUSERSID int
)
as
set nocount on;
DECLARE @TEAMCONSTITUENTID uniqueidentifier
DECLARE @CONSTITUENTID uniqueidentifier
DECLARE @APPEALID uniqueidentifier
SELECT @APPEALID=APPEALID FROM dbo.[EVENT] (NOLOCK) WHERE ID=@EVENTID
Select @TEAMCONSTITUENTID = TEAMCONSTITUENTID from dbo.TEAMEXTENSION WHERE TEAMFUNDRAISINGTEAMID = @TEAMID
IF ISNULL(@CLIENTUSERSID,-1) > 0
SET @CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERSID)
-- save revenue ids in temp table for performance improvement
declare @DONORREVENUEIDS as table
(
REVENUESPLITID uniqueidentifier,
REVENUEID uniqueidentifier
)
insert into @DONORREVENUEIDS
select REVENUESPLIT.ID as REVENUESPLITID, REVENUESPLIT.REVENUEID from dbo.REVENUESPLIT (NOLOCK)
where ID in (
select REVENUESPLITID from dbo.REVENUERECOGNITION (NOLOCK)
where CONSTITUENTID = @TEAMCONSTITUENTID)
and REVENUESPLIT.TYPECODE=0
and ISNULL(REVENUESPLIT.AMOUNT,0) > 0
and APPLICATION <> 'matching gift'
declare @TEAMREVENUEIDS as table
(
REVENUESPLITID uniqueidentifier,
REVENUEID uniqueidentifier
)
insert into @TEAMREVENUEIDS
select REVENUESPLIT.ID as REVENUESPLITID, REVENUESPLIT.REVENUEID from dbo.REVENUESPLIT (NOLOCK)
where ID in (
select REVENUESPLITID from dbo.REVENUERECOGNITION (NOLOCK)
INNER JOIN dbo.TEAMFUNDRAISINGTEAMMEMBER TM (NOLOCK)
ON TM.TEAMFUNDRAISINGTEAMID = @TEAMID
INNER JOIN dbo.TEAMFUNDRAISER TF (NOLOCK)
ON TM.TEAMFUNDRAISERID = TF.ID
where REVENUERECOGNITION.CONSTITUENTID = TF.CONSTITUENTID
)
and REVENUESPLIT.TYPECODE=0
and ISNULL(REVENUESPLIT.AMOUNT,0) > 0
and APPLICATION <> 'matching gift'
declare @HOUSEHOLDREVENUEIDS as table
(
REVENUESPLITID uniqueidentifier,
REVENUEID uniqueidentifier
)
insert into @HOUSEHOLDREVENUEIDS
select REVENUESPLIT.ID as REVENUESPLITID, REVENUESPLIT.REVENUEID from dbo.REVENUESPLIT (NOLOCK)
where ID in (
select REVENUESPLITID from dbo.REVENUERECOGNITION (NOLOCK)
INNER JOIN [dbo].[TEAMFUNDRAISINGTEAM] T (NOLOCK)
ON T.APPEALID = @APPEALID AND T.PARENTTEAMID = @TEAMID
INNER JOIN [dbo].TEAMEXTENSION TE (NOLOCK)
ON T.ID = TE.TEAMFUNDRAISINGTEAMID AND TE.TYPECODE = 3
where REVENUERECOGNITION.CONSTITUENTID = TE.TEAMCONSTITUENTID
)
and REVENUESPLIT.TYPECODE=0
and ISNULL(REVENUESPLIT.AMOUNT,0) > 0
and APPLICATION <> 'matching gift'
-- twist the query for performance improvement
declare @D_RESULT as table
(
CONSTITUENTID uniqueidentifier,
DONATIONDATE datetime,
DONATIONAMOUNT money,
ISACKNOWLEDGED bit,
REVENUEID uniqueidentifier,
[REVENUESPLITID] uniqueidentifier,
[TYPE] nvarchar(100),
[NAME] nvarchar(308)
)
declare @T_RESULT as table
(
CONSTITUENTID uniqueidentifier,
DONATIONDATE datetime,
DONATIONAMOUNT money,
ISACKNOWLEDGED bit,
REVENUEID uniqueidentifier,
[REVENUESPLITID] uniqueidentifier,
[TYPE] nvarchar(100),
[NAME] nvarchar(308)
)
declare @H_RESULT as table
(
CONSTITUENTID uniqueidentifier,
DONATIONDATE datetime,
DONATIONAMOUNT money,
ISACKNOWLEDGED bit,
REVENUEID uniqueidentifier,
[REVENUESPLITID] uniqueidentifier,
[TYPE] nvarchar(100),
[NAME] nvarchar(308)
)
;with
[R] as
(
select ID, CONSTITUENTID, DATE, TRANSACTIONTYPE
from dbo.REVENUE (NOLOCK)
where REVENUE.ID in (select distinct REVENUEID from @DONORREVENUEIDS)
and REVENUE.APPEALID = @APPEALID
),
[RS] as
(
select
REVENUESPLIT.ID,
REVENUESPLIT.REVENUEID,
REVENUESPLIT.AMOUNT,
R.CONSTITUENTID,
R.DATE,
R.TRANSACTIONTYPE
from dbo.REVENUESPLIT (NOLOCK)
inner join [R] ON REVENUESPLIT.REVENUEID = R.ID
where REVENUESPLIT.ID in (select REVENUESPLITID from @DONORREVENUEIDS)
)
insert into @D_RESULT
SELECT RS.CONSTITUENTID, -- DONOR
RS.DATE as [DONATIONDATE],
ISNULL(RS.AMOUNT,0) as DONATIONAMOUNT,
ISNULL(GA.ISACKNOWLEDGED,0) as ISACKNOWLEDGED,
RS.REVENUEID,
RS.ID as [REVENUESPLITID],
'DONOR' as TYPE,
C.NAME
FROM [RS]
LEFT OUTER JOIN dbo.FAFGIFTACKNOWLEDGEMENT GA (NOLOCK)
ON GA.REVENUESPLITID = RS.ID
LEFT OUTER JOIN dbo.CONSTITUENT C
ON C.ID = RS.CONSTITUENTID
;with [R_TEAM] as
(
select ID, CONSTITUENTID, DATE, TRANSACTIONTYPE
from dbo.REVENUE (NOLOCK)
where REVENUE.ID in (select distinct REVENUEID from @TEAMREVENUEIDS)
and REVENUE.APPEALID = @APPEALID
),
[RS_TEAM] as
(
select
REVENUESPLIT.ID,
REVENUESPLIT.REVENUEID,
REVENUESPLIT.AMOUNT,
RevenueRecognition.CONSTITUENTID,
[R_TEAM].DATE,
[R_TEAM].TRANSACTIONTYPE
from dbo.REVENUESPLIT (NOLOCK)
inner join [R_TEAM] ON REVENUESPLIT.REVENUEID = [R_TEAM].ID
inner join RevenueRecognition on RevenueRecognition.REVENUESPLITID = REVENUESPLIT.ID
where REVENUESPLIT.ID in (select REVENUESPLITID from @TEAMREVENUEIDS)
)
insert into @T_RESULT
SELECT [RS_TEAM].CONSTITUENTID, -- Team Member
[RS_TEAM].DATE as [DONATIONDATE],
ISNULL([RS_TEAM].AMOUNT,0) as DONATIONAMOUNT,
0 as ISACKNOWLEDGED,
[RS_TEAM].REVENUEID,
[RS_TEAM].ID as [REVENUESPLITID],
'TEAMMEMBER' as TYPE,
C.NAME as NAME
FROM [RS_TEAM]
INNER JOIN dbo.REVENUE ON REVENUE.ID = RS_TEAM.REVENUEID
LEFT OUTER JOIN dbo.FAFGIFTACKNOWLEDGEMENT GA (NOLOCK)
ON GA.REVENUESPLITID = [RS_TEAM].ID
LEFT OUTER JOIN dbo.CONSTITUENT C
ON C.ID = [RS_TEAM].CONSTITUENTID
WHERE
GA.REVENUESPLITID IS NULL
--AND [RS_TEAM].CONSTITUENTID <> REVENUE.CONSTITUENTID
;with [R_HOUSEHOLD] as
(
select ID, CONSTITUENTID, DATE, TRANSACTIONTYPE
from dbo.REVENUE (NOLOCK)
where REVENUE.ID in (select distinct REVENUEID from @HOUSEHOLDREVENUEIDS)
and REVENUE.APPEALID = @APPEALID
),
[RS_HOUSEHOLD] as
(
select
REVENUESPLIT.ID,
REVENUESPLIT.REVENUEID,
REVENUESPLIT.AMOUNT,
[R_HOUSEHOLD].CONSTITUENTID,
[R_HOUSEHOLD].DATE,
[R_HOUSEHOLD].TRANSACTIONTYPE
from dbo.REVENUESPLIT (NOLOCK)
inner join [R_HOUSEHOLD] ON REVENUESPLIT.REVENUEID = [R_HOUSEHOLD].ID
where REVENUESPLIT.ID in (select REVENUESPLITID from @HOUSEHOLDREVENUEIDS)
)
insert into @H_RESULT
SELECT [RS_HOUSEHOLD].CONSTITUENTID, -- Household
[RS_HOUSEHOLD].DATE as [DONATIONDATE],
ISNULL([RS_HOUSEHOLD].AMOUNT,0) as DONATIONAMOUNT,
ISNULL(GA.ISACKNOWLEDGED,0) as ISACKNOWLEDGED,
[RS_HOUSEHOLD].REVENUEID,
[RS_HOUSEHOLD].ID as [REVENUESPLITID],
'HOUSEHOLD' as TYPE,
C.NAME
FROM [RS_HOUSEHOLD]
LEFT OUTER JOIN dbo.FAFGIFTACKNOWLEDGEMENT GA (NOLOCK)
ON GA.REVENUESPLITID = [RS_HOUSEHOLD].ID
LEFT OUTER JOIN dbo.CONSTITUENT C
ON C.ID = [RS_HOUSEHOLD].CONSTITUENTID
select * from @D_RESULT
union all
select * from @T_RESULT
union all
select * from @H_RESULT
ORDER BY TYPE, NAME