UFN_EVENT_GETAVAILABILITYWITHEVENTS
Returns all events and their availability.
Return
Return Type |
---|
table |
Definition
Copy
CREATE function dbo.UFN_EVENT_GETAVAILABILITYWITHEVENTS()
returns table
as
return
with ORDERED_CTE as
(
select
SALESORDERITEMTICKET.EVENTID,
sum(SALESORDERITEM.QUANTITY) as ORDEREDQUANTITY
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDER on SALESORDERITEM.SALESORDERID = SALESORDER.ID
left outer join dbo.SALESORDERRESERVEDITEM on SALESORDERRESERVEDITEM.ID = SALESORDERITEMTICKET.ID
where
SALESORDER.STATUSCODE not in (1, 5) -- exclude complete and cancelled
and (
SALESORDERRESERVEDITEM.ID is null
or (
SALESORDERRESERVEDITEM.EXPIRATIONDATE <= getdate()
and SALESORDER.STATUSCODE <> 7 -- Unresolved
)
)
group by SALESORDERITEMTICKET.EVENTID
),
TICKET_CTE as
(
select
EVENTID,
count(ID) as TICKETQUANTITY
from dbo.TICKET
where
TICKET.STATUSCODE = 0 or
TICKET.STATUSCODE = 1
group by EVENTID
)
select
EVENT.ID as EVENTID,
EVENT.CAPACITY -
(
coalesce(TICKET_CTE.TICKETQUANTITY,0)
+ coalesce(ORDERED_CTE.ORDEREDQUANTITY,0)
) as QUANTITY
from dbo.EVENT
left join TICKET_CTE on
TICKET_CTE.EVENTID = EVENT.ID
left join ORDERED_CTE on
ORDERED_CTE.EVENTID = EVENT.ID