USP_DATALIST_RESERVATIONSTATUSCODE
Returns a list of reservations for a particular status code.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STATUSCODE | tinyint | IN | Status |
@SHOWPASTDUEONLY | bit | IN | Show past due only |
@HIDECOMPLETED | bit | IN | Hide completed |
@SHOWCANCELLED | bit | IN | Show cancelled reservations |
@STARTDATE | date | IN | Start date |
@ENDDATE | date | IN | End date |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_RESERVATIONSTATUSCODE
(
@STATUSCODE tinyint = null,
@SHOWPASTDUEONLY bit = 0,
@HIDECOMPLETED bit = 0,
@SHOWCANCELLED bit = 0,
@STARTDATE date = null,
@ENDDATE date = null
)
as
set nocount on;
declare @CURRENTDATE date;
set @CURRENTDATE = getdate();
if @SHOWPASTDUEONLY = 0 begin
select
RESERVATION.ID,
NAME,
case when ARRIVALTIME = '' then (isnull((select top 1
ITINERARYITEM.STARTTIME
from dbo.ITINERARYITEM
inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
where ITINERARY.RESERVATIONID = RESERVATION.ID and
ITINERARYITEM.STARTDATE = RESERVATION.ARRIVALDATE
order by ITINERARYITEM.STARTDATETIME asc
), '0800')) else ARRIVALTIME end STARTTIME,
isnull((select top 1
ITINERARYITEM.ENDTIME
from dbo.ITINERARYITEM
inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
where ITINERARY.RESERVATIONID = RESERVATION.ID
order by ITINERARYITEM.ENDDATETIME desc
), case when ARRIVALTIME = '' then '0900' else ARRIVALTIME end) ENDTIME,
ARRIVALDATE as STARTDATE,
isnull((select top 1 ITINERARYITEM.ENDDATE
from dbo.ITINERARYITEM
inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
where ITINERARY.RESERVATIONID = RESERVATION.ID
order by ENDDATE desc), ARRIVALDATE) ENDDATE,
SALESORDER.STATUSCODE STATUSCODE,
(select count(ID) from dbo.[SALESORDERPAYMENT] where [SALESORDERPAYMENT].[SALESORDERID] = SALESORDER.ID) as PAYMENTCOUNT,
RESERVATION.DATEADDED as DATEADDED,
CHANGEAGENT.USERNAME,
SALESORDER.STATUS,
TOTALS.TOTAL,
SALESORDER.SEQUENCEID,
FORMATTEDDESCRIPTION.VALUE as DESCRIPTION
from dbo.RESERVATION
inner join dbo.CHANGEAGENT on CHANGEAGENT.ID = RESERVATION.ADDEDBYID
inner join dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
outer apply dbo.UFN_SALESORDER_TOTALS(RESERVATION.ID) as TOTALS
outer apply (
select isnull(dbo.UFN_RESERVATION_BUILDITINERARYITEMSSTRING(RESERVATION.ID) , '') as VALUE
) as RESERVATIONDETAILS
outer apply (
select convert(nvarchar(10), dbo.UFN_RESERVATION_TOTALVISITORCOUNT(RESERVATION.ID)) + ' Visitors' +
char(10) + 'Status: ' + SALESORDER.STATUS + char(10) + RESERVATIONDETAILS.VALUE as VALUE
) as FORMATTEDDESCRIPTION
where (STATUSCODE = @STATUSCODE or @STATUSCODE is null)
and ((@HIDECOMPLETED = 1 and STATUSCODE <> 1) or (@HIDECOMPLETED = 0) or (@HIDECOMPLETED is null))
and ((@SHOWCANCELLED = 0 and STATUSCODE <> 5) OR (@SHOWCANCELLED = 1) or (@SHOWCANCELLED is null))
and ((@STARTDATE is null and @ENDDATE is null)
or
(
((RESERVATION.ARRIVALDATE <= @ENDDATE) and (@ENDDATE is not null))
and
((RESERVATION.ARRIVALDATE >= @STARTDATE) and (@STARTDATE is not null))
))
order by RESERVATION.DATEADDED desc
end
else begin
select
RESERVATION.ID,
NAME,
case when ARRIVALTIME = '' then (isnull((select top 1
ITINERARYITEM.STARTTIME
from dbo.ITINERARYITEM
inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
where ITINERARY.RESERVATIONID = RESERVATION.ID and
ITINERARYITEM.STARTDATE = RESERVATION.ARRIVALDATE
order by ITINERARYITEM.STARTDATETIME asc
), '0800')) else ARRIVALTIME end STARTTIME,
isnull((select top 1
ITINERARYITEM.ENDTIME
from dbo.ITINERARYITEM
inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
where ITINERARY.RESERVATIONID = RESERVATION.ID
order by ITINERARYITEM.ENDDATETIME desc
), case when ARRIVALTIME = '' then '0900' else ARRIVALTIME end) ENDTIME,
ARRIVALDATE as STARTDATE,
isnull((select top 1 ITINERARYITEM.ENDDATE
from dbo.ITINERARYITEM
inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
where ITINERARY.RESERVATIONID = RESERVATION.ID
order by ENDDATE desc), ARRIVALDATE) ENDDATE,
SALESORDER.STATUSCODE STATUSCODE,
(select count(ID) from dbo.[SALESORDERPAYMENT] where [SALESORDERPAYMENT].[SALESORDERID] = SALESORDER.ID) as PAYMENTCOUNT,
RESERVATION.DATEADDED as DATEADDED,
CHANGEAGENT.USERNAME,
SALESORDER.STATUS,
TOTALS.TOTAL,
SALESORDER.SEQUENCEID,
FORMATTEDDESCRIPTION.VALUE as DESCRIPTION
from dbo.RESERVATION
inner join dbo.CHANGEAGENT on CHANGEAGENT.ID = RESERVATION.ADDEDBYID
inner join dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
outer apply dbo.UFN_SALESORDER_TOTALS(RESERVATION.ID) as TOTALS
outer apply (
select isnull(dbo.UFN_RESERVATION_BUILDITINERARYITEMSSTRING(RESERVATION.ID) , '') as VALUE
) as RESERVATIONDETAILS
outer apply (
select convert(nvarchar(10), dbo.UFN_RESERVATION_TOTALVISITORCOUNT(RESERVATION.ID)) + ' Visitors' +
char(10) + 'Status: ' + SALESORDER.STATUS + char(10) + RESERVATIONDETAILS.VALUE as VALUE
) as FORMATTEDDESCRIPTION
where (STATUSCODE = @STATUSCODE or @STATUSCODE is null)
and ((dbo.UFN_RESERVATION_DEPOSITPASTDUE(RESERVATION.ID, @CURRENTDATE) = 1)
or (dbo.UFN_RESERVATION_FINALPAYMENTPASTDUE(RESERVATION.ID, @CURRENTDATE) = 1)
or (dbo.UFN_RESERVATION_CONTRACTPASTDUE(RESERVATION.ID) = 1)
or (dbo.UFN_RESERVATION_FINALCOUNTPASTDUE(RESERVATION.ID) = 1))
and ((@HIDECOMPLETED = 1 and STATUSCODE <> 1) or (@HIDECOMPLETED = 0) or (@HIDECOMPLETED is null))
and ((@SHOWCANCELLED = 0 and STATUSCODE <> 5) OR (@SHOWCANCELLED = 1) or (@SHOWCANCELLED is null))
and ((@STARTDATE is null and @ENDDATE is null)
or
(
((RESERVATION.ARRIVALDATE <= @ENDDATE) and (@ENDDATE is not null))
and
((RESERVATION.ARRIVALDATE >= @STARTDATE) and (@STARTDATE is not null))
))
order by RESERVATION.DATEADDED desc
end
return 0;