USP_SMARTFIELD_TOTALDONATIONAMOUNTRAISEDTEAMCURWEEK
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TYPECODE | tinyint | IN | |
@WEEKORMONTHCODE | tinyint | IN | |
@ASOF | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_SMARTFIELD_TOTALDONATIONAMOUNTRAISEDTEAMCURWEEK
(
@TYPECODE tinyint= 1,
@WEEKORMONTHCODE tinyint= 1,
@ASOF datetime
)
as
set nocount on
-- write sql to calculate the smart field values based on the parameters and ASOF date
IF (@TYPECODE= 2)
BEGIN
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects o where o.xtype in ('U') and o.id = object_id( N'tempdb..'+'#TEMP_Get_TFTID') )
DROP TABLE #TEMP_Get_TFTID
----------------
IF NOT EXISTS (SELECT * FROM tempdb.dbo.sysobjects o where o.xtype in ('U') and o.id = object_id( N'tempdb..'+'#TEMP_Get_TFTID') )
BEGIN
CREATE TABLE #TEMP_Get_TFTID ( PRIM_ID int IDENTITY(1,1) primary key, TEAMFUNDRAISINGTEAMID uniqueidentifier)
-----
INSERT INTO #TEMP_Get_TFTID ( TEAMFUNDRAISINGTEAMID)
-------
SELECT DISTINCT TFT2.PARENTTEAMID FROM TEAMFUNDRAISINGTEAM TFT1 JOIN TEAMFUNDRAISINGTEAM TFT2 ON TFT1.ID= TFT2.PARENTTEAMID
END
----------------------------------
IF @WEEKORMONTHCODE= 1
SELECT TOT.ID, SUM(TOT.AMOUNT) AS DONATION
FROM
-- additional donation made by team members
(SELECT TFT.ID, SUM(RS.AMOUNT) AS AMOUNT
FROM dbo.TEAMFUNDRAISINGTEAMMEMBER TM
JOIN dbo.TEAMFUNDRAISINGTEAM TFT ON TM.TEAMFUNDRAISINGTEAMID = TFT.ID
--JOIN dbo.TEAMFUNDRAISINGTEAM TFT2 ON TFT.ID= TFT2.PARENTTEAMID
JOIN dbo.TEAMFUNDRAISER TF ON TM.TEAMFUNDRAISERID = TF.ID
JOIN dbo.REGISTRANT R ON TF.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.EVENTEXTENSION EE ON R.EVENTID = EE.EVENTID
JOIN dbo.REVENUE RV ON RV.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.REVENUESPLIT RS ON RS.REVENUEID = RV.ID
WHERE RS.TYPECODE = 0
AND RV.TRANSACTIONTYPECODE = 0
AND TFT.ID IN (SELECT TEAMFUNDRAISINGTEAMID FROM #TEMP_Get_TFTID)
GROUP BY TFT.ID
UNION ALL
-- donations collected by team members
SELECT TFT.ID, SUM(RS.AMOUNT) AS AMOUNT
FROM dbo.TEAMFUNDRAISINGTEAMMEMBER TM
JOIN dbo.TEAMFUNDRAISINGTEAM TFT ON TM.TEAMFUNDRAISINGTEAMID = TFT.ID
--JOIN dbo.TEAMFUNDRAISINGTEAM TFT2 ON TFT.ID= TFT2.PARENTTEAMID
JOIN dbo.TEAMFUNDRAISER TF ON TM.TEAMFUNDRAISERID = TF.ID
JOIN dbo.REGISTRANT R ON TF.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.EVENTEXTENSION EE ON R.EVENTID = EE.EVENTID
JOIN dbo.REVENUERECOGNITION RR ON RR.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.REVENUESPLIT RS ON RS.ID = RR.REVENUESPLITID
JOIN dbo.REVENUE RV ON RV.ID = RS.REVENUEID
WHERE RS.TYPECODE = 0
AND RV.TRANSACTIONTYPECODE = 0 AND RV.CONSTITUENTID <> R.CONSTITUENTID
AND TFT.ID IN (SELECT TEAMFUNDRAISINGTEAMID FROM #TEMP_Get_TFTID)
GROUP BY TFT.ID) TOT
JOIN TEAMEXTENSION TE ON TOT.ID= TE.TEAMFUNDRAISINGTEAMID --AND TE.TYPECODE= @TYPECODE
AND TE.DATEADDED <= getdate() -7
GROUP BY TOT.ID
ORDER BY TOT.ID
ELSE
SELECT TOT.ID, SUM(TOT.AMOUNT) AS DONATION
FROM
-- additional donation made by team members
(SELECT TFT.ID, SUM(RS.AMOUNT) AS AMOUNT
FROM dbo.TEAMFUNDRAISINGTEAMMEMBER TM
JOIN dbo.TEAMFUNDRAISINGTEAM TFT ON TM.TEAMFUNDRAISINGTEAMID = TFT.ID
--JOIN dbo.TEAMFUNDRAISINGTEAM TFT2 ON TFT.ID= TFT2.PARENTTEAMID
JOIN dbo.TEAMFUNDRAISER TF ON TM.TEAMFUNDRAISERID = TF.ID
JOIN dbo.REGISTRANT R ON TF.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.EVENTEXTENSION EE ON R.EVENTID = EE.EVENTID
JOIN dbo.REVENUE RV ON RV.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.REVENUESPLIT RS ON RS.REVENUEID = RV.ID
WHERE RS.TYPECODE = 0
AND RV.TRANSACTIONTYPECODE = 0
AND TFT.ID IN (SELECT TEAMFUNDRAISINGTEAMID FROM #TEMP_Get_TFTID)
GROUP BY TFT.ID
UNION ALL
-- donations collected by team members
SELECT TFT.ID, SUM(RS.AMOUNT) AS AMOUNT
FROM dbo.TEAMFUNDRAISINGTEAMMEMBER TM
JOIN dbo.TEAMFUNDRAISINGTEAM TFT ON TM.TEAMFUNDRAISINGTEAMID = TFT.ID
--JOIN dbo.TEAMFUNDRAISINGTEAM TFT2 ON TFT.ID= TFT2.PARENTTEAMID
JOIN dbo.TEAMFUNDRAISER TF ON TM.TEAMFUNDRAISERID = TF.ID
JOIN dbo.REGISTRANT R ON TF.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.EVENTEXTENSION EE ON R.EVENTID = EE.EVENTID
JOIN dbo.REVENUERECOGNITION RR ON RR.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.REVENUESPLIT RS ON RS.ID = RR.REVENUESPLITID
JOIN dbo.REVENUE RV ON RV.ID = RS.REVENUEID
WHERE RS.TYPECODE = 0
AND RV.TRANSACTIONTYPECODE = 0 AND RV.CONSTITUENTID <> R.CONSTITUENTID
AND TFT.ID IN (SELECT TEAMFUNDRAISINGTEAMID FROM #TEMP_Get_TFTID)
GROUP BY TFT.ID) TOT
JOIN TEAMEXTENSION TE ON TOT.ID= TE.TEAMFUNDRAISINGTEAMID --AND TE.TYPECODE= @TYPECODE
AND TE.DATEADDED BETWEEN CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,-1,getdate()))-1),DATEADD(mm,-1,getdate())),101)
AND CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(getdate())),getdate()),101)
GROUP BY TOT.ID
ORDER BY TOT.ID
END
ELSE
BEGIN
IF @WEEKORMONTHCODE= 1
SELECT TOT.ID, SUM(TOT.AMOUNT) AS DONATION
FROM
-- additional donation made by team members
(SELECT TFT.ID, SUM(RS.AMOUNT) AS AMOUNT
FROM dbo.TEAMFUNDRAISINGTEAMMEMBER TM
JOIN dbo.TEAMFUNDRAISINGTEAM TFT ON TM.TEAMFUNDRAISINGTEAMID = TFT.ID
JOIN dbo.TEAMFUNDRAISER TF ON TM.TEAMFUNDRAISERID = TF.ID
JOIN dbo.REGISTRANT R ON TF.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.EVENTEXTENSION EE ON R.EVENTID = EE.EVENTID
JOIN dbo.REVENUE RV ON RV.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.REVENUESPLIT RS ON RS.REVENUEID = RV.ID
WHERE RS.TYPECODE = 0
AND RV.TRANSACTIONTYPECODE = 0
GROUP BY TFT.ID
UNION ALL
-- donations collected by team members
SELECT TFT.ID, SUM(RS.AMOUNT) AS AMOUNT
FROM dbo.TEAMFUNDRAISINGTEAMMEMBER TM
JOIN dbo.TEAMFUNDRAISINGTEAM TFT ON TM.TEAMFUNDRAISINGTEAMID = TFT.ID
JOIN dbo.TEAMFUNDRAISER TF ON TM.TEAMFUNDRAISERID = TF.ID
JOIN dbo.REGISTRANT R ON TF.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.EVENTEXTENSION EE ON R.EVENTID = EE.EVENTID
JOIN dbo.REVENUERECOGNITION RR ON RR.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.REVENUESPLIT RS ON RS.ID = RR.REVENUESPLITID
JOIN dbo.REVENUE RV ON RV.ID = RS.REVENUEID
WHERE RS.TYPECODE = 0
AND RV.TRANSACTIONTYPECODE = 0 AND RV.CONSTITUENTID <> R.CONSTITUENTID
GROUP BY TFT.ID) TOT
JOIN TEAMEXTENSION TE ON TOT.ID= TE.TEAMFUNDRAISINGTEAMID AND TE.TYPECODE= @TYPECODE
AND TE.DATEADDED <= getdate() -7
GROUP BY TOT.ID
ORDER BY TOT.ID
ELSE
SELECT TOT.ID, SUM(TOT.AMOUNT) AS DONATION
FROM
-- additional donation made by team members
(SELECT TFT.ID, SUM(RS.AMOUNT) AS AMOUNT
FROM dbo.TEAMFUNDRAISINGTEAMMEMBER TM
JOIN dbo.TEAMFUNDRAISINGTEAM TFT ON TM.TEAMFUNDRAISINGTEAMID = TFT.ID
JOIN dbo.TEAMFUNDRAISER TF ON TM.TEAMFUNDRAISERID = TF.ID
JOIN dbo.REGISTRANT R ON TF.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.EVENTEXTENSION EE ON R.EVENTID = EE.EVENTID
JOIN dbo.REVENUE RV ON RV.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.REVENUESPLIT RS ON RS.REVENUEID = RV.ID
WHERE RS.TYPECODE = 0
AND RV.TRANSACTIONTYPECODE = 0
GROUP BY TFT.ID
UNION ALL
-- donations collected by team members
SELECT TFT.ID, SUM(RS.AMOUNT) AS AMOUNT
FROM dbo.TEAMFUNDRAISINGTEAMMEMBER TM
JOIN dbo.TEAMFUNDRAISINGTEAM TFT ON TM.TEAMFUNDRAISINGTEAMID = TFT.ID
JOIN dbo.TEAMFUNDRAISER TF ON TM.TEAMFUNDRAISERID = TF.ID
JOIN dbo.REGISTRANT R ON TF.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.EVENTEXTENSION EE ON R.EVENTID = EE.EVENTID
JOIN dbo.REVENUERECOGNITION RR ON RR.CONSTITUENTID = R.CONSTITUENTID
JOIN dbo.REVENUESPLIT RS ON RS.ID = RR.REVENUESPLITID
JOIN dbo.REVENUE RV ON RV.ID = RS.REVENUEID
WHERE RS.TYPECODE = 0
AND RV.TRANSACTIONTYPECODE = 0 AND RV.CONSTITUENTID <> R.CONSTITUENTID
GROUP BY TFT.ID) TOT
JOIN TEAMEXTENSION TE ON TOT.ID= TE.TEAMFUNDRAISINGTEAMID AND TE.TYPECODE= @TYPECODE
AND TE.DATEADDED BETWEEN CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,-1,getdate()))-1),DATEADD(mm,-1,getdate())),101)
AND CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(getdate())),getdate()),101)
GROUP BY TOT.ID
ORDER BY TOT.ID
END