UFN_GROUPSALESCAPACITY_CAPACITYREMAININGWITHOUTRESERVATION

Determines the total capacity used for group sales events in a given time frame ignoring a specific reservation.

Return

Return Type
int

Parameters

Parameter Parameter Type Mode Description
@DATE date IN
@IGNORERESERVATION uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_GROUPSALESCAPACITY_CAPACITYREMAININGWITHOUTRESERVATION
        (
            @DATE date
            @IGNORERESERVATION uniqueidentifier = null
        )
        returns int
        as 
        begin
            declare @CAPACITYREMAINING int;

            with ITINERARY_CTE as (
                select 
                    ITINERARY.ID
                from dbo.ITINERARY
                inner join dbo.RESERVATION on 
                    RESERVATION.ID = ITINERARY.RESERVATIONID
                inner join dbo.SALESORDER on 
                    SALESORDER.ID = RESERVATION.ID
                where 
                    (SALESORDER.STATUSCODE <> 5) and
                    (@IGNORERESERVATION is null or @IGNORERESERVATION <> RESERVATION.ID) and 
                    (
                        @DATE between
                            isnull((select min(STARTDATE) from dbo.ITINERARYITEM where ITINERARYID =ITINERARY.ID), RESERVATION.ARRIVALDATE) and
                            isnull((select max(ENDDATE) from dbo.ITINERARYITEM where ITINERARYID =ITINERARY.ID), RESERVATION.ARRIVALDATE)
                    )
            )

            select 
                @CAPACITYREMAINING = isnull(sum(ITINERARYATTENDEE.QUANTITY), 0)
            from ITINERARY_CTE
            inner join dbo.ITINERARYATTENDEE on 
                ITINERARYATTENDEE.ITINERARYID = ITINERARY_CTE.ID

            declare @MAXIMUMCAPACITY int;
            select top 1 @MAXIMUMCAPACITY = isnull(MAXIMUMCAPACITY, 0)
            from dbo.GROUPSALESDEFAULT

            set @CAPACITYREMAINING = @MAXIMUMCAPACITY - @CAPACITYREMAINING;

            if @CAPACITYREMAINING < 0
                set @CAPACITYREMAINING = 0;

            return @CAPACITYREMAINING;
      end