USP_RESERVATION_CANCELRESOURCES

Upon cancellation of a reservation, prepares resources so that they are cancelled but still exist.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN

Definition

Copy


        create procedure dbo.USP_RESERVATION_CANCELRESOURCES
        (
            @ID uniqueidentifier,
            @CHANGEAGENTID uniqueidentifier,
            @CURRENTDATE datetime
        )
        as
        begin
            if @CHANGEAGENTID is null  
                exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

            if @CURRENTDATE is null
                set @CURRENTDATE = getdate()

            -- Update per-event consumable itinerary resources

            update dbo.RESOURCE    set 
                QUANTITY = RESOURCE.QUANTITY + RETURNRESOURCES.QUANTITYNEEDED,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from
            (
                select 
                    ITINERARYRESOURCE.RESOURCEID as ID,
                    sum(ITINERARYRESOURCE.QUANTITYNEEDED) as QUANTITYNEEDED
                from  dbo.ITINERARYRESOURCE
                inner join dbo.ITINERARY on
                    ITINERARY.ID = ITINERARYRESOURCE.ITINERARYID
                where 
                    ITINERARY.RESERVATIONID = @ID
                group by ITINERARYRESOURCE.RESOURCEID
            ) as RETURNRESOURCES
            where
                RESOURCE.ID = RETURNRESOURCES.ID and
                RESOURCE.ISPERTICKETITEM = 0 and
                RESOURCE.TYPECODE = 1

            -- Update per-event consumable itinerary item resources

            update dbo.RESOURCE    set 
                QUANTITY = RESOURCE.QUANTITY + RETURNRESOURCES.QUANTITYNEEDED,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from 
            (
                select
                    ITINERARYITEMRESOURCE.RESOURCEID as ID,
                    sum(ITINERARYITEMRESOURCE.QUANTITYNEEDED) as QUANTITYNEEDED
                from dbo.ITINERARYITEMRESOURCE
                inner join dbo.ITINERARYITEM on
                    ITINERARYITEM.ID = ITINERARYITEMRESOURCE.ITINERARYITEMID
                inner join dbo.ITINERARY on
                    ITINERARY.ID = ITINERARYITEM.ITINERARYID
                where 
                    ITINERARY.RESERVATIONID = @ID
                group by ITINERARYITEMRESOURCE.RESOURCEID
            ) as RETURNRESOURCES
            where
                RESOURCE.ID = RETURNRESOURCES.ID and
                RESOURCE.ISPERTICKETITEM = 0 and
                RESOURCE.TYPECODE = 1

            -- Update per-ticket consumable itinerary resources

            update dbo.RESOURCE set 
                QUANTITY = RESOURCE.QUANTITY + RETURNRESOURCE.QUANTITYNEEDED,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from
            (
                select
                    ITINERARYRESOURCE.RESOURCEID as ID,
                    sum(ITINERARYRESOURCE.PERTICKETQUANTITY * ITINERARYATTENDEE.QUANTITY) as QUANTITYNEEDED
                from dbo.ITINERARYRESOURCE
                inner join dbo.ITINERARY on
                    ITINERARY.ID = ITINERARYRESOURCE.ITINERARYID
                inner join dbo.ITINERARYATTENDEE on 
                    ITINERARY.ID = ITINERARYATTENDEE.ITINERARYID
                where 
                    ITINERARY.RESERVATIONID = @ID
                group by ITINERARYRESOURCE.RESOURCEID
            ) as RETURNRESOURCE
            where
                RETURNRESOURCE.ID = RESOURCE.ID and
                RESOURCE.ISPERTICKETITEM <> 0 and 
                RESOURCE.TYPECODE = 1


            -- Update per-ticket consumable itinerary item resources

            update dbo.RESOURCE set 
                QUANTITY = RESOURCE.QUANTITY + RETURNRESOURCE.QUANTITYNEEDED,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from
            (
                select
                    ITINERARYITEMRESOURCE.RESOURCEID as ID,
                    sum(ITINERARYITEMRESOURCE.PERTICKETQUANTITY * ITINERARYATTENDEE.QUANTITY) as QUANTITYNEEDED
                from dbo.ITINERARYITEMRESOURCE
                inner join dbo.ITINERARYITEM on 
                    ITINERARYITEMRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
                inner join dbo.ITINERARY on
                    ITINERARY.ID = ITINERARYITEM.ITINERARYID
                inner join dbo.ITINERARYATTENDEE on 
                    ITINERARY.ID = ITINERARYATTENDEE.ITINERARYID
                where 
                    ITINERARY.RESERVATIONID = @ID
                group by ITINERARYITEMRESOURCE.RESOURCEID
            ) as RETURNRESOURCE
            where
                RETURNRESOURCE.ID = RESOURCE.ID and
                RESOURCE.ISPERTICKETITEM <> 0 and 
                RESOURCE.TYPECODE = 1

            update dbo.JOBOCCURRENCE set
                ISACTIVE = 0,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from dbo.ITINERARYSTAFFRESOURCE
            inner join dbo.ITINERARY on
                ITINERARY.ID = ITINERARYSTAFFRESOURCE.ITINERARYID
            where 
                ITINERARYSTAFFRESOURCE.JOBOCCURRENCEID = JOBOCCURRENCE.ID and
                ITINERARY.RESERVATIONID = @ID 

            update dbo.JOBOCCURRENCE set
                ISACTIVE = 0,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from dbo.ITINERARYITEMSTAFFRESOURCE
            inner join dbo.ITINERARYITEM on 
                ITINERARYITEMSTAFFRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
            inner join dbo.ITINERARY on
                ITINERARY.ID = ITINERARYITEM.ITINERARYID
            where 
                ITINERARYITEMSTAFFRESOURCE.JOBOCCURRENCEID = JOBOCCURRENCE.ID and
                ITINERARY.RESERVATIONID = @ID 

        end