USP_DATALIST_EVENTPROFILEREPORT_FINANCIALSUMMARY

Returns financial summary information for an event.

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN Event ID
@CURRENCYCODE smallint IN Currency Code
@ISVISIBLE bit IN Visible

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_EVENTPROFILEREPORT_FINANCIALSUMMARY
                (
                    @EVENTID uniqueidentifier,
                    @CURRENCYCODE smallint = null,
                    @ISVISIBLE bit = 1
                )
                as
                    set nocount on;

                    if @ISVISIBLE = 1
                    begin
                        declare @EVENTTEAMFUNDRAISINGINFO table(ID uniqueidentifier, AMOUNTSOLICITED money);
                        declare @EVENTAPPEALINFO table(ID uniqueidentifier, AMOUNTSOLICITED money);
                        declare @SELECTEDCURRENCYID uniqueidentifier;
                        declare @DECIMALDIGITS tinyint;
                        declare @ROUNDINGTYPECODE tinyint;

                        if @CURRENCYCODE = 0
                        begin
                            select @SELECTEDCURRENCYID = EVENT.BASECURRENCYID
                            from dbo.EVENT
                            where EVENT.ID = @EVENTID;
                        end
                        else
                        begin
                            set @SELECTEDCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                        end

                        select
                            @DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
                            @ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
                        from dbo.CURRENCY
                        where CURRENCY.ID = @SELECTEDCURRENCYID;

                        insert into @EVENTAPPEALINFO(ID,AMOUNTSOLICITED)
                            select
                                EVENT.ID,
                                case when REVENUE.ID is null then 0 else sum(coalesce(RS.AMOUNTINCURRENCY,0)) end TOTAL
                            from dbo.EVENT
                                inner join dbo.EVENTAPPEAL on EVENTAPPEAL.EVENTID = EVENT.ID
                                inner join dbo.REVENUE with (nolock) on REVENUE.APPEALID = EVENTAPPEAL.APPEALID
                                inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
                                and (
                                            (
                                                (REVENUE.TRANSACTIONTYPECODE = 1 
                                                    or (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0,3))
                                                )    --Revenue is a pledge, gift, and recurring gift payment

                                            )        --Fundraiser has raised money for the event/appeal in question

                                                    --Event registration donation doesn't need to be added because it's already counted in payment

                                    )
                                left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID
                            where event.ID = @EVENTID
                            group by EVENT.ID,REVENUE.ID;

                        insert into @EVENTTEAMFUNDRAISINGINFO(ID,AMOUNTSOLICITED)
                            select
                                EVENT.ID,
                                case when REVENUE.ID is null then 0 else sum(coalesce(RSOL.AMOUNTINCURRENCY,0)) end TOTAL
                            from dbo.EVENT 
                                inner join dbo.TEAMFUNDRAISINGTEAM on TEAMFUNDRAISINGTEAM.APPEALID = EVENT.APPEALID
                                left join dbo.TEAMFUNDRAISINGTEAMMEMBER on TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISINGTEAMID = TEAMFUNDRAISINGTEAM.ID 
                                left join dbo.TEAMFUNDRAISER on TEAMFUNDRAISER.APPEALID = EVENT.APPEALID    and TEAMFUNDRAISER.ID = TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISERID
                                left join dbo.REVENUESOLICITOR on REVENUESOLICITOR.CONSTITUENTID = TEAMFUNDRAISER.CONSTITUENTID
                                left join dbo.REVENUESPLIT on REVENUESPLIT.ID = REVENUESOLICITOR.REVENUESPLITID
                                left join dbo.REVENUE with (nolock) on REVENUE.APPEALID = EVENT.APPEALID and REVENUESPLIT.REVENUEID = REVENUE.ID 
                                and (
                                            (
                                                (REVENUE.TRANSACTIONTYPECODE = 1 
                                                    or (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0,3))
                                                )    --Revenue is a pledge, gift, and recurring gift payment

                                            )        --Fundraiser has raised money for the event/appeal in question

                                                    --Event registration donation doesn't need to be added because it's already counted in payment

                                        or REVENUESOLICITOR.ID is null    --Fundraiser has not raised anything yet

                                        or ((not REVENUESOLICITOR.ID is null) and REVENUE.ID is null)    --Fundraiser has raised money, but it is not for the appeal/event in question

                                    )
                                left join dbo.UFN_REVENUESOLICITOR_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as RSOL on RSOL.ID = REVENUESOLICITOR.ID  
                            where event.ID = @EVENTID
                            group by EVENT.ID, REVENUE.ID;

                            select
                            (
                                select coalesce(sum(EE.ACTUALAMOUNTINCURRENCY), 0
                                from dbo.EVENTEXPENSE 
                                left join dbo.UFN_EVENTEXPENSE_GETINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as EE on EE.ID = EVENTEXPENSE.ID
                                where EVENTEXPENSE.EVENTID = EVENT.ID
                            ) as ACTUALAMOUNT,
                            ( --Payments

                                select coalesce(sum(RS.AMOUNTINCURRENCY), 0
                                    from dbo.EVENTREGISTRANTPAYMENT P 
                                    inner join dbo.REGISTRANT on P.REGISTRANTID = REGISTRANT.ID
                                    inner join dbo.REVENUESPLIT on P.PAYMENTID = REVENUESPLIT.ID 
                                    left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID
                                    where REGISTRANT.EVENTID = EVENT.ID
                                    ) - 
                            ( --Credits

                                select coalesce(sum([CREDITITEM].[TOTAL]), 0
                                    from dbo.[CREDITITEM]
                                    inner join dbo.[SALESORDERITEM] on [SALESORDERITEM].[ID] = [CREDITITEM].[SALESORDERITEMID]
                                    inner join dbo.[SALESORDERITEMEVENTREGISTRATION] on [SALESORDERITEMEVENTREGISTRATION].[ID] = [SALESORDERITEM].[ID]
                                    inner join dbo.[REGISTRANT] on [SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] = [REGISTRANT].[ID]
                                    where [REGISTRANT].[EVENTID] = [EVENT].[ID]
                            ) +
                            ( -- Teamfundraising totals

                                coalesce((select sum(AMOUNTSOLICITED) from @EVENTTEAMFUNDRAISINGINFO EVENTTEAMFUNDRAISINGINFO where EVENTTEAMFUNDRAISINGINFO.ID = EVENT.ID),0)
                            ) +
                            ( -- Appeal income

                                coalesce((select sum(AMOUNTSOLICITED) from @EVENTAPPEALINFO EVENTAPPEALINFO where EVENTAPPEALINFO.ID = EVENT.ID),0)
                            )
                            as [TOTALINCOME],
                                    (select count(distinct CONSTITUENTID) from dbo.INVITEE where INVITEE.EVENTID = EVENT.ID) as INVITED,
                                    (select count(ID) from dbo.REGISTRANT where EVENTID = EVENT.ID  and dbo.[UFN_REGISTRANT_ISCANCELLED](REGISTRANT.ID) = 0 and REGISTRANT.WILLNOTATTEND = 0) as REGISTERED,
                                    (select count(ID) from dbo.REGISTRANT where EVENTID = EVENT.ID and ATTENDED = 1  and dbo.[UFN_REGISTRANT_ISCANCELLED](REGISTRANT.ID) = 0) as ATTENDED,
                                    EVENT.CAPACITY,
                                    (select count(GUESTS.ID) from dbo.REGISTRANT as GUESTS where GUESTS.GUESTOFREGISTRANTID is not null and GUESTS.EVENTID = EVENT.ID and dbo.[UFN_REGISTRANT_ISCANCELLED](GUESTS.ID) = 0 and GUESTS.WILLNOTATTEND = 0) as GUESTS,
                                    CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
                                    CURRENCYPROPERTIES.CURRENCYSYMBOL,
                                    CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
                                    CURRENCYPROPERTIES.DECIMALDIGITS
                                from
                                    dbo.EVENT
                                    outer apply dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES
                                where 
                                    EVENT.ID = @EVENTID;
                    end