UFN_REVENUE_GETEVENTTOTAL_BY_CATEGORY

Provide total raised by revenue category for FAF events based on revenue configurations

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN

Definition

Copy


CREATE function [dbo].[UFN_REVENUE_GETEVENTTOTAL_BY_CATEGORY]
(
    @EVENTID uniqueidentifier
)
returns @EventRevenueByCategory table 
(
     REVENUETYPECODE    tinyint 
    ,REVENUETYPE        nvarchar(50)
    ,TOTAL                money
)
as 
begin
    declare 
            @ISUNPAIDPLEDGES                    bit = 0
          , @ISUNPAIDRECURRINGGIFTS                bit = 0
          , @ISSPONSORSHIPREVENUE                bit = 0
          , @ISUNPAIDSPONSORSHIPREVENUE            bit = 0
          , @ISREGISTRATIONREVENUE                bit = 0
          , @ISPENDINGMATCHINGGIFTS                bit = 0
          , @UNCONFIRMEDPARTICIPANTGIFTENTRY    bit = 0;

    -- Get configuration settings

    select 
        @ISUNPAIDPLEDGES                 = C.ISUNPAIDPLEDGES
      , @ISUNPAIDRECURRINGGIFTS             = C.ISUNPAIDRECURRINGGIFTS
      , @ISSPONSORSHIPREVENUE             = C.ISSPONSORSHIPREVENUE
      , @ISUNPAIDSPONSORSHIPREVENUE         = C.ISUNPAIDSPONSORSHIPREVENUE
      , @ISREGISTRATIONREVENUE             = C.ISREGISTRATIONREVENUE
      , @ISPENDINGMATCHINGGIFTS             = C.ISPENDINGMATCHINGGIFTS
      , @UNCONFIRMEDPARTICIPANTGIFTENTRY = C.UNCONFIRMEDPARTICIPANTGIFTENTRY
    from    dbo.FAFEVENTDONATIONOPTIONSCONFIG C
    where    EVENTID = @EVENTID;

    ;with [EVENTTOTAL_CTE]
    as    
    (
        select     sum(isnull([ORIGINAL amount],0)) as [ORIGINALAMOUNT]
                ,sum(isnull([APPLIED AMOUNT] ,0)) as [APPLIEDAMOUNT]
                ,TRANSACTIONTYPE                  as [REVENUETYPE]
        from    [dbo].[UFN_REVENUE_EVENTREVENUEDETAILS](@EVENTID)
        group by transactiontype
    )
     insert @EventRevenueByCategory 
    (
         [REVENUETYPECODE]    
        ,[REVENUETYPE]        
        ,[TOTAL]                
    )
    select    
            case 
                when [REVENUETYPE] = 'Donation'                then 0
                when [REVENUETYPE] = 'Offline Donation'     then 17
                when [REVENUETYPE] = 'Event registration'    then 1
                when [REVENUETYPE] = 'Pledge'                then 2
                when [REVENUETYPE] = 'Event sponsorship'    then 15
                when [REVENUETYPE] = 'Matching gift'        then 7
                when [REVENUETYPE] = 'Recurring gift'        then 3
            end as [REVENUETYPECODE]        
            ,[REVENUETYPE]
            ,case 
                when [REVENUETYPE] = 'Donation' THEN  [ORIGINALAMOUNT]
                when [REVENUETYPE] = 'Offline Donation' THEN 
                    case when @UNCONFIRMEDPARTICIPANTGIFTENTRY=1 then [ORIGINALAMOUNT] ELSE [APPLIEDAMOUNT] END
                when [REVENUETYPE] = 'Event registration'    then 
                    case when @ISREGISTRATIONREVENUE = 1 then [ORIGINALAMOUNT] else 0 end
                when [REVENUETYPE] = 'Pledge'                then 
                    case when @ISUNPAIDPLEDGES=1 then [ORIGINALAMOUNT] else [APPLIEDAMOUNT] end
                when [REVENUETYPE] = 'Event sponsorship'    then 
                    case when @ISSPONSORSHIPREVENUE = 0  then 0 else 
                        case when @ISUNPAIDSPONSORSHIPREVENUE=1 then  [ORIGINALAMOUNT] else [APPLIEDAMOUNT] end
                    end
                when [REVENUETYPE] = 'Matching gift'    then
                    case when @ISPENDINGMATCHINGGIFTS=1 then [ORIGINALAMOUNT] else [APPLIEDAMOUNT] end
                when [REVENUETYPE] = 'Recurring gift'    then 
                    case when @ISUNPAIDRECURRINGGIFTS=1 then [ORIGINALAMOUNT] else [APPLIEDAMOUNT] end
            end as [TOTAL]
    from    [EVENTTOTAL_CTE];

    return
end