USP_REPORT_EVENTAPPEALSUMMARY

Event appeals data source for event revenue report.

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@INCLUDESUBEVENTS bit IN
@CURRENCYCODE smallint IN

Definition

Copy


      CREATE procedure dbo.USP_REPORT_EVENTAPPEALSUMMARY
      (
        @EVENTID uniqueidentifier = null,
        @STARTDATE datetime = null,
        @ENDDATE datetime = null,
        @INCLUDESUBEVENTS bit = 0,
        @CURRENCYCODE smallint = 1
      )
      as
        set nocount on;

        begin try
          declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
          declare @SELECTEDCURRENCYID uniqueidentifier;
          declare @DECIMALDIGITS tinyint;
          declare @ROUNDINGTYPECODE tinyint;
          declare @ISO4217 nvarchar(3);
          declare @CURRENCYSYMBOL nvarchar(5);
          declare @SYMBOLDISPLAYSETTINGCODE tinyint;

          declare @EVENTS table
          (
            ID uniqueidentifier
          );

          if @CURRENCYCODE = 0
            select @SELECTEDCURRENCYID = EVENT.BASECURRENCYID
            from dbo.EVENT
            where EVENT.ID = @EVENTID;
          else
            set @SELECTEDCURRENCYID = @ORGANIZATIONCURRENCYID;

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

          if @INCLUDESUBEVENTS = 0
          begin
            insert into @EVENTS
            select @EVENTID;
          end
          else
          begin
            insert into @EVENTS
            select RELATEDEVENT.ID
            from dbo.EVENTHIERARCHY as RELATEDEVENT
              inner join dbo.EVENTHIERARCHY as SOURCEEVENT on SOURCEEVENT.ID = @EVENTID
            where RELATEDEVENT.HIERARCHYPATH.IsDescendantOf(SOURCEEVENT.HIERARCHYPATH) = 1;
          end;

          with [APPEALSINFO] as
          (
            select
              A.ID,
              sum(RSA.AMOUNTINCURRENCY) as AMOUNT,
              R.TYPECODE as TRANSACTIONTYPECODE,
              sum(
                case R.TYPECODE
                  when 1 then dbo.UFN_PLEDGE_GETBALANCEINCURRENCY(R.ID, @SELECTEDCURRENCYID)
                  else 0.0
                end) as PLEDGED_UNPAID,
              sum(
                case R.TYPECODE
                  when 1 then dbo.UFN_PLEDGE_GETAMOUNTPAIDINCURRENCY(R.ID, @SELECTEDCURRENCYID)
                  else 0.0
                end) as PLEDGED_PAID,
              sum(
                case
                  when EVENTREGISTRANTPAYMENT.ID is null then RSA.AMOUNTINCURRENCY
                  else 0.0
                end) as AMOUNT_NOTREGISTRATION
            from @EVENTS EVENTS
              inner join dbo.EVENTAPPEAL EA on EVENTS.ID = EA.EVENTID
              left join dbo.APPEAL A on EA.APPEALID = A.ID
              left join dbo.REVENUE_EXT REX on EA.APPEALID = REX.APPEALID
              left join dbo.FINANCIALTRANSACTION R on REX.ID = R.ID
              left join dbo.FINANCIALTRANSACTIONLINEITEM RS on R.ID = RS.FINANCIALTRANSACTIONID
              left join dbo.REVENUESPLIT_EXT RSE on RS.ID = RSE.ID
              left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) as RSA on RSA.ID = RS.ID
              left join dbo.EVENTREGISTRANTPAYMENT on RSE.ID = EVENTREGISTRANTPAYMENT.PAYMENTID
            where 
              EA.EVENTID in (select ID from @EVENTS) and
              R.ID is not null and
              R.DELETEDON is null and
              (
                RSE.APPLICATIONCODE in (0,4) or
                (
                  R.TYPECODE = 0 and
                  RSE.APPLICATIONCODE = 1 and
                  RSE.TYPECODE = 0
                )
              )
            group by A.ID, R.TYPECODE
          )
          select
            A.ID,
            A.NAME,
            G.GOALINCURRENCY,
            coalesce(DONATION.AMOUNT,0) DONATION_AMOUNT,
            case
              when A.GOAL = 0 then 0
              else coalesce(DONATION.AMOUNT,0) / G.GOALINCURRENCY * 100
            end as DONATION_PERCENT,
            coalesce(PLEDGE.PLEDGED_UNPAID,0) PLEDGED_UNPAID,
            case
              when A.GOAL = 0 then 0
              else coalesce(PLEDGE.PLEDGED_UNPAID,0) / G.GOALINCURRENCY * 100
            end as PLEDGED_UNPAID_PERCENT,
            coalesce(PLEDGE.PLEDGED_PAID,0) PLEDGED_PAID,
            case
              when A.GOAL = 0 then 0
              else coalesce(PLEDGE.PLEDGED_PAID,0) / G.GOALINCURRENCY * 100
            end as PLEDGED_PAID_PERCENT,
            coalesce(DONATION.AMOUNT,0) + coalesce(PLEDGE.PLEDGED_UNPAID,0) + coalesce(PLEDGE.PLEDGED_PAID,0) TOTAL,
            case
              when A.GOAL = 0 then 0
              else (coalesce(DONATION.AMOUNT,0) + coalesce(PLEDGE.PLEDGED_UNPAID,0) + coalesce(PLEDGE.PLEDGED_PAID,0)) / dbo.UFN_APPEAL_GETGOALINCURRENCY(A.ID, @SELECTEDCURRENCYID) * 100
            end as TOTAL_PERCENT,
            @ISO4217 [ISOCURRENCYCODE],
            @CURRENCYSYMBOL [CURRENCYSYMBOL],
            @SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
            @DECIMALDIGITS [DECIMALDIGITS],
            coalesce(DONATION.AMOUNT_NOTREGISTRATION, 0) DONATION_AMOUNT_NOTREGISTRATION
          from @EVENTS EVENTS
            inner join dbo.EVENTAPPEAL EA on EVENTS.ID = EA.EVENTID
            left join dbo.APPEAL A on EA.APPEALID = A.ID
            left join APPEALSINFO DONATION on DONATION.ID = A.ID and DONATION.TRANSACTIONTYPECODE in (0,3)
            left join APPEALSINFO PLEDGE on PLEDGE.ID = A.ID and PLEDGE.TRANSACTIONTYPECODE = 1
            left join dbo.UFN_APPEAL_GETGOALINCURRENCY_BULK(@SELECTEDCURRENCYID,@ORGANIZATIONCURRENCYID,@DECIMALDIGITS,@ROUNDINGTYPECODE) as G on G.ID = EA.APPEALID
          where EA.EVENTID in (select ID from @EVENTS);
        end try
        begin catch
          exec dbo.USP_RAISE_ERROR;
          return 1;
        end catch

        return 0;