USP_SPONSORSHIPLOCATION_INACTIVE_REASON
The save procedure used by the edit dataform template "Sponsorship Location Mark Inactive Reason Edit 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. |
@SPONSORSHIPREASONID | uniqueidentifier | IN | Reason |
@COMMENT | nvarchar(255) | IN | Comments |
Definition
Copy
CREATE procedure dbo.USP_SPONSORSHIPLOCATION_INACTIVE_REASON
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@SPONSORSHIPREASONID uniqueidentifier ,
@COMMENT nvarchar(255)
)
as begin
set nocount on;
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @HIERARCHYPATH hierarchyid
select @HIERARCHYPATH = HIERARCHYPATH
from dbo.SPONSORSHIPLOCATION
where ID = @ID;
-- cache any reservation keys used by opportunities in this location
declare @KEYS table (ID uniqueidentifier);
insert into @KEYS
select distinct RESERVATIONKEYID
from dbo.SPONSORSHIPOPPORTUNITY
inner join dbo.SPONSORSHIPLOCATION on SPONSORSHIPLOCATION.ID = SPONSORSHIPOPPORTUNITY.SPONSORSHIPLOCATIONID
where SPONSORSHIPLOCATION.HIERARCHYPATH.IsDescendantOf(@HIERARCHYPATH) = 1
and RESERVATIONKEYID is not null;
-- Update all opportunities in the area to unavailable.
update SPONSORSHIPOPPORTUNITY
set AVAILABILITYCODE = 2,
RESERVATIONKEYID = null,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from dbo.SPONSORSHIPOPPORTUNITY
inner join dbo.SPONSORSHIPOPPORTUNITYLOCK on SPONSORSHIPOPPORTUNITYLOCK.ID = SPONSORSHIPOPPORTUNITY.ID
inner join dbo.SPONSORSHIPLOCATION on SPONSORSHIPLOCATION.ID = SPONSORSHIPOPPORTUNITY.SPONSORSHIPLOCATIONID
where SPONSORSHIPLOCATION.HIERARCHYPATH.IsDescendantOf(@HIERARCHYPATH) = 1
and SPONSORSHIPOPPORTUNITYLOCK.LOCKCOUNT = 0
and SPONSORSHIPOPPORTUNITYLOCK.LOCKED = 0;
declare @REMAININGCOUNT int;
select @REMAININGCOUNT = count(*)
from dbo.SPONSORSHIPOPPORTUNITY
inner join dbo.SPONSORSHIPLOCATION on SPONSORSHIPLOCATION.ID = SPONSORSHIPOPPORTUNITY.SPONSORSHIPLOCATIONID
where SPONSORSHIPLOCATION.HIERARCHYPATH.IsDescendantOf(@HIERARCHYPATH) = 1
and AVAILABILITYCODE <> 2;
-- update status of reservation keys
declare @RESERVATIONKEYID uniqueidentifier;
declare KEYS_CUR cursor local fast_forward for
select ID
from @KEYS;
open KEYS_CUR;
fetch next from KEYS_CUR into @RESERVATIONKEYID;
while (@@FETCH_STATUS = 0)
begin
exec dbo.USP_SPONSORSHIPOPPORTUNITYRESERVE_UPDATESTATUS @RESERVATIONKEYID, @CHANGEAGENTID
fetch next from KEYS_CUR into @RESERVATIONKEYID;
end
close KEYS_CUR;
deallocate KEYS_CUR;
-- Mark the locations as inactive.
if @REMAININGCOUNT = 0
update dbo.SPONSORSHIPLOCATION
set STATUSCODE = 1,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE,
SPONSORSHIPREASONID = @SPONSORSHIPREASONID,
COMMENT = case ID when @ID then @COMMENT else COMMENT end
where ID = @ID
or HIERARCHYPATH.IsDescendantOf(@HIERARCHYPATH) = 1;
else
begin
raiserror('BBERR_SOMEOPPORTUNITIESLOCKED',13,1);
return 1;
end
return 0;
end