USP_REPORT_EVENTDESIGNATION

Event designations for reports

Parameters

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

Definition

Copy


CREATE procedure dbo.USP_REPORT_EVENTDESIGNATION
(
    @EVENTID uniqueidentifier,
    @CURRENCYCODE smallint = null,
    @INCLUDESUBEVENTS bit = 0,
    @STARTDATE datetime = null,
    @ENDDATE datetime = null
)
as
begin
    declare @SELECTEDCURRENCYID uniqueidentifier = null;
    declare @DECIMALDIGITS tinyint;
    declare @ROUNDINGTYPECODE tinyint;

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

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

    declare @EVENTS table
    (
        ID uniqueidentifier
    )
    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;

declare @BASETABLE table (DESIGNATIONID uniqueidentifier, REGISTRANTID uniqueidentifier, LINEITEMID uniqueidentifier);

insert into @BASETABLE (DESIGNATIONID, REGISTRANTID, LINEITEMID)
select
    DESIGNATION.ID,
    REGISTRANT.ID,
    FTLI.ID
from 
    dbo.EVENT
inner join
    dbo.EVENTDESIGNATION on EVENTDESIGNATION.EVENTID = EVENT.ID
inner join
    dbo.DESIGNATION on DESIGNATION.ID = EVENTDESIGNATION.DESIGNATIONID
left join
    dbo.REGISTRANT on REGISTRANT.EVENTID = EVENT.ID
left join 
    dbo.EVENTREGISTRANTPAYMENT ERP on ERP.REGISTRANTID = REGISTRANT.ID
left join
    dbo.REGISTRANTDESIGNATION RD on RD.REGISTRANTID = ERP.REGISTRANTID
left join
    (select FTLI.ID, EXT.DESIGNATIONID, FTLI.TRANSACTIONAMOUNT from dbo.FINANCIALTRANSACTIONLINEITEM FTLI inner join dbo.REVENUESPLIT_EXT EXT on FTLI.ID = EXT.ID) FTLI 
        on FTLI.ID = ERP.PAYMENTID and FTLI.DESIGNATIONID = DESIGNATION.ID
where
    EVENTDESIGNATION.EVENTID in (select ID from @EVENTS) and
    (((@STARTDATE is null) or (EVENT.STARTDATE = @STARTDATE)) and
    ((@ENDDATE is null) or (EVENT.ENDDATE = @ENDDATE)))

declare @AMOUNTTABLE table (DESIGNATIONID uniqueidentifier, REGCOUNT int, AMOUNT money);
declare @REFUNDTABLE table (DESIGNATIONID uniqueidentifier, AMOUNT money);

insert into @AMOUNTTABLE (DESIGNATIONID, REGCOUNT, AMOUNT)
select
    B.DESIGNATIONID,
    count(distinct B.REGISTRANTID),
    coalesce(sum(RS.AMOUNTINCURRENCY), 0)
from
    @BASETABLE as B
inner join 
    UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@SELECTEDCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),2,2) as RS on RS.ID = B.LINEITEMID
group by B.DESIGNATIONID

insert into @REFUNDTABLE (DESIGNATIONID, AMOUNT)
select
    B.DESIGNATIONID,
    coalesce(sum(FTLI.TRANSACTIONAMOUNT), 0)
from
    @BASETABLE as B
inner join 
    dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.SOURCELINEITEMID = B.LINEITEMID
inner join
    dbo.FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
where
    FT.TYPECODE = 23
group by B.DESIGNATIONID


select
    AMOUNT.DESIGNATIONID as DESIGNATIONID,
    DESIGNATION.NAME as DESIGNATIONNAME,
    coalesce(AMOUNT.REGCOUNT, 0) as COUNT,
    coalesce(sum(AMOUNT.AMOUNT), 0) - coalesce(sum(REFUND.AMOUNT), 0) as AMOUNTRAISED,
    CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
    CURRENCYPROPERTIES.CURRENCYSYMBOL,
    CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
    CURRENCYPROPERTIES.DECIMALDIGITS
from
    @AMOUNTTABLE as AMOUNT
inner join 
    dbo.DESIGNATION on DESIGNATION.ID = AMOUNT.DESIGNATIONID    
left join
    @REFUNDTABLE as REFUND on REFUND.DESIGNATIONID = AMOUNT.DESIGNATIONID
outer apply 
    dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES
group by AMOUNT.DESIGNATIONID, DESIGNATION.NAME, AMOUNT.REGCOUNT, CURRENCYPROPERTIES.ISO4217, CURRENCYPROPERTIES.CURRENCYSYMBOL, CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, CURRENCYPROPERTIES.DECIMALDIGITS

end