USP_REPORT_EVENTSUMMARY

Data source for event summary report.

Parameters

Parameter Parameter Type Mode Description
@IDSETREGISTERID uniqueidentifier IN
@TO datetime IN
@FROM datetime IN
@INCLUDEINACTIVE bit IN
@CURRENCYCODE smallint IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_REPORT_EVENTSUMMARY
(
    @IDSETREGISTERID uniqueidentifier = null,
    @TO datetime,
    @FROM datetime,
    @INCLUDEINACTIVE bit = 0,
    @CURRENCYCODE smallint = null,
    @CURRENTAPPUSERID uniqueidentifier = null            
)
as
    set nocount on;
    set transaction isolation level read uncommitted;

    begin try

        declare @USERGRANTEDEVENTPAGE bit = 0;

        if dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
            begin
                select 
                    @USERGRANTEDEVENTPAGE = 1
            end
        else
            begin
                select 
                    @USERGRANTEDEVENTPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '03E8FBDC-7E2C-496D-8322-405FCFF75854')
            end        

        declare @IS_ENTERPRISE bit = dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('3117d2c8-7f46-42f2-abeb-b654f2f63046');
        declare @IS_SAME_CURRENCY bit = 1

        set @FROM = dbo.[UFN_DATE_GETEARLIESTTIME](@FROM);
        set @TO = dbo.[UFN_DATE_GETLATESTTIME](@TO);

    if @CURRENCYCODE = 0 --if using base currency check if all events have the same base currency

      begin

        declare @FLAGCURRENCY uniqueidentifier
          set @FLAGCURRENCY = (select top 1(EVENT.BASECURRENCYID) from EVENT where EVENT.STARTDATE between @FROM and @TO
                                                          and (@INCLUDEINACTIVE = 1 or EVENT.ISACTIVE = 1)
                                                          and (@CURRENTAPPUSERID is null or dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1)
                                                          and (EVENT.PROGRAMID is null))
          if @FLAGCURRENCY is not null
          begin

                if ((select count(*) from dbo.EVENT where EVENT.STARTDATE between @FROM and @TO
                                                            and (@INCLUDEINACTIVE = 1 or EVENT.ISACTIVE = 1)
                                                            and (@CURRENTAPPUSERID is null or dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1)
                                                            and (EVENT.PROGRAMID is null))

                <>

                (select count(*) from dbo.EVENT where EVENT.STARTDATE between @FROM and @TO
                                                            and (@INCLUDEINACTIVE = 1 or EVENT.ISACTIVE = 1)
                                                            and (@CURRENTAPPUSERID is null or dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1)
                                                            and (EVENT.PROGRAMID is null)
                                                                                  and EVENT.BASECURRENCYID = @FLAGCURRENCY))
                  begin        
                        set @IS_SAME_CURRENCY = 0
                  end
            end
      end

        if @IDSETREGISTERID is null
            select
                EVENT.NAME as EVENTNAME,
                APPEAL.NAME as APPEAL,
                EVENT.STARTDATE,
                EVENT.CAPACITY,
                (select count(ID) from dbo.INVITEE where EVENTID = EVENT.ID) as INVITED,
                (select count(ID) from dbo.REGISTRANT where EVENTID = EVENT.ID and dbo.[UFN_REGISTRANT_ISCANCELLED](ID) = 0) as REGISTERED,
                (select count(ID) from dbo.REGISTRANT where EVENTID = EVENT.ID and ATTENDED = 1 and dbo.[UFN_REGISTRANT_ISCANCELLED](ID) = 0) as ATTENDED,
                ( --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(CURRENCY.ID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),CURRENCY.DECIMALDIGITS,CURRENCY.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]
                ) + ( --Appeals

                    case when @IS_ENTERPRISE = 1 AND @CURRENCYCODE = 0 then
                            (
                              select coalesce(sum(dbo.UFN_APPEAL_GETTOTALREVENUEINCURRENCY(EVENTAPPEAL.APPEALID, ZEP.BASECURRENCYID)), 0)
                              from dbo.EVENT ZEP
                              inner join dbo.EVENTAPPEAL on EVENTAPPEAL.EVENTID = EVENT.ID
                              where ZEP.ID = EVENT.ID
                            )
                        when @IS_ENTERPRISE = 1 AND @CURRENCYCODE <> 0 then
                            (
                              select coalesce(sum(dbo.UFN_APPEAL_GETTOTALREVENUEINCURRENCY(EVENTAPPEAL.APPEALID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY())), 0)
                              from dbo.EVENT ZEP
                              inner join dbo.EVENTAPPEAL on EVENTAPPEAL.EVENTID = EVENT.ID
                              where ZEP.ID = EVENT.ID
                            )
                        else
                            0
                    end
                ) + ( --Team fundraising appeal

                    case when @IS_ENTERPRISE = 1 then
            coalesce(dbo.UFN_APPEAL_GETTOTALREVENUEINCURRENCY(EVENT.APPEALID, CURRENCY.ID), 0)
          else
                        0
                    end
                ) - ( --Team fundraising appeals that are also event registration - donations are double counted

                    select coalesce(sum(RS.AMOUNTINCURRENCY), 0)
                    from dbo.TEAMFUNDRAISINGTEAM
                    inner join dbo.REVENUE on TEAMFUNDRAISINGTEAM.APPEALID = REVENUE.APPEALID
          inner join dbo.REVENUESPLIT on REVENUE.ID = REVENUESPLIT.REVENUEID
          inner join dbo.EVENTREGISTRANTPAYMENT on REVENUESPLIT.ID = EVENTREGISTRANTPAYMENT.PAYMENTID
          inner join dbo.REGISTRANT on EVENTREGISTRANTPAYMENT.REGISTRANTID = REGISTRANT.ID and REGISTRANT.EVENTID = EVENT.ID
                    left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(CURRENCY.ID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),CURRENCY.DECIMALDIGITS,CURRENCY.ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID    
                    where TEAMFUNDRAISINGTEAM.APPEALID = EVENT.APPEALID and (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0)
                ) - ( --Appeals that are also event registration - donations are double counted

                    select coalesce(sum(RS.AMOUNTINCURRENCY), 0)
                    from dbo.EVENTAPPEAL
                    inner join dbo.REVENUE with (nolock) on REVENUE.APPEALID = EVENTAPPEAL.APPEALID
                    inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
                    inner join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(CURRENCY.ID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),CURRENCY.DECIMALDIGITS,CURRENCY.ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID
                    where EVENTAPPEAL.EVENTID = EVENT.ID and (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0)
                ) as [TOTALINCOME],
                (
          select
            coalesce(sum(EE.ACTUALAMOUNTINCURRENCY), 0)
          from dbo.EVENTEXPENSE
          left join dbo.UFN_EVENTEXPENSE_GETINCURRENCY_BULK(CURRENCY.ID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),CURRENCY.DECIMALDIGITS,CURRENCY.ROUNDINGTYPECODE) as EE on EE.ID = EVENTEXPENSE.ID
          where EVENTEXPENSE.EVENTID = EVENT.ID) as ACTUALAMOUNT,
          CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
                  CURRENCYPROPERTIES.CURRENCYSYMBOL,
                  CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
                  CURRENCY.DECIMALDIGITS,
          @IS_SAME_CURRENCY as SAMECURRENCY,
                    EVENT.ID as EVENTID,
                    @USERGRANTEDEVENTPAGE as USERGRANTEDEVENTPAGE
            from
                dbo.EVENT
            left join
                dbo.APPEAL on EVENT.APPEALID = APPEAL.ID
      left join
        dbo.CURRENCY on (CURRENCY.ID = EVENT.BASECURRENCYID AND @CURRENCYCODE = 0) OR (CURRENCY.ID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() AND @CURRENCYCODE <> 0)
      outer apply
        dbo.UFN_CURRENCY_GETPROPERTIES(CURRENCY.ID) CURRENCYPROPERTIES
            where
                EVENT.STARTDATE between @FROM and @TO
                and (@INCLUDEINACTIVE = 1 or EVENT.ISACTIVE = 1)
                and (@CURRENTAPPUSERID is null or dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1)
                and (EVENT.PROGRAMID is null)
            order by
                EVENT.NAME
        else
            select
                EVENT.NAME as EVENTNAME,
                APPEAL.NAME as APPEAL,
                EVENT.STARTDATE,
                EVENT.CAPACITY,
                (select count(ID) from dbo.INVITEE where EVENTID = EVENT.ID) as INVITED,
                (select count(ID) from dbo.REGISTRANT where EVENTID = EVENT.ID and dbo.[UFN_REGISTRANT_ISCANCELLED](ID) = 0) as REGISTERED,
                (select count(ID) from dbo.REGISTRANT where EVENTID = EVENT.ID and ATTENDED = 1 and dbo.[UFN_REGISTRANT_ISCANCELLED](ID) = 0) as ATTENDED,
                ( --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(CURRENCY.ID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),CURRENCY.DECIMALDIGITS,CURRENCY.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]
                ) + ( --Appeals

                    case when @IS_ENTERPRISE = 1 AND @CURRENCYCODE = 0 then
                            (
                              select coalesce(sum(dbo.UFN_APPEAL_GETTOTALREVENUEINCURRENCY(EVENTAPPEAL.APPEALID, ZEP.BASECURRENCYID)), 0)
                              from dbo.EVENT ZEP
                              inner join dbo.EVENTAPPEAL on EVENTAPPEAL.EVENTID = EVENT.ID
                              where ZEP.ID = EVENT.ID
                            )
                        when @IS_ENTERPRISE = 1 AND @CURRENCYCODE <> 0 then
                            (
                              select coalesce(sum(dbo.UFN_APPEAL_GETTOTALREVENUEINCURRENCY(EVENTAPPEAL.APPEALID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY())), 0)
                              from dbo.EVENT ZEP
                              inner join dbo.EVENTAPPEAL on EVENTAPPEAL.EVENTID = EVENT.ID
                              where ZEP.ID = EVENT.ID
                            )
                        else
                            0
                    end
                ) - ( --Appeals that are also event registration - donations are double counted

                    select coalesce(sum(RS.AMOUNTINCURRENCY), 0)
                    from dbo.EVENTAPPEAL
                    inner join dbo.REVENUE with (nolock) on REVENUE.APPEALID = EVENTAPPEAL.APPEALID
                    inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
                    inner join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(CURRENCY.ID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),CURRENCY.DECIMALDIGITS,CURRENCY.ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID
                    where EVENTAPPEAL.EVENTID = EVENT.ID and (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0)
                ) as [TOTALINCOME],
                (
          select coalesce(sum(EE.ACTUALAMOUNTINCURRENCY), 0)
          from dbo.EVENTEXPENSE
          left join dbo.UFN_EVENTEXPENSE_GETINCURRENCY_BULK(CURRENCY.ID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),CURRENCY.DECIMALDIGITS,CURRENCY.ROUNDINGTYPECODE) as EE on EE.ID = EVENTEXPENSE.ID
          where EVENTEXPENSE.EVENTID = EVENT.ID
          ) as ACTUALAMOUNT,
                CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
                CURRENCYPROPERTIES.CURRENCYSYMBOL,
              CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
                CURRENCY.DECIMALDIGITS,
          @IS_SAME_CURRENCY as SAMECURRENCY,
                    EVENT.ID as EVENTID,
                    @USERGRANTEDEVENTPAGE as USERGRANTEDEVENTPAGE
            from
                dbo.EVENT
            inner join
                dbo.UFN_IDSETREADER_GETRESULTS_GUID(@IDSETREGISTERID) SELECTION on EVENT.ID = SELECTION.ID and @IDSETREGISTERID is not null
            left join
                dbo.APPEAL on EVENT.APPEALID = APPEAL.ID
      left join
        dbo.CURRENCY on (CURRENCY.ID = EVENT.BASECURRENCYID AND @CURRENCYCODE = 0) OR (CURRENCY.ID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() AND @CURRENCYCODE <> 0)
      outer apply
        dbo.UFN_CURRENCY_GETPROPERTIES(CURRENCY.ID) CURRENCYPROPERTIES
            where
                EVENT.STARTDATE between @FROM and @TO
                and (@INCLUDEINACTIVE = 1 or EVENT.ISACTIVE = 1)
                and (@CURRENTAPPUSERID is null or dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1)
                and (EVENT.PROGRAMID is null)
            order by
                EVENT.NAME
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;