USP_DATALIST_MEMBERSHIPPROGRAM_REVENUEBYLEVEL

Returns revenue for top performing levels in a membership program.

Parameters

Parameter Parameter Type Mode Description
@PROGRAMID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@BREAKDOWNTYPE tinyint IN
@FROMDATE datetime IN
@TODATE datetime IN
@MEMBERSHIPPROGRAMID uniqueidentifier INOUT

Definition

Copy


            CREATE procedure dbo.USP_DATALIST_MEMBERSHIPPROGRAM_REVENUEBYLEVEL
            (
                @PROGRAMID uniqueidentifier,
                @BREAKDOWNTYPE tinyint = null,
                @FROMDATE datetime = null,
                @TODATE datetime = null,
                @MEMBERSHIPPROGRAMID uniqueidentifier = null output
            )
            as
                set nocount on;

                set @MEMBERSHIPPROGRAMID = @PROGRAMID

                set @FROMDATE = dbo.UFN_DATE_GETEARLIESTTIME(@FROMDATE);
                set @TODATE = dbo.UFN_DATE_GETLATESTTIME(@TODATE);

                declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                declare @SELECTEDCURRENCYID uniqueidentifier;

                set @SELECTEDCURRENCYID = @ORGANIZATIONCURRENCYID;


                declare @DECIMALDIGITS tinyint;
                declare @ROUNDINGTYPECODE tinyint;
                declare @CURRENCYISO nvarchar(6);
                declare @CURRENCYSYMBOL nvarchar(10);
                declare @CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;

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

                if @BREAKDOWNTYPE = 0
                begin

                    declare @MEMBERSHIPLEVELREVENUE table(TOTAL money, LEVELID uniqueidentifier);

                    insert into @MEMBERSHIPLEVELREVENUE
                    select
                        sum(TOTAL),
                        LEVELID
                    from (
                        select
                            REVENUESPLITS.AMOUNTINCURRENCY - coalesce(REFUND.CREDITTOTAL, 0) as TOTAL,
                            MEMBERSHIPSPLITS.LEVELID as LEVELID
                        from dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(
                            @SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE
                        ) as REVENUESPLITS
                        left join dbo.UFN_CREDIT_GETSPLITCREDITAMOUNT_BULK() as REFUND 
                            on REFUND.SOURCELINEITEMID = REVENUESPLITS.ID
                        inner join dbo.UFN_MEMBERSHIPTRANSACTIONSPLITS_BYPROGRAM(@PROGRAMID, @FROMDATE, @TODATE) MEMBERSHIPSPLITS
                            on MEMBERSHIPSPLITS.REVENUESPLITID = REVENUESPLITS.ID
                        where 
                            REVENUESPLITS.TYPECODE in (2,18)
                        ) as RAWMEMBERSHIPREVENUE
                        group by LEVELID

                    select top(6)
                        TOTAL,
                        MEMBERSHIPLEVEL.NAME as LEVEL
                    from @MEMBERSHIPLEVELREVENUE LEVELREVENUE
                    inner join dbo.MEMBERSHIPLEVEL
                        on LEVELREVENUE.LEVELID = MEMBERSHIPLEVEL.ID
                    order by TOTAL

                end

                else
                begin

                    declare @MEMBERSHIPTIERREVENUE table(TOTAL money, TIERID uniqueidentifier);

                    insert into @MEMBERSHIPTIERREVENUE
                    select
                        sum(TOTAL),
                        TIERID
                    from (  
                        select
                            REVENUESPLITS.AMOUNTINCURRENCY - coalesce(REFUND.CREDITTOTAL, 0) as TOTAL,
                            MEMBERSHIPSPLITS.TIERCODEID as TIERID
                        from dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(
                            @SELECTEDCURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE
                        ) as REVENUESPLITS
                        left join dbo.UFN_CREDIT_GETSPLITCREDITAMOUNT_BULK() as REFUND 
                            on REFUND.SOURCELINEITEMID = REVENUESPLITS.ID
                        inner join dbo.UFN_MEMBERSHIPTRANSACTIONSPLITS_BYPROGRAM(@PROGRAMID, @FROMDATE, @TODATE) MEMBERSHIPSPLITS
                            on MEMBERSHIPSPLITS.REVENUESPLITID = REVENUESPLITS.ID
                        where 
                            REVENUESPLITS.TYPECODE in (2,18)                                  
                        ) as RAWMEMBERSHIPREVENUE
                        group by TIERID

                    select top(6)
                        TOTAL,
                        coalesce(TIERCODE.[DESCRIPTION], 'No reporting group') as LEVEL
                    from @MEMBERSHIPTIERREVENUE TIERREVENUE
                    left join dbo.TIERCODE
                        on TIERREVENUE.TIERID = TIERCODE.ID
                    order by TOTAL

                end