USP_DATALIST_RESERVATIONBYDATE

Returns a list of reservations.

Parameters

Parameter Parameter Type Mode Description
@INCLUDEPASTRESERVATIONS bit IN Include past reservations
@INCLUDECOMPLETED bit IN Include completed reservations
@INCLUDECANCELLED bit IN Include cancelled reservations
@DATESELECTTYPE tinyint IN Date
@STARTDATE date IN From
@ENDDATE date IN To

Definition

Copy


CREATE procedure dbo.USP_DATALIST_RESERVATIONBYDATE
(
    @INCLUDEPASTRESERVATIONS bit = 0,
    @INCLUDECOMPLETED bit = 1,
    @INCLUDECANCELLED bit = 0,
    @DATESELECTTYPE tinyint = 2,
    @STARTDATE date = null,
    @ENDDATE date = null
)
as
    set nocount on;

    declare @CURRENTDATE date;
    set @CURRENTDATE = getdate();

    if @DATESELECTTYPE is null
        set @DATESELECTTYPE = 2;

    set @STARTDATE = case @DATESELECTTYPE
        when 0 then @CURRENTDATE 
        when 1 then @CURRENTDATE 
        when 3 then @STARTDATE
        when 4 then @STARTDATE
    end;

    set @ENDDATE = case @DATESELECTTYPE
        when 0 then @CURRENTDATE 
        when 1 then dateadd(week,1, @CURRENTDATE
        when 3 then @ENDDATE
        when 4 then @STARTDATE
    end;

    if @INCLUDEPASTRESERVATIONS = 0 and @STARTDATE < @CURRENTDATE
        set @STARTDATE = @CURRENTDATE

    select 
        RESERVATION.ID,
        RESERVATION.NAME,
        RESERVATION.ARRIVALDATE,
        case when ARRIVALTIME = '' then (isnull((select min(ITINERARYITEM.STARTTIME)
                from dbo.ITINERARYITEM
                inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                where ITINERARY.RESERVATIONID = RESERVATION.ID and
                    ITINERARYITEM.STARTDATE = RESERVATION.ARRIVALDATE
                ), '0800')) else RESERVATION.ARRIVALTIME end,
        dbo.UFN_RESERVATION_TOTALVISITORCOUNT(RESERVATION.ID),
        SALESORDER.STATUS,
        SALESORDER.STATUSCODE,
        TOTALS.BALANCE,
        dbo.UFN_RESERVATION_GETPAYMENTCOUNT(RESERVATION.ID) as PAYMENTCOUNT
    from 
        dbo.RESERVATION
    inner join 
        dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
    outer apply 
        dbo.UFN_SALESORDER_TOTALS(SALESORDER.ID) TOTALS
    where (
            ((RESERVATION.ARRIVALDATE between @STARTDATE and @ENDDATE) and (@DATESELECTTYPE <> 2)) 
            or 
            ((@DATESELECTTYPE = 2 and @INCLUDEPASTRESERVATIONS = 0 and RESERVATION.ARRIVALDATE >= @CURRENTDATE
                or (@DATESELECTTYPE = 2 and @INCLUDEPASTRESERVATIONS = 1))
        )
        and ((@INCLUDECOMPLETED = 0 and SALESORDER.STATUSCODE <> 1) or (@INCLUDECOMPLETED = 1))
        and ((@INCLUDECANCELLED = 0 and SALESORDER.STATUSCODE <> 5) or (@INCLUDECANCELLED = 1))                    
    order by RESERVATION.ARRIVALDATE, RESERVATION.ARRIVALTIME, RESERVATION.NAME