USP_DATALIST_TICKETREVENUEBYDATE

Returns total ticket revenue broken down by date.

Definition

Copy


            CREATE procedure dbo.USP_DATALIST_TICKETREVENUEBYDATE
            as
                set nocount on;

                with TICKETSALES_CTE as (
                    select 
                        SALESORDER.ID SALESORDERID,
                        sum([SALESORDERITEM].[TOTAL]) - coalesce(sum(CREDITITEM.TOTAL),0) - coalesce(sum(SALESORDERITEMITEMDISCOUNT.AMOUNT),0) TOTAL
                    from dbo.[SALESORDERITEM]
                    inner join dbo.[SALESORDER]
                        on [SALESORDERITEM].[SALESORDERID] = [SALESORDER].[ID]
                    inner join dbo.[SALESORDERITEMTICKET]
                        on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
                    left join dbo.[SALESORDERITEMITEMDISCOUNT]
                        on [SALESORDERITEM].[ID] = [SALESORDERITEMITEMDISCOUNT].[SALESORDERITEMID]
                    left join dbo.CREDITITEM 
                        on CREDITITEM.SALESORDERITEMID = SALESORDERITEM.ID
                    left outer join dbo.CREDIT 
                        on CREDITITEM.CREDITID = CREDIT.ID
                    where SALESORDER.STATUSCODE = 1
                    and (CREDITITEM.ID is null or CREDIT.TYPECODE = 0)
                    group by SALESORDER.ID
                ),
                ORDERDISCOUNT_CTE as (
                    select
                        SALESORDER.ID SALESORDERID,
                        sum(SALESORDERITEMORDERDISCOUNTDETAIL.AMOUNT) + coalesce(sum(CREDITITEM.TOTAL),0) 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
                    left outer join dbo.CREDITITEM 
                        on CREDITITEM.SALESORDERITEMID = SALESORDERITEM.ID
                    left outer join dbo.CREDIT 
                        on CREDIT.ID = CREDITITEM.CREDITID
                    where SALESORDER.STATUSCODE = 1
                    and (CREDITITEM.ID is null or CREDITITEM.TYPECODE = 5)
                    group by SALESORDER.ID
                )
                select 
                    TICKETSALES_CTE.TOTAL - coalesce(ORDERDISCOUNT_CTE.TOTAL,0),
                    SALESORDER.TRANSACTIONDATE
                from TICKETSALES_CTE
                inner join dbo.SALESORDER
                    on SALESORDER.ID = TICKETSALES_CTE.SALESORDERID
                left outer join ORDERDISCOUNT_CTE 
                    on ORDERDISCOUNT_CTE.SALESORDERID = TICKETSALES_CTE.SALESORDERID
                order by SALESORDER.TRANSACTIONDATE