USP_DATALIST_TICKETREVENUEBYPROGRAM

Returns a list of ticket revenue for configured programs.

Definition

Copy


            CREATE procedure dbo.USP_DATALIST_TICKETREVENUEBYPROGRAM
            as
                set nocount on;

                with SALESORDERITEMS_CTE as
                (
                    select
                        [SALESORDERITEM].[ID] as [SALESORDERITEMID],
                        [PROGRAM].[ID] [PROGRAMID]
                    from dbo.[SALESORDERITEM]
                    inner join dbo.[SALESORDER]
                        on [SALESORDERITEM].[SALESORDERID] = [SALESORDER].[ID]
                    inner join dbo.[SALESORDERITEMTICKET]
                        on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
                    inner join dbo.[PROGRAM]
                        on [PROGRAM].[ID] = [SALESORDERITEMTICKET].[PROGRAMID]
                    where [SALESORDER].[STATUSCODE] = 1
                ),
                TICKETSALES_CTE as (
                    select
                        sum([SALESORDERITEM].[TOTAL]) [TOTAL],
                        [SALESORDERITEMS_CTE].[PROGRAMID]
                    from dbo.[SALESORDERITEM]
                    inner join [SALESORDERITEMS_CTE]
                        on [SALESORDERITEMS_CTE].[SALESORDERITEMID] = [SALESORDERITEM].[ID]
                    group by [SALESORDERITEMS_CTE].[PROGRAMID]
                ),
                REFUNDS_CTE as (
                    select
                        isnull(sum([CREDITITEM].[TOTAL]), 0) - isnull(sum([SALESORDERITEMORDERDISCOUNTDETAIL].[AMOUNT]), 0) as [TOTAL],
                        [SALESORDERITEMS_CTE].[PROGRAMID]
                    from dbo.[CREDITITEM]
                    inner join [SALESORDERITEMS_CTE]
                        on [SALESORDERITEMS_CTE].[SALESORDERITEMID] = [CREDITITEM].[SALESORDERITEMID]
                    left join dbo.[SALESORDERITEMORDERDISCOUNTDETAIL]
                        on [SALESORDERITEMORDERDISCOUNTDETAIL].[SALESORDERITEMID] = [CREDITITEM].[SALESORDERITEMID]
                    group by [SALESORDERITEMS_CTE].[PROGRAMID]
                ),
                ITEMDISCOUNTS_CTE as (
                    select
                        sum([SALESORDERITEMITEMDISCOUNT].[AMOUNT]) as [TOTAL],
                        [SALESORDERITEMS_CTE].[PROGRAMID]
                    from dbo.[SALESORDERITEMITEMDISCOUNT]
                    inner join [SALESORDERITEMS_CTE]
                        on [SALESORDERITEMS_CTE].[SALESORDERITEMID] = [SALESORDERITEMITEMDISCOUNT].[SALESORDERITEMID]
                    group by [SALESORDERITEMS_CTE].[PROGRAMID]
                ),
                ORDERDISCOUNT_CTE as (
                    select
                        [PROGRAM].[ID] [PROGRAMID],
                        sum([SALESORDERITEMORDERDISCOUNTDETAIL].[AMOUNT]) [TOTAL]
                    from dbo.[SALESORDERITEMORDERDISCOUNTDETAIL]
                    inner join dbo.[SALESORDERITEM]
                        on [SALESORDERITEM].[ID] = [SALESORDERITEMORDERDISCOUNTDETAIL].[SALESORDERITEMID]
                    inner join dbo.[SALESORDER]
                        on [SALESORDER].[ID] = [SALESORDERITEM].[SALESORDERID]
                    inner join dbo.[SALESORDERITEMTICKET]
                        on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
                    inner join dbo.[PROGRAM]
                        on [PROGRAM].[ID] = [SALESORDERITEMTICKET].[PROGRAMID]
                    where [SALESORDER].[STATUSCODE] = 1
                    group by [PROGRAM].[ID]
                )
                select
                    PROGRAM.NAME PROGRAMNAME,
                    isnull([TICKETSALES_CTE].[TOTAL], 0) - isnull([ORDERDISCOUNT_CTE].[TOTAL],0) - isnull([ITEMDISCOUNTS_CTE].[TOTAL],0) - isnull([REFUNDS_CTE].[TOTAL],0) [TOTALREVENUE]
                from [TICKETSALES_CTE]
                inner join dbo.[PROGRAM]
                    on [PROGRAM].[ID] = [TICKETSALES_CTE].[PROGRAMID]
                left outer join [ORDERDISCOUNT_CTE]
                    on [ORDERDISCOUNT_CTE].[PROGRAMID] = [TICKETSALES_CTE].[PROGRAMID]
                left outer join [ITEMDISCOUNTS_CTE]
                    on [ITEMDISCOUNTS_CTE].[PROGRAMID] = [TICKETSALES_CTE].[PROGRAMID]
                left outer join [REFUNDS_CTE]
                    on [REFUNDS_CTE].[PROGRAMID] = [TICKETSALES_CTE].[PROGRAMID]