USP_FAFEVENT_REVENUESUMMARY

Show revenue summary report for an FAF Event

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN

Definition

Copy


CREATE procedure dbo.USP_FAFEVENT_REVENUESUMMARY
(
    @EVENTID uniqueidentifier = null,
    @STARTDATE datetime = null,
    @ENDDATE datetime = null    
)
as
begin

--SET @EVENTID = 'AAC21129-AF62-4997-8E89-6828E109F194'


IF (@EVENTID IS NOT NULL)
BEGIN

--Field name parameters

DECLARE  @RevenueSummaryReport AS TABLE (id uniqueidentifier, GroupName nvarchar(25), ChildCategory nvarchar(25), TotalRevenue  float, RevenueRetained float, NewRevenueRetained float)
DECLARE @REVENUETYPECODE integer = 0 --0:Donation, 1:Registration, 15:Sponsorship, 7: MatchingGift 

DECLARE @LASTYEAREVENTID uniqueidentifier --Last year event id 


--Revenue Types

--Donation: Actual, Goal, Percent Achieved, Count

DECLARE @VarGroupName nvarchar(25) = ''
DECLARE @VarTempChildCategory nvarchar(25) = ''
DECLARE @VarTempTotalRevenueActual money = 0.0
DECLARE @VarTempRevenueRetainedActual money = 0.0
DECLARE @VarTempNewRevenueRetainedActual  money = 0.0  
DECLARE @VarTempTotalRevenueGoal money = 0.0
DECLARE @VarTempRevenueRetainedGoal money = 0.0
DECLARE @VarTempNewRevenueRetainedGoal  money = 0.0  
DECLARE @VarTempTotalRevenueAchieved float = 0
DECLARE @VarTempRevenueRetainedAchieved float = 0
DECLARE @VarTempNewRevenueRetainedAchieved  float = 0  
DECLARE @VarTempTotalRevenueCount integer = 0
DECLARE @VarTempRevenueRetainedCount integer = 0
DECLARE @VarTempNewRevenueRetainedCount  integer = 0  
DECLARE @VarLastYearEventRevenueTotal  money = 0.0  

select @LASTYEAREVENTID = PRIORYEAREVENTID from dbo.EVENTEXTENSION where EVENTID = @EVENTID 

---A-Donation------------------------------------------------

SET @VarGroupName = 'Donation'
---1-Actual

---For donations, we want to count matching gift revenue as well

SET @VarTempChildCategory = 'Actual'
SELECT @VarTempTotalRevenueActual=ISNULL(sum(DA.TOTAL),0.0),@VarTempTotalRevenueCount=ISNULL(sum(DA.TOTALCOUNT),0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,0) DA WHERE DA.REVENUETYPECODE in (0, 7)
SELECT @VarTempRevenueRetainedActual=ISNULL(sum(DA.TOTAL),0.0),@VarTempRevenueRetainedCount=ISNULL(sum(DA.TOTALCOUNT),0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,1) DA WHERE DA.REVENUETYPECODE in (0, 7)

If @VarTempTotalRevenueActual > @VarTempRevenueRetainedActual
    SET @VarTempNewRevenueRetainedActual = @VarTempTotalRevenueActual - @VarTempRevenueRetainedActual

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueActual,@VarTempRevenueRetainedActual,@VarTempNewRevenueRetainedActual)

---2-Goal

SET @VarTempChildCategory = 'Goal'
SELECT @VarTempTotalRevenueGoal=ISNULL(EG.REVENUETOTAL - (EG.REVENUEREGISTRATION + EG.REVENUESPONSOR),0.0) FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID
--get registration revenue of last year event   

SELECT @VarLastYearEventRevenueTotal=ISNULL(DA.TOTAL,0.0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@LASTYEAREVENTID ,null,null,0) DA WHERE DA.REVENUETYPECODE=@REVENUETYPECODE  
SELECT @VarTempRevenueRetainedGoal=ISNULL((EG.REVENUERETENTION * (EG.REVENUETOTAL - (EG.REVENUEREGISTRATION + EG.REVENUESPONSOR))),0.0)* @VarLastYearEventRevenueTotal FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID

If @VarTempTotalRevenueGoal > @VarTempRevenueRetainedGoal
    SET @VarTempNewRevenueRetainedGoal = @VarTempTotalRevenueGoal - @VarTempRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueGoal,@VarTempRevenueRetainedGoal,@VarTempNewRevenueRetainedGoal)

---3-Percent Achieved

SET @VarTempChildCategory = '% Achieved'

If (@VarTempTotalRevenueGoal > 0)
    SET @VarTempTotalRevenueAchieved = @VarTempTotalRevenueActual / @VarTempTotalRevenueGoal

If (@VarTempRevenueRetainedGoal > 0)
    SET @VarTempRevenueRetainedAchieved = @VarTempRevenueRetainedActual / @VarTempRevenueRetainedGoal

If (@VarTempNewRevenueRetainedGoal > 0)                    
    SET @VarTempNewRevenueRetainedAchieved = @VarTempNewRevenueRetainedActual / @VarTempNewRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueAchieved,@VarTempRevenueRetainedAchieved,@VarTempNewRevenueRetainedAchieved)

---4-Count

SET @VarTempChildCategory = 'Count'
--@VarTempTotalRevenueCount: already got at Actual query


If @VarTempTotalRevenueCount > 0
    SET @VarTempNewRevenueRetainedCount = @VarTempTotalRevenueCount - @VarTempRevenueRetainedCount

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueCount,@VarTempRevenueRetainedCount,@VarTempNewRevenueRetainedCount)

-------------------------------------------------------------

---A-Registrations------------------------------------------------

SET @VarGroupName = 'Registrations'
SET @REVENUETYPECODE = 1
--Reset all var

SET @VarTempChildCategory = ''
SET @VarTempTotalRevenueActual = 0.0
SET @VarTempRevenueRetainedActual = 0.0
SET @VarTempNewRevenueRetainedActual = 0.0  --need to write retained function here

SET @VarTempTotalRevenueGoal = 0.0
SET @VarTempRevenueRetainedGoal = 0.0
SET @VarTempNewRevenueRetainedGoal = 0.0  --need to write retained function here

SET @VarTempTotalRevenueAchieved = 0
SET @VarTempRevenueRetainedAchieved = 0
SET @VarTempNewRevenueRetainedAchieved = 0  
SET @VarTempTotalRevenueCount = 0
SET @VarTempRevenueRetainedCount = 0
SET @VarTempNewRevenueRetainedCount = 0  

---1-Actual

SET @VarTempChildCategory = 'Actual'
SELECT @VarTempTotalRevenueActual=ISNULL(DA.TOTAL,0.0),@VarTempTotalRevenueCount=ISNULL(DA.TOTALCOUNT,0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,0) DA WHERE DA.REVENUETYPECODE=@REVENUETYPECODE
SELECT @VarTempRevenueRetainedActual=ISNULL(DA.TOTAL,0.0),@VarTempRevenueRetainedCount=ISNULL(DA.TOTALCOUNT,0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,1) DA WHERE DA.REVENUETYPECODE=@REVENUETYPECODE

If @VarTempTotalRevenueActual > @VarTempRevenueRetainedActual
    SET @VarTempNewRevenueRetainedActual = @VarTempTotalRevenueActual - @VarTempRevenueRetainedActual

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueActual,@VarTempRevenueRetainedActual,@VarTempNewRevenueRetainedActual)

---2-Goal

SET @VarTempChildCategory = 'Goal'
SELECT @VarTempTotalRevenueGoal=ISNULL(EG.REVENUEREGISTRATION,0.0) FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID
--SET @VarTempRevenueRetainedGoal = 0.0 --need to write new function here

--get registration revenue of last year event   

SELECT @VarLastYearEventRevenueTotal=ISNULL(DA.TOTAL,0.0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@LASTYEAREVENTID ,null,null,0) DA WHERE DA.REVENUETYPECODE=@REVENUETYPECODE  
SELECT @VarTempRevenueRetainedGoal=ISNULL(EG.REVENUEREGISTRATIONRETENTION,0.0) * @VarLastYearEventRevenueTotal FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID  

--SELECT @VarTempRevenueRetainedGoal=ISNULL(EG.REVENUEREGISTRATIONRETENTION*100,0.0) FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID


If @VarTempTotalRevenueGoal > @VarTempRevenueRetainedGoal
    SET @VarTempNewRevenueRetainedGoal = @VarTempTotalRevenueGoal - @VarTempRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueGoal,@VarTempRevenueRetainedGoal,@VarTempNewRevenueRetainedGoal)

---3-Percent Achieved

SET @VarTempChildCategory = '% Achieved'

If (@VarTempTotalRevenueGoal > 0)
    SET @VarTempTotalRevenueAchieved = @VarTempTotalRevenueActual / @VarTempTotalRevenueGoal

If (@VarTempRevenueRetainedGoal > 0)
    SET @VarTempRevenueRetainedAchieved = @VarTempRevenueRetainedActual / @VarTempRevenueRetainedGoal

If (@VarTempNewRevenueRetainedGoal > 0)                    
    SET @VarTempNewRevenueRetainedAchieved = @VarTempNewRevenueRetainedActual / @VarTempNewRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueAchieved,@VarTempRevenueRetainedAchieved,@VarTempNewRevenueRetainedAchieved)

---4-Count

SET @VarTempChildCategory = 'Count'
--@VarTempTotalRevenueCount: same


If @VarTempTotalRevenueCount > 0
    SET @VarTempNewRevenueRetainedCount = @VarTempTotalRevenueCount - @VarTempRevenueRetainedCount

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueCount,@VarTempRevenueRetainedCount,@VarTempNewRevenueRetainedCount)

/*
---------- PLEDGES
--- Pledges
SET @VarGroupName = 'Pledges'
SET @REVENUETYPECODE = 1
--Reset all var
SET @VarTempChildCategory = ''
SET @VarTempTotalRevenueActual = 0.0
SET @VarTempRevenueRetainedActual = 0.0
SET @VarTempNewRevenueRetainedActual = 0.0  --need to write retained function here
SET @VarTempTotalRevenueGoal = 0.0
SET @VarTempRevenueRetainedGoal = 0.0
SET @VarTempNewRevenueRetainedGoal = 0.0  --need to write retained function here
SET @VarTempTotalRevenueAchieved = 0
SET @VarTempRevenueRetainedAchieved = 0
SET @VarTempNewRevenueRetainedAchieved = 0  
SET @VarTempTotalRevenueCount = 0
SET @VarTempRevenueRetainedCount = 0
SET @VarTempNewRevenueRetainedCount = 0  

SET @VarTempChildCategory = 'Actual'
SELECT @VarTempTotalRevenueActual=ISNULL(sum(DA.TOTAL),0.0),@VarTempTotalRevenueCount=ISNULL(sum(DA.TOTALCOUNT),0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,0) DA WHERE DA.REVENUETYPECODE = 2
SELECT @VarTempRevenueRetainedActual=ISNULL(sum(DA.TOTAL),0.0),@VarTempRevenueRetainedCount=ISNULL(sum(DA.TOTALCOUNT),0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,1) DA WHERE DA.REVENUETYPECODE  = 2

If @VarTempTotalRevenueActual > @VarTempRevenueRetainedActual
    SET @VarTempNewRevenueRetainedActual = @VarTempTotalRevenueActual - @VarTempRevenueRetainedActual

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueActual,@VarTempRevenueRetainedActual,@VarTempNewRevenueRetainedActual)

SET @VarTempChildCategory = 'Goal'
SELECT @VarTempTotalRevenueGoal=ISNULL(EG.REVENUETOTAL - (EG.REVENUEREGISTRATION + EG.REVENUESPONSOR),0.0) FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID
SELECT @VarTempRevenueRetainedGoal=ISNULL(((EG.REVENUERETENTION*100) * (EG.REVENUETOTAL - (EG.REVENUEREGISTRATION + EG.REVENUESPONSOR))),0.0) FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID

If @VarTempTotalRevenueGoal > @VarTempRevenueRetainedGoal
    SET @VarTempNewRevenueRetainedGoal = @VarTempTotalRevenueGoal - @VarTempRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueGoal,@VarTempRevenueRetainedGoal,@VarTempNewRevenueRetainedGoal)

---3-Percent Achieved
SET @VarTempChildCategory = '% Achieved'

If (@VarTempTotalRevenueGoal > 0)
    SET @VarTempTotalRevenueAchieved = @VarTempTotalRevenueActual / @VarTempTotalRevenueGoal

If (@VarTempRevenueRetainedGoal > 0)
    SET @VarTempRevenueRetainedAchieved = @VarTempRevenueRetainedActual / @VarTempRevenueRetainedGoal

If (@VarTempNewRevenueRetainedGoal > 0)                    
    SET @VarTempNewRevenueRetainedAchieved = @VarTempNewRevenueRetainedActual / @VarTempNewRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueAchieved,@VarTempRevenueRetainedAchieved,@VarTempNewRevenueRetainedAchieved)

---4-Count
SET @VarTempChildCategory = 'Count'
--@VarTempTotalRevenueCount: already got at Actual query

If @VarTempTotalRevenueCount > 0
    SET @VarTempNewRevenueRetainedCount = @VarTempTotalRevenueCount - @VarTempRevenueRetainedCount

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueCount,@VarTempRevenueRetainedCount,@VarTempNewRevenueRetainedCount)

--- END of PLEDGES
*/




---------- Pending gifts

--- Pledges

SET @VarGroupName = 'Pending'
SET @REVENUETYPECODE = 2
--Reset all var

SET @VarTempChildCategory = ''
SET @VarTempTotalRevenueActual = 0.0
SET @VarTempRevenueRetainedActual = 0.0
SET @VarTempNewRevenueRetainedActual = 0.0  --need to write retained function here

SET @VarTempTotalRevenueGoal = 0.0
SET @VarTempRevenueRetainedGoal = 0.0
SET @VarTempNewRevenueRetainedGoal = 0.0  --need to write retained function here

SET @VarTempTotalRevenueAchieved = 0
SET @VarTempRevenueRetainedAchieved = 0
SET @VarTempNewRevenueRetainedAchieved = 0  
SET @VarTempTotalRevenueCount = 0
SET @VarTempRevenueRetainedCount = 0
SET @VarTempNewRevenueRetainedCount = 0  

SET @VarTempChildCategory = 'Actual'
SELECT @VarTempTotalRevenueActual=ISNULL(sum(DA.TOTAL),0.0),@VarTempTotalRevenueCount=ISNULL(sum(DA.TOTALCOUNT),0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,0) DA WHERE DA.REVENUETYPECODE = 4
SELECT @VarTempRevenueRetainedActual=ISNULL(sum(DA.TOTAL),0.0),@VarTempRevenueRetainedCount=ISNULL(sum(DA.TOTALCOUNT),0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,1) DA WHERE DA.REVENUETYPECODE  = 4



    select @VarTempTotalRevenueActual = sum(RS.Amount) , 
        @VarTempTotalRevenueCount = count(*)
    from dbo.EVENT E With (NOLOCK)
    join dbo.REVENUE R With (NOLOCK) on E.APPEALID = R.APPEALID and E.ID = @EVENTID 
    join dbo.REVENUESPLIT RS With (NOLOCK) on R.ID = RS.REVENUEID and (R.TRANSACTIONTYPECODE = 0 and RS.APPLICATIONCODE = 17   )
    join dbo.CONSTITUENT DONS With (NOLOCK) on R.CONSTITUENTID = DONS.ID 
    left join dbo.REVENUEPAYMENTMETHOD RPM With (NOLOCK) on RPM.REVENUEID = R.ID 
  where APPLICATION = 'Pending gift'
   AND R.DATE BETWEEN ISNULL(@STARTDATE, '1/1/1900')  AND ISNULL(@ENDDATE, '12/30/2999')

print @VarTempTotalRevenueActual
print @VarTempTotalRevenueCount

If @VarTempTotalRevenueActual > @VarTempRevenueRetainedActual
    SET @VarTempNewRevenueRetainedActual = @VarTempTotalRevenueActual - @VarTempRevenueRetainedActual

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueActual,@VarTempRevenueRetainedActual,@VarTempNewRevenueRetainedActual)

SET @VarTempChildCategory = 'Goal'
SELECT @VarTempTotalRevenueGoal=ISNULL(EG.REVENUETOTAL - (EG.REVENUEREGISTRATION + EG.REVENUESPONSOR),0.0) FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID
--get Pledges revenue of last year event   

SELECT @VarLastYearEventRevenueTotal=ISNULL(DA.TOTAL,0.0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@LASTYEAREVENTID ,null,null,0) DA WHERE DA.REVENUETYPECODE=@REVENUETYPECODE  
SELECT @VarTempRevenueRetainedGoal=ISNULL((EG.REVENUERETENTION * (EG.REVENUETOTAL - (EG.REVENUEREGISTRATION + EG.REVENUESPONSOR))),0.0)* @VarLastYearEventRevenueTotal FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID

If @VarTempTotalRevenueGoal > @VarTempRevenueRetainedGoal
    SET @VarTempNewRevenueRetainedGoal = @VarTempTotalRevenueGoal - @VarTempRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueGoal,@VarTempRevenueRetainedGoal,@VarTempNewRevenueRetainedGoal)

---3-Percent Achieved

SET @VarTempChildCategory = '% Achieved'

If (@VarTempTotalRevenueGoal > 0)
    SET @VarTempTotalRevenueAchieved = @VarTempTotalRevenueActual / @VarTempTotalRevenueGoal

If (@VarTempRevenueRetainedGoal > 0)
    SET @VarTempRevenueRetainedAchieved = @VarTempRevenueRetainedActual / @VarTempRevenueRetainedGoal

If (@VarTempNewRevenueRetainedGoal > 0)                    
    SET @VarTempNewRevenueRetainedAchieved = @VarTempNewRevenueRetainedActual / @VarTempNewRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueAchieved,@VarTempRevenueRetainedAchieved,@VarTempNewRevenueRetainedAchieved)

---4-Count

SET @VarTempChildCategory = 'Count'
--@VarTempTotalRevenueCount: already got at Actual query


If @VarTempTotalRevenueCount > 0
    SET @VarTempNewRevenueRetainedCount = @VarTempTotalRevenueCount - @VarTempRevenueRetainedCount

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueCount,@VarTempRevenueRetainedCount,@VarTempNewRevenueRetainedCount)

--- END of PENDING gifts



-------------------------------------------------------------

---A-Sponsorships------------------------------------------------

SET @VarGroupName = 'Sponsorships'
SET @REVENUETYPECODE = 15
--Reset all var

SET @VarTempChildCategory = ''
SET @VarTempTotalRevenueActual = 0.0
SET @VarTempRevenueRetainedActual = 0.0
SET @VarTempNewRevenueRetainedActual = 0.0  --need to write retained function here

SET @VarTempTotalRevenueGoal = 0.0
SET @VarTempRevenueRetainedGoal = 0.0
SET @VarTempNewRevenueRetainedGoal = 0.0  --need to write retained function here

SET @VarTempTotalRevenueAchieved = 0
SET @VarTempRevenueRetainedAchieved = 0
SET @VarTempNewRevenueRetainedAchieved = 0  
SET @VarTempTotalRevenueCount = 0
SET @VarTempRevenueRetainedCount = 0
SET @VarTempNewRevenueRetainedCount = 0  
set @VarLastYearEventRevenueTotal = 0

---1-Actual

SET @VarTempChildCategory = 'Actual'
SELECT @VarTempTotalRevenueActual=ISNULL(DA.TOTAL,0.0),@VarTempTotalRevenueCount=ISNULL(DA.TOTALCOUNT,0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,0) DA WHERE DA.REVENUETYPECODE=@REVENUETYPECODE
SELECT @VarTempRevenueRetainedActual=ISNULL(DA.TOTAL,0.0),@VarTempRevenueRetainedCount=ISNULL(DA.TOTALCOUNT,0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@EVENTID,@STARTDATE,@ENDDATE,1) DA WHERE DA.REVENUETYPECODE=@REVENUETYPECODE

If @VarTempTotalRevenueActual > @VarTempRevenueRetainedActual
    SET @VarTempNewRevenueRetainedActual = @VarTempTotalRevenueActual - @VarTempRevenueRetainedActual

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueActual,@VarTempRevenueRetainedActual,@VarTempNewRevenueRetainedActual)

---2-Goal

SET @VarTempChildCategory = 'Goal'
SELECT @VarTempTotalRevenueGoal=ISNULL(EG.REVENUESPONSOR,0.0) FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID
--get sponsorship revenue of last year event 

SELECT @VarLastYearEventRevenueTotal=ISNULL(DA.TOTAL,0.0) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@LASTYEAREVENTID ,null,null,0) DA WHERE DA.REVENUETYPECODE=@REVENUETYPECODE
SELECT @VarTempRevenueRetainedGoal=ISNULL(EG.REVENUESPONSORRETENTION,0.0) * @VarLastYearEventRevenueTotal FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID


If @VarTempTotalRevenueGoal > @VarTempRevenueRetainedGoal
    SET @VarTempNewRevenueRetainedGoal = @VarTempTotalRevenueGoal - @VarTempRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueGoal,@VarTempRevenueRetainedGoal,@VarTempNewRevenueRetainedGoal)

---3-Percent Achieved

SET @VarTempChildCategory = '% Achieved'

If (@VarTempTotalRevenueGoal > 0)
    SET @VarTempTotalRevenueAchieved = @VarTempTotalRevenueActual / @VarTempTotalRevenueGoal

If (@VarTempRevenueRetainedGoal > 0)
    SET @VarTempRevenueRetainedAchieved = @VarTempRevenueRetainedActual / @VarTempRevenueRetainedGoal

If (@VarTempNewRevenueRetainedGoal > 0)                    
    SET @VarTempNewRevenueRetainedAchieved = @VarTempNewRevenueRetainedActual / @VarTempNewRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueAchieved,@VarTempRevenueRetainedAchieved,@VarTempNewRevenueRetainedAchieved)

---4-Count

SET @VarTempChildCategory = 'Count'
--@VarTempTotalRevenueCount: same way


If @VarTempTotalRevenueCount > 0
    SET @VarTempNewRevenueRetainedCount = @VarTempTotalRevenueCount - @VarTempRevenueRetainedCount

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueCount,@VarTempRevenueRetainedCount,@VarTempNewRevenueRetainedCount)

-------------------------------------------------------------

---A-Total------------------------------------------------

SET @VarGroupName = 'Total'
SET @REVENUETYPECODE = 1
--Reset all var

SET @VarTempChildCategory = ''
SET @VarTempTotalRevenueActual = 0.0
SET @VarTempRevenueRetainedActual = 0.0
SET @VarTempNewRevenueRetainedActual = 0.0  --need to write retained function here

SET @VarTempTotalRevenueGoal = 0.0
SET @VarTempRevenueRetainedGoal = 0.0
SET @VarTempNewRevenueRetainedGoal = 0.0  --need to write retained function here

SET @VarTempTotalRevenueAchieved = 0
SET @VarTempRevenueRetainedAchieved = 0
SET @VarTempNewRevenueRetainedAchieved = 0  
SET @VarTempTotalRevenueCount = 0
SET @VarTempRevenueRetainedCount = 0
SET @VarTempNewRevenueRetainedCount = 0  

---1-Actual

SET @VarTempChildCategory = 'Actual'
--Total = DonationActual + RegistrationsActual + SponsorshipActual


--SELECT * FROM @RevenueSummaryReport WHERE ChildCategory = 'Actual'

SELECT @VarTempTotalRevenueActual=SUM(TotalRevenue), @VarTempRevenueRetainedActual=SUM(RevenueRetained),@VarTempNewRevenueRetainedActual=SUM(NewRevenueRetained) FROM @RevenueSummaryReport WHERE ChildCategory = 'Actual'

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueActual,@VarTempRevenueRetainedActual,@VarTempNewRevenueRetainedActual)

---2-Goal

SET @VarTempChildCategory = 'Goal'
--get total revenue of last year event 

SELECT @VarLastYearEventRevenueTotal=SUM(ISNULL(TOTAL,0.0)) FROM dbo.UFN_FAFEVENT_GETEVENTTOTAL_BY_CATEGORY(@LASTYEAREVENTID ,null,null,0
SELECT @VarTempTotalRevenueGoal=ISNULL(EG.REVENUETOTAL,0.0),@VarTempRevenueRetainedGoal=ISNULL(EG.REVENUERETENTION,0.0)*@VarLastYearEventRevenueTotal FROM dbo.EVENTGOAL EG (NOLOCK) LEFT JOIN dbo.EVENT E (NOLOCK)ON EG.EVENTID = E.ID WHERE E.ID = @EVENTID

If @VarTempTotalRevenueGoal > @VarTempRevenueRetainedGoal
    SET @VarTempNewRevenueRetainedGoal = @VarTempTotalRevenueGoal - @VarTempRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueGoal,@VarTempRevenueRetainedGoal,@VarTempNewRevenueRetainedGoal)

---3-Percent Achieved

SET @VarTempChildCategory = '% Achieved'

If (@VarTempTotalRevenueGoal > 0)
    SET @VarTempTotalRevenueAchieved = @VarTempTotalRevenueActual / @VarTempTotalRevenueGoal

If (@VarTempRevenueRetainedGoal > 0)
    SET @VarTempRevenueRetainedAchieved = @VarTempRevenueRetainedActual / @VarTempRevenueRetainedGoal

If (@VarTempNewRevenueRetainedGoal > 0)                    
    SET @VarTempNewRevenueRetainedAchieved = @VarTempNewRevenueRetainedActual / @VarTempNewRevenueRetainedGoal

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueAchieved,@VarTempRevenueRetainedAchieved,@VarTempNewRevenueRetainedAchieved)

---4-Count

SET @VarTempChildCategory = 'Count'
SELECT @VarTempTotalRevenueCount=SUM(TotalRevenue), @VarTempRevenueRetainedCount=SUM(RevenueRetained) FROM @RevenueSummaryReport WHERE ChildCategory = 'Count'

If @VarTempTotalRevenueCount > 0
    SET @VarTempNewRevenueRetainedCount = @VarTempTotalRevenueCount - @VarTempRevenueRetainedCount

INSERT INTO @RevenueSummaryReport (id, GroupName, ChildCategory, TotalRevenue, RevenueRetained, NewRevenueRetained)
VALUES(NewID(),@VarGroupName,@VarTempChildCategory,@VarTempTotalRevenueCount,@VarTempRevenueRetainedCount,@VarTempNewRevenueRetainedCount)

--Never use SELECT * b/c it costs more

SELECT ID, GroupName,ChildCategory,TotalRevenue,RevenueRetained,NewRevenueRetained FROM @RevenueSummaryReport
-------


END

end