UFN_GROUPSALESCAPACITY_MINCAPACITYREMAININGFORDATES
Gets the minimum capacity remaining for a date range.
Return
Return Type |
---|
int |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | date | IN | |
@ENDDATE | date | IN | |
@IGNOREID | uniqueidentifier | IN | |
@IGNOREITEMTYPE | tinyint | IN |
Definition
Copy
create function dbo.UFN_GROUPSALESCAPACITY_MINCAPACITYREMAININGFORDATES
(
@STARTDATE date,
@ENDDATE date,
@IGNOREID uniqueidentifier,
@IGNOREITEMTYPE tinyint -- 0: Reservation, 1: Itinerary
)
returns int
as begin
declare @CAPACITYREMAINING int;
if @IGNOREITEMTYPE = 0 -- Reservation
begin
declare @MAXCAPACITY int = dbo.UFN_GROUPSALESDEFAULT_GETMAXCAPACITY();
select @CAPACITYREMAINING = @MAXCAPACITY - isnull(max(CAPACITY), 0)
from dbo.UFN_GROUPSALESDEFAULT_GETCAPACITYFORDATESEXCLUDINGRESERVATION(@STARTDATE, @ENDDATE, @IGNOREID);
if @CAPACITYREMAINING < 0
set @CAPACITYREMAINING = 0;
end
else
begin
set @CAPACITYREMAINING = dbo.UFN_GROUPSALESCAPACITY_CAPACITYREMAINING(@STARTDATE, @IGNOREID);
declare @DAYITERATOR date = dateadd(day, 1, @STARTDATE);
-- Loop through to get the day with the least available capacity for the duration of the itinerary
while @DAYITERATOR <= @ENDDATE and @CAPACITYREMAINING > 0
begin
declare @AVAILABILITY int = dbo.UFN_GROUPSALESCAPACITY_CAPACITYREMAINING(@DAYITERATOR, @IGNOREID);
if @AVAILABILITY < @CAPACITYREMAINING
set @CAPACITYREMAINING = @AVAILABILITY;
set @DAYITERATOR = dateadd(day, 1, @DAYITERATOR);
end
end
return @CAPACITYREMAINING;
end