UFN_SALESORDER_GETTOTALTICKETREVENUE
Returns the total revenue from ticket sales.
Return
Return Type |
---|
money |
Definition
Copy
CREATE function dbo.UFN_SALESORDER_GETTOTALTICKETREVENUE()
returns money
with execute as caller
as begin
declare @TICKETTOTAL money;
declare @ORDERDISCOUNTTOTAL money;
;with SALESORDER_CTE as (
select
[SALESORDERITEM].[ID],
[SALESORDERITEM].[TOTAL] as [AMOUNT]
from dbo.[SALESORDERITEM]
left join dbo.[SALESORDER]
on [SALESORDERITEM].[SALESORDERID] = [SALESORDER].[ID]
inner join dbo.[SALESORDERITEMTICKET]
on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
where [SALESORDER].[STATUSCODE] in (1)
),
REFUNDS_CTE as (
select
sum([CREDITITEM].[TOTAL]) - isnull(sum([SALESORDERITEMORDERDISCOUNTDETAIL].[AMOUNT]), 0) as [AMOUNT]
from dbo.[CREDITITEM]
inner join SALESORDER_CTE
on [SALESORDER_CTE].[ID] = [CREDITITEM].[SALESORDERITEMID]
left join dbo.[SALESORDERITEMORDERDISCOUNTDETAIL]
on [SALESORDERITEMORDERDISCOUNTDETAIL].[SALESORDERITEMID] = [CREDITITEM].[SALESORDERITEMID]
),
ITEMDISCOUNTS_CTE as (
select
sum([SALESORDERITEMITEMDISCOUNT].[AMOUNT]) as [AMOUNT]
from dbo.[SALESORDERITEMITEMDISCOUNT]
inner join SALESORDER_CTE on SALESORDER_CTE.ID = [SALESORDERITEMITEMDISCOUNT].[SALESORDERITEMID]
)
select
@TICKETTOTAL = (sum(SALESORDER_CTE.AMOUNT)) - coalesce((select AMOUNT from REFUNDS_CTE), 0) - coalesce((select AMOUNT from ITEMDISCOUNTS_CTE), 0)
from SALESORDER_CTE
select
@ORDERDISCOUNTTOTAL = (sum(SALESORDERITEMORDERDISCOUNTDETAIL.AMOUNT))
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
where SALESORDER.STATUSCODE in (1)
return coalesce(@TICKETTOTAL, 0) - coalesce(@ORDERDISCOUNTTOTAL, 0)
end