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