USP_DATAFORMTEMPLATE_EDIT_BATCHSTATECHANGE
The save procedure used by the edit dataform template "Batch Status 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. |
@OWNERID | uniqueidentifier | IN | Owner |
@NEXTBATCHWORKFLOWTASKID | uniqueidentifier | IN | New status |
@COMMENTS | nvarchar(2000) | IN | Comments |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_BATCHSTATECHANGE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@OWNERID uniqueidentifier,
@NEXTBATCHWORKFLOWTASKID uniqueidentifier,
@COMMENTS nvarchar(2000),
@CURRENTAPPUSERID uniqueidentifier
)
as
set nocount on;
begin try
declare @lockName nvarchar(36);
set @lockName = upper(cast(@ID as nvarchar(36)));
declare @result int;
exec @result = sp_getapplock @Resource=@lockName, @LockMode='Exclusive', @LockOwner='Session', @LockTimeout=0
if @result = 0
begin
declare @GRANTED bit
select @GRANTED=dbo.UFN_SECURITY_APPUSER_GRANTED_BATCHOWNER(@CURRENTAPPUSERID, @ID)
if @GRANTED = 0
raiserror('You do not have permission to update this batch.', 13, 1);
declare @CHANGEDATE datetime;
set @CHANGEDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @PREVIOUSOWNERID uniqueidentifier;
select @PREVIOUSOWNERID = BATCH.APPUSERID from dbo.BATCH where BATCH.ID = @ID;
declare @NEXTBATCHWORKFLOWSTATEID uniqueidentifier;
select @NEXTBATCHWORKFLOWSTATEID = NEXTBATCHWORKFLOWSTATEID from dbo.BATCHWORKFLOWTASK where ID = @NEXTBATCHWORKFLOWTASKID;
update dbo.BATCH
set APPUSERID = @OWNERID,
BATCHWORKFLOWSTATEID = @NEXTBATCHWORKFLOWSTATEID,
COMMENTS = @COMMENTS,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
insert into dbo.BATCHWORKFLOWSTATUS (BATCHID, APPUSERID, BATCHWORKFLOWSTATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, APPUSERNAME)
values (@ID, @OWNERID, @NEXTBATCHWORKFLOWSTATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, COALESCE(dbo.UFN_APPUSER_GETNAME(@OWNERID),''));
exec dbo.USP_BATCHASSIGNEDALERT_SEND @PREVIOUSOWNERID, @ID;
exec sp_releaseapplock @Resource=@lockName, @LockOwner='Session';
end;
else
raiserror('This batch is in use and cannot be deleted.', 13, 1);
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;