USP_DATALIST_EVENTBUDGETANDEXPENSES

Lists budget and expense information for a given event to be used by the Event Budget and Expenses widget.

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN Event
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@INCLUDESUBEVENTS bit IN Include sub-events
@HASSUBEVENTS bit INOUT Has sub events

Definition

Copy


CREATE procedure dbo.USP_DATALIST_EVENTBUDGETANDEXPENSES
(
    @EVENTID uniqueidentifier,
    @CURRENTAPPUSERID uniqueidentifier = null
    @INCLUDESUBEVENTS bit = 0,
    @HASSUBEVENTS bit = null output
)
as
    set nocount on;

    declare @EVENTS table (ID uniqueidentifier);

    declare @EVENTHIERARCHYPATH hierarchyid;

    select
        @EVENTHIERARCHYPATH = HIERARCHYPATH
    from dbo.EVENTHIERARCHY
    where EVENTHIERARCHY.ID = @EVENTID;

    if @INCLUDESUBEVENTS = 1 and @EVENTHIERARCHYPATH is not null
        insert into @EVENTS
            select
                ID
            from dbo.EVENTHIERARCHY
            where EVENTHIERARCHY.HIERARCHYPATH.IsDescendantOf(@EVENTHIERARCHYPATH) = 1;        
    else
        insert into @EVENTS (ID) values (@EVENTID);

    -- Determine if the current event has sub events

    select
        @HASSUBEVENTS = case when count(ID) > 0 then 1 else 0 end
    from dbo.EVENTHIERARCHY
    where EVENTHIERARCHY.HIERARCHYPATH.IsDescendantOf(@EVENTHIERARCHYPATH) = 1
        and EVENTHIERARCHY.ID <> @EVENTID;    

    select
        'Paid' as AMOUNTCATEGORY,
        sum(EVENTEXPENSE.AMOUNTPAID) as AMOUNT        
    from @EVENTS events
    inner join dbo.EVENTEXPENSE
        on events.ID = EVENTEXPENSE.EVENTID
    where dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, events.ID) = 1

    union all

    select
        'Agreed' as AMOUNTCATEGORY,
        sum(EVENTEXPENSE.ACTUALAMOUNT) as AMOUNTAGREED        
    from @EVENTS events
    inner join dbo.EVENTEXPENSE
        on events.ID = EVENTEXPENSE.EVENTID
    where dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, events.ID) = 1

    union all

    select
        'Budgeted' as AMOUNTCATEGORY,
        sum(EVENTEXPENSE.BUDGETEDAMOUNT) as AMOUNT            
    from @EVENTS events
    inner join dbo.EVENTEXPENSE
        on events.ID = EVENTEXPENSE.EVENTID
    where dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, events.ID) = 1;