USP_RESERVATIONRATESCALE_UPDATEAUTOMATICSTAFFRESOURCEAPPLICATIONS

Creates applications that don't exist for staff resources on reservations included in rate scale, deletes ones that no longer exist and were automatic.

Parameters

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

Definition

Copy


        create procedure dbo.USP_RESERVATIONRATESCALE_UPDATEAUTOMATICSTAFFRESOURCEAPPLICATIONS
        (
            @ID uniqueidentifier,
            @CHANGEAGENTID uniqueidentifier = null,
            @CURRENTDATE datetime = null
        )
        as
        begin

            set nocount on;

            if @CHANGEAGENTID is null  
                exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

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

            declare @STAFFRESOURCES table
            (
                VOLUNTEERTYPEID uniqueidentifier,
                INAPPLICATIONS bit
            )

            insert into @STAFFRESOURCES
            select
                ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID,
                0
            from dbo.SALESORDERITEM SOI
            inner join dbo.SALESORDERITEMITINERARYSTAFFRESOURCE SOIIR on 
                SOI.ID = SOIIR.SALESORDERITEMID
            inner join dbo.ITINERARYSTAFFRESOURCE on
                SOIIR.ITINERARYSTAFFRESOURCEID = ITINERARYSTAFFRESOURCE.ID
            where
                SOI.SALESORDERID = @ID and 
                SOI.PRICINGSTRUCTURECODE = 1
            group by VOLUNTEERTYPEID

            insert into @STAFFRESOURCES
            select
                ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID,
                0
            from dbo.SALESORDERITEM SOI
            inner join dbo.SALESORDERITEMITINERARYITEMSTAFFRESOURCE SOIIIR on 
                SOI.ID = SOIIIR.SALESORDERITEMID
            inner join dbo.ITINERARYITEMSTAFFRESOURCE on
                SOIIIR.ITINERARYITEMSTAFFRESOURCEID = ITINERARYITEMSTAFFRESOURCE.ID
            where
                SOI.SALESORDERID = @ID and 
                SOI.PRICINGSTRUCTURECODE = 1 and
                ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID not in
                ( select VOLUNTEERTYPEID from @STAFFRESOURCES )
            group by VOLUNTEERTYPEID

            update @STAFFRESOURCES set
                INAPPLICATIONS = 1
            where
                exists
                ( 
                    select 1 from dbo.RESERVATIONRATESCALEAPPLICATION RRSA
                    where
                        RRSA.RESERVATIONRATESCALEID = @ID and
                        RRSA.TYPECODE = 3 and
                        RRSA.VOLUNTEERTYPEID is not null and
                        RRSA.VOLUNTEERTYPEID = [@STAFFRESOURCES].VOLUNTEERTYPEID
                )

            insert into dbo.RESERVATIONRATESCALEAPPLICATION
            (
                ID, 
                RESERVATIONRATESCALEID,
                TYPECODE,
                VOLUNTEERTYPEID, 
                AMOUNT,
                ISADDEDAUTOMATICALLY,
                ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
            )
            select
                newid(), 
                @ID
                3,
                VOLUNTEERTYPEID, 
                0.0,
                1,
                @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
            from @STAFFRESOURCES
            where INAPPLICATIONS = 0

            declare @e int;
            declare @contextCache varbinary(128);

            set @contextCache = CONTEXT_INFO();

            if not @CHANGEAGENTID is null
              set CONTEXT_INFO @CHANGEAGENTID

            delete from dbo.RESERVATIONRATESCALEAPPLICATION
            where
                RESERVATIONRATESCALEID = @ID and
                AMOUNT = 0 and
                ISADDEDAUTOMATICALLY = 1 and
                TYPECODE = 3 and
                not exists
                    (select VOLUNTEERTYPEID from @STAFFRESOURCES where RESERVATIONRATESCALEAPPLICATION.VOLUNTEERTYPEID = [@STAFFRESOURCES].VOLUNTEERTYPEID)

            select @e=@@error;

            if not @contextCache is null
                set CONTEXT_INFO @contextCache;

            if @e <> 0
                return 2;

        end