USP_DATALIST_QUICKITINERARYPROGRAMEVENT

Returns Daily Admission programs and Events with start time and availability for a given day.

Parameters

Parameter Parameter Type Mode Description
@DATE date IN Date

Definition

Copy


CREATE procedure dbo.USP_DATALIST_QUICKITINERARYPROGRAMEVENT
(
    @DATE date
)
as
    set nocount on;

    declare @CURRENTDATE datetime = getdate()
    declare @SALESMETHODID uniqueidentifier;

    select @SALESMETHODID = ID from dbo.SALESMETHOD where TYPECODE = 3;  -- Group Sales


    select 
        ID,
        1,
        NAME,
        null,
        null,
        null,
        DEFAULTRATESCALEID,
        DEFAULTPRICINGSTRUCTURECODE
    from
    (
        select top 100
            PROGRAM.ID, 
            PROGRAM.NAME,
            PROGRAM.DEFAULTRATESCALEID,
            PROGRAM.DEFAULTPRICINGSTRUCTURECODE
        from
            dbo.PROGRAM
        inner join
            dbo.PROGRAMSALESMETHOD on PROGRAMSALESMETHOD.PROGRAMID = PROGRAM.ID
        where 
            PROGRAM.ISACTIVE = 1 and
            PROGRAM.ISDAILYADMISSION = 1 and
            PROGRAMSALESMETHOD.SALESMETHODID = @SALESMETHODID
        order by NAME
    ) DA

    union all

    select
        ID,
        0,
        NAME,
        STARTTIME,
        ENDTIME,
        QUANTITY,
        DEFAULTRATESCALEID,
        DEFAULTPRICINGSTRUCTURECODE
    from
    (
        select top 100
            EVENT.ID as ID,
            EVENT.NAME as NAME,
            EVENT.STARTTIME as STARTTIME,
            EVENT.ENDTIME as ENDTIME, 
            cast(EVENTAVAILABILITY.QUANTITY as int) as QUANTITY,
            PROGRAM.DEFAULTRATESCALEID,
            PROGRAM.DEFAULTPRICINGSTRUCTURECODE
        from
            dbo.EVENT
        inner join
            dbo.PROGRAM on EVENT.PROGRAMID = PROGRAM.ID
        inner join
            dbo.UFN_EVENT_GETAVAILABILITYWITHEVENTS() as EVENTAVAILABILITY on EVENTAVAILABILITY.EVENTID = EVENT.ID
        where
            EVENT.ISACTIVE = 1 and
            PROGRAM.ISACTIVE = 1 and
            PROGRAM.ISPREREGISTERED = 0 and
            EVENT.STARTDATE = @DATE and
            dbo.UFN_EVENT_ISONSALE(EVENT.ID, @CURRENTDATE, 3) = 1 and
            not exists
            (
                select 1 
                from dbo.ITINERARYITEM
                inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                inner join dbo.SALESORDER on ITINERARY.RESERVATIONID = SALESORDER.ID
                where SALESORDER.STATUSCODE <> 5 -- MDC - Ignore cancelled

                    and ITINERARYITEM.BLOCKEVENT = 1 
                    and ITINERARYITEM.EVENTID = EVENT.ID
            ) and
            EVENTAVAILABILITY.QUANTITY > 0
        order by EVENT.STARTTIME
    ) SE
    where @DATE is not null