USP_DATAFORMTEMPLATE_EDIT_RESERVATION_MOVE
The save procedure used by the edit dataform template "Reservation Move Edit Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@NEWVISITDATE | date | IN | New visit date |
@IGNOREITINERARYRESOURCECONFLICTS | bit | IN | Ignore itinerary resource conflicts |
@EXCEEDCAPACITY | bit | IN | Exceed capacity available |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_RESERVATION_MOVE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@NEWVISITDATE date,
@IGNOREITINERARYRESOURCECONFLICTS bit,
@EXCEEDCAPACITY bit
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
declare @STATUSCODE tinyint;
select @STATUSCODE = SALESORDER.STATUSCODE
from dbo.SALESORDER
where ID = @ID
if @STATUSCODE in (1, 5)
raiserror('BBERR_INVALIDSTATUS', 13, 1);
declare @DEPOSITREQUIRED bit
declare @SECURITYDEPOSITREQUIRED bit
declare @CONTRACTREQUIRED bit
declare @FINALCOUNTREQUIRED bit
declare @DEPOSITDUEDATE date
declare @SECURITYDEPOSITDUEDATE date
declare @FINALDUEDATE date
declare @CONTRACTDUEDATE date
declare @FINALCOUNTDUEDATE date
declare @ARRIVALDATE date
select
@DEPOSITREQUIRED = DEPOSITREQUIRED,
@SECURITYDEPOSITREQUIRED = SECURITYDEPOSITREQUIRED,
@CONTRACTREQUIRED = CONTRACTREQUIRED,
@FINALCOUNTREQUIRED = FINALCOUNTREQUIRED,
@DEPOSITDUEDATE = DEPOSITDUEDATE,
@SECURITYDEPOSITDUEDATE = SECURITYDEPOSITDUEDATE,
@FINALDUEDATE = FINALDUEDATE,
@CONTRACTDUEDATE = CONTRACTDUEDATE,
@FINALCOUNTDUEDATE = FINALCOUNTDUEDATE,
@ARRIVALDATE = ARRIVALDATE
from dbo.RESERVATION
where ID = @ID
declare @CURRENTDATEEARLIEST date = @CURRENTDATE;
if @NEWVISITDATE < @CURRENTDATEEARLIEST
raiserror('BBERR_MOVETOLATER', 13, 1);
if @NEWVISITDATE = @ARRIVALDATE
raiserror('BBERR_SAMEDATE',13,1);
if @DEPOSITREQUIRED = 1
begin
declare @DEPOSITDUEDATEDIFFERENCE smallint
set @DEPOSITDUEDATEDIFFERENCE = datediff(day, @ARRIVALDATE, @DEPOSITDUEDATE)
set @DEPOSITDUEDATE = dateadd(day, @DEPOSITDUEDATEDIFFERENCE, @NEWVISITDATE)
if @DEPOSITDUEDATE < @CURRENTDATEEARLIEST
set @DEPOSITDUEDATE = @CURRENTDATEEARLIEST
end
if @SECURITYDEPOSITREQUIRED = 1
begin
declare @SECURITYDEPOSITDUEDATEDIFFERENCE smallint
set @SECURITYDEPOSITDUEDATEDIFFERENCE = datediff(day, @ARRIVALDATE, @SECURITYDEPOSITDUEDATE)
set @SECURITYDEPOSITDUEDATE = dateadd(day, @SECURITYDEPOSITDUEDATEDIFFERENCE, @NEWVISITDATE)
if @SECURITYDEPOSITDUEDATE < @CURRENTDATEEARLIEST
set @SECURITYDEPOSITDUEDATE = @CURRENTDATEEARLIEST
end
if @CONTRACTREQUIRED = 1
begin
declare @CONTRACTDUEDATEDIFFERENCE smallint
set @CONTRACTDUEDATEDIFFERENCE = datediff(day, @ARRIVALDATE, @CONTRACTDUEDATE)
set @CONTRACTDUEDATE = dateadd(day, @CONTRACTDUEDATEDIFFERENCE, @NEWVISITDATE)
if @CONTRACTDUEDATE < @CURRENTDATEEARLIEST
set @CONTRACTDUEDATE = @CURRENTDATEEARLIEST
end
if @FINALCOUNTREQUIRED = 1
begin
declare @FINALCOUNTDUEDATEDIFFERENCE smallint
set @FINALCOUNTDUEDATEDIFFERENCE = datediff(day, @ARRIVALDATE, @FINALCOUNTDUEDATE)
set @FINALCOUNTDUEDATE = dateadd(day, @FINALCOUNTDUEDATEDIFFERENCE, @NEWVISITDATE)
if @FINALCOUNTDUEDATE < @CURRENTDATEEARLIEST
set @FINALCOUNTDUEDATE = @CURRENTDATEEARLIEST
end
declare @FINALDUEDATEDIFFERENCE smallint
set @FINALDUEDATEDIFFERENCE = datediff(day, @ARRIVALDATE, @FINALDUEDATE)
set @FINALDUEDATE = dateadd(day, @FINALDUEDATEDIFFERENCE, @NEWVISITDATE)
if @FINALDUEDATE < @CURRENTDATEEARLIEST
set @FINALDUEDATE = @CURRENTDATEEARLIEST
update dbo.RESERVATION set
ARRIVALDATE = @NEWVISITDATE,
DEPOSITDUEDATE = @DEPOSITDUEDATE,
SECURITYDEPOSITDUEDATE = @SECURITYDEPOSITDUEDATE,
CONTRACTDUEDATE = @CONTRACTDUEDATE,
FINALCOUNTDUEDATE = @FINALCOUNTDUEDATE,
FINALDUEDATE = @FINALDUEDATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @ID
-- Validate that the attendee count is not greater than the capacity available
if (select top 1 coalesce(MAXIMUMCAPACITY,0) from dbo.GROUPSALESDEFAULT) > 0 and @EXCEEDCAPACITY = 0
begin
declare @NUMBEROFDAYS int;
declare @CAPACITYNEEDED int;
declare @I int = 0;
select @NUMBEROFDAYS = datediff(day, STARTDATETIME, ENDDATETIME) + 1
from dbo.RESERVATION
where RESERVATION.ID = @ID;
set @CAPACITYNEEDED = dbo.UFN_RESERVATION_TOTALVISITORCOUNT(@ID);
while @I < @NUMBEROFDAYS
begin
if @CAPACITYNEEDED > dbo.UFN_GROUPSALESCAPACITY_CAPACITYREMAININGWITHOUTRESERVATION(dateadd(day, @I, @NEWVISITDATE), @ID)
raiserror('ERR_EXCEEDSCAPACITY', 13, 1);
set @I = @I + 1;
end
end
exec dbo.USP_RESERVATION_RECREATEITINERARIES @ID, @ARRIVALDATE, @NEWVISITDATE, @IGNOREITINERARYRESOURCECONFLICTS, @CHANGEAGENTID, @CURRENTDATE;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;