USP_BATCHTEMPLATE_CREATEORUPDATE
Adds a batch template to the system or updates an existing batch template.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@NAME | nvarchar(60) | IN | |
@DESCRIPTION | nvarchar(1000) | IN | |
@BATCHTYPECATALOGID | uniqueidentifier | IN | |
@ADDROWDATAFORMINSTANCEID | uniqueidentifier | IN | |
@EDITROWDATAFORMINSTANCEID | uniqueidentifier | IN | |
@COMMITROWADDDATAFORMINSTANCEID | uniqueidentifier | IN | |
@COMMITROWEDITDATAFORMINSTANCEID | uniqueidentifier | IN | |
@COMMITROWEDITDATAFORMIDFIELD | nvarchar(100) | IN | |
@ROWRECORDOPERATIONID | uniqueidentifier | IN | |
@ROWCONTEXTVIEWDATAFORMINSTANCEID | uniqueidentifier | IN | |
@ROWCONTEXTEDITDATAFORMINSTANCEID | uniqueidentifier | IN | |
@FORMDEFINITIONXML | xml | IN | |
@BATCHWORKFLOWID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CUSTOM | bit | IN | |
@SITEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_BATCHTEMPLATE_CREATEORUPDATE
@ID uniqueidentifier output,
@NAME nvarchar(60),
@DESCRIPTION nvarchar(1000) = '',
@BATCHTYPECATALOGID uniqueidentifier,
@ADDROWDATAFORMINSTANCEID uniqueidentifier,
@EDITROWDATAFORMINSTANCEID uniqueidentifier,
@COMMITROWADDDATAFORMINSTANCEID uniqueidentifier,
@COMMITROWEDITDATAFORMINSTANCEID uniqueidentifier,
@COMMITROWEDITDATAFORMIDFIELD nvarchar(100),
@ROWRECORDOPERATIONID uniqueidentifier,
@ROWCONTEXTVIEWDATAFORMINSTANCEID uniqueidentifier,
@ROWCONTEXTEDITDATAFORMINSTANCEID uniqueidentifier,
@FORMDEFINITIONXML xml,
@BATCHWORKFLOWID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CUSTOM bit = 0,
@SITEID uniqueidentifier = null
as
set nocount on
declare @ObjID uniqueidentifier
declare @ExistingID uniqueidentifier
if @ID is null
begin
--bez 2/10/08 CR291543-011608
--creating 2 batch designs with the same name is overwriting the metadata of the original batch.
--instead we should raise a unique name violation
--select @ExistingID = ID from dbo.BATCHTEMPLATE where NAME = @NAME
--set @ID = @ExistingID
if exists(select ID from dbo.BATCHTEMPLATE where NAME = @NAME)
begin
raiserror (N'ERR_BATCHTEMPLATE_UNIQUENAME', 16, 1)
return 1;
end
end
else
select @ExistingID = ID from dbo.BATCHTEMPLATE where ID = @ID
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if len(@BATCHTYPECATALOGID) = 0
begin
raiserror (N'You must specify a valid batch type id for ''%s''.', 16, 1, N'BATCHTYPECATALOGID')
return 1;
end
else
begin
select
@ObjID = ID
from
dbo.BATCHTYPECATALOG
where
ID = @BATCHTYPECATALOGID
if @ObjID is null
begin
raiserror (N'The ID specified for ''%s'' is not a valid batch type.', 16, 1, N'BATCHTYPECATALOGID')
return 1;
end
end
if len(@ADDROWDATAFORMINSTANCEID) = 0
begin
raiserror (N'You must specify a valid data form instance id for ''%s''.', 16, 1, N'ADDROWDATAFORMINSTANCEID')
return 1;
end
else
begin
select
@ObjID = DATAFORMINSTANCECATALOG.ID
from
dbo.DATAFORMINSTANCECATALOG inner join dbo.DATAFORMTEMPLATECATALOG on DATAFORMINSTANCECATALOG.DATAFORMTEMPLATECATALOGID = DATAFORMTEMPLATECATALOG.ID
where
DATAFORMINSTANCECATALOG.ID = @ADDROWDATAFORMINSTANCEID and DATAFORMTEMPLATECATALOG.[MODE] = 2
if @ObjID is null
begin
raiserror (N'Data form Id specified for ''%s'' is not a valid add data form.', 16, 1, N'ADDROWDATAFORMINSTANCEID')
return 1;
end
end
if len(@EDITROWDATAFORMINSTANCEID) = 0
begin
raiserror (N'You must specify a valid data form instance id for ''%s''.', 16, 1, N'EDITROWDATAFORMINSTANCEID')
return 1;
end
else
begin
select
@ObjID = DATAFORMINSTANCECATALOG.ID
from
dbo.DATAFORMINSTANCECATALOG inner join dbo.DATAFORMTEMPLATECATALOG on DATAFORMINSTANCECATALOG.DATAFORMTEMPLATECATALOGID = DATAFORMTEMPLATECATALOG.ID
where
DATAFORMINSTANCECATALOG.ID = @EDITROWDATAFORMINSTANCEID and DATAFORMTEMPLATECATALOG.[MODE] = 1
if @ObjID is null
begin
raiserror (N'Data form instance specified by ''%s'' is not a valid add data form.', 16, 1, N'EDITROWDATAFORMINSTANCEID')
return 1;
end
end
if len(@COMMITROWADDDATAFORMINSTANCEID) = 0 and len(@COMMITROWEDITDATAFORMINSTANCEID) = 0
begin
raiserror (N'You must specify at least one commit data form instance id.', 16, 1);
return 1;
end
if len(@COMMITROWADDDATAFORMINSTANCEID) > 0
begin
select
@ObjID = DATAFORMINSTANCECATALOG.ID
from
dbo.DATAFORMINSTANCECATALOG inner join dbo.DATAFORMTEMPLATECATALOG on DATAFORMINSTANCECATALOG.DATAFORMTEMPLATECATALOGID = DATAFORMTEMPLATECATALOG.ID
where
DATAFORMINSTANCECATALOG.ID = @COMMITROWADDDATAFORMINSTANCEID and DATAFORMTEMPLATECATALOG.[MODE] = 2
if @ObjID is null
begin
raiserror (N'Data form instance specified by ''%s'' is not a valid add data form.', 16, 1, N'COMMITROWADDDATAFORMINSTANCEID')
return 1;
end
end
if len(@COMMITROWEDITDATAFORMINSTANCEID) > 0
begin
if len(@COMMITROWEDITDATAFORMIDFIELD) = 0
begin
raiserror (N'You must specify a %s for a %s.', 16, 1, N'COMMITROWEDITDATAFORMIDFIELD', N'COMMITROWEDITDATAFORMINSTANCEID');
return 1;
end
select
@ObjID = DATAFORMINSTANCECATALOG.ID
from
dbo.DATAFORMINSTANCECATALOG inner join dbo.DATAFORMTEMPLATECATALOG on DATAFORMINSTANCECATALOG.DATAFORMTEMPLATECATALOGID = DATAFORMTEMPLATECATALOG.ID
where
DATAFORMINSTANCECATALOG.ID = @COMMITROWEDITDATAFORMINSTANCEID and DATAFORMTEMPLATECATALOG.[MODE] = 1
if @ObjID is null
begin
raiserror (N'Data form instance specified by ''%s'' is not a valid edit data form.', 16, 1, N'COMMITROWEDITDATAFORMINSTANCEID')
return 1;
end
end
if len(@ROWRECORDOPERATIONID) = 0
begin
raiserror (N'You must specify a valid record operation id for ''%s''.', 16, 1, N'ROWRECORDOPERATIONID')
return 1;
end
else
begin
select
@ObjID = ID
from
dbo.RECORDOPERATIONCATALOG
where
ID = @ROWRECORDOPERATIONID
if @ObjID is null
begin
raiserror (N'Record operation instance specified for ''%s'' is not a valid record operation.', 16, 1, N'ROWOPERATIONID')
return 1;
end
end
if len(@ROWCONTEXTVIEWDATAFORMINSTANCEID) > 0
begin
select
@ObjID = DATAFORMINSTANCECATALOG.ID
from
dbo.DATAFORMINSTANCECATALOG inner join dbo.DATAFORMTEMPLATECATALOG on DATAFORMINSTANCECATALOG.DATAFORMTEMPLATECATALOGID = DATAFORMTEMPLATECATALOG.ID
where
DATAFORMINSTANCECATALOG.ID = @ROWCONTEXTVIEWDATAFORMINSTANCEID and DATAFORMTEMPLATECATALOG.[MODE] = 0
if @ObjID is null
begin
raiserror (N'Data form instance specified by ''%s'' is not a valid view data form.', 16, 1, N'ROWCONTEXTVIEWDATAFORMINSTANCEID')
return 1;
end
end
if len(@ROWCONTEXTEDITDATAFORMINSTANCEID) > 0
begin
select
@ObjID = DATAFORMINSTANCECATALOG.ID
from
dbo.DATAFORMINSTANCECATALOG inner join dbo.DATAFORMTEMPLATECATALOG on DATAFORMINSTANCECATALOG.DATAFORMTEMPLATECATALOGID = DATAFORMTEMPLATECATALOG.ID
where
DATAFORMINSTANCECATALOG.ID = @ROWCONTEXTEDITDATAFORMINSTANCEID and DATAFORMTEMPLATECATALOG.[MODE] = 0
if @ObjID is null
begin
raiserror (N'Data form instance specified by ''%s'' is not a valid edit data form.', 16, 1, N'ROWCONTEXTEDITDATAFORMINSTANCEID')
return 1;
end
end
--find if template name already exists with a different ID, and if so, find a new name
if
(
exists
(
select
ID
from
dbo.BATCHTEMPLATE
where
NAME = @NAME and ID <> @ID
)
and
@ID = (
select
BATCHTYPECATALOG.SPECXML.value
(
'declare namespace ns="bb_appfx_batchtype";
(/ns:BatchTypeSpec/@BatchTemplateID)[1]','uniqueidentifier'
)
from
dbo.BATCHTYPECATALOG
where
ID = @BATCHTYPECATALOGID)
)
begin
declare @NUMBER int;
set @NUMBER = 1;
declare @CORRECTNUMBERFOUND bit;
set @CORRECTNUMBERFOUND = 0;
declare @UPDATEDNAME nvarchar(150);
while @CORRECTNUMBERFOUND = 0 begin
set @UPDATEDNAME = @NAME + ' ' + cast(@NUMBER as nvarchar(10));
if (select count(ID) from dbo.BATCHTEMPLATE where NAME = @UPDATEDNAME) = 0 or (select count(ID) from dbo.BATCHTEMPLATE where NAME = @UPDATEDNAME and ID = @ID) = 1
set @CORRECTNUMBERFOUND = 1;
else
set @NUMBER = @NUMBER + 1;
end
set @NAME = @UPDATEDNAME;
end
declare @HASCUSTOMCOLUMN bit;
set @HASCUSTOMCOLUMN = 0;
select
@HASCUSTOMCOLUMN = 1
from
INFORMATION_SCHEMA.COLUMNS
where
(TABLE_SCHEMA = 'dbo') AND (TABLE_NAME = 'BATCHTEMPLATE') AND (COLUMN_NAME = 'CUSTOM')
if @SITEID = '00000000-0000-0000-0000-000000000000'
set @SITEID = null;
declare @BATCHNUMBERINGSCHEMEID uniqueidentifier;
if @ExistingID is null
select
@BATCHNUMBERINGSCHEMEID = BATCHNUMBERINGSCHEMEID
from dbo.BATCHWORKFLOW
where BATCHWORKFLOW.ID = @BATCHWORKFLOWID
if @ExistingID is null
begin
if @ID is null
set @ID = NewID()
if @HASCUSTOMCOLUMN = 1
insert into dbo.BATCHTEMPLATE
(
ID,
[NAME],
DESCRIPTION,
BATCHTYPECATALOGID,
ADDROWDATAFORMINSTANCEID,
EDITROWDATAFORMINSTANCEID,
COMMITROWADDDATAFORMINSTANCEID,
COMMITROWEDITDATAFORMINSTANCEID,
COMMITROWEDITDATAFORMIDFIELD,
ROWRECORDOPERATIONID,
ROWCONTEXTVIEWDATAFORMINSTANCEID,
ROWCONTEXTEDITDATAFORMINSTANCEID,
FORMDEFINITIONXML,
BATCHWORKFLOWID,
CUSTOM,
SITEID,
BATCHNUMBERINGSCHEMEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ID,
@NAME,
@DESCRIPTION,
@BATCHTYPECATALOGID,
@ADDROWDATAFORMINSTANCEID,
@EDITROWDATAFORMINSTANCEID,
@COMMITROWADDDATAFORMINSTANCEID,
@COMMITROWEDITDATAFORMINSTANCEID,
@COMMITROWEDITDATAFORMIDFIELD,
@ROWRECORDOPERATIONID,
@ROWCONTEXTVIEWDATAFORMINSTANCEID,
@ROWCONTEXTEDITDATAFORMINSTANCEID,
@FORMDEFINITIONXML,
@BATCHWORKFLOWID,
@CUSTOM,
@SITEID,
@BATCHNUMBERINGSCHEMEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
GETDATE(),
GETDATE()
)
else
insert into dbo.BATCHTEMPLATE
(
ID,
[NAME],
DESCRIPTION,
BATCHTYPECATALOGID,
ADDROWDATAFORMINSTANCEID,
EDITROWDATAFORMINSTANCEID,
COMMITROWADDDATAFORMINSTANCEID,
COMMITROWEDITDATAFORMINSTANCEID,
COMMITROWEDITDATAFORMIDFIELD,
ROWRECORDOPERATIONID,
ROWCONTEXTVIEWDATAFORMINSTANCEID,
ROWCONTEXTEDITDATAFORMINSTANCEID,
FORMDEFINITIONXML,
BATCHWORKFLOWID,
SITEID,
BATCHNUMBERINGSCHEMEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ID,
@NAME,
@DESCRIPTION,
@BATCHTYPECATALOGID,
@ADDROWDATAFORMINSTANCEID,
@EDITROWDATAFORMINSTANCEID,
@COMMITROWADDDATAFORMINSTANCEID,
@COMMITROWEDITDATAFORMINSTANCEID,
@COMMITROWEDITDATAFORMIDFIELD,
@ROWRECORDOPERATIONID,
@ROWCONTEXTVIEWDATAFORMINSTANCEID,
@ROWCONTEXTEDITDATAFORMINSTANCEID,
@FORMDEFINITIONXML,
@BATCHWORKFLOWID,
@SITEID,
@BATCHNUMBERINGSCHEMEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
GETDATE(),
GETDATE()
)
end
else if @HASCUSTOMCOLUMN = 1
update
dbo.BATCHTEMPLATE
set
[NAME] = @NAME,
DESCRIPTION = @DESCRIPTION,
ADDROWDATAFORMINSTANCEID = @ADDROWDATAFORMINSTANCEID,
EDITROWDATAFORMINSTANCEID = @EDITROWDATAFORMINSTANCEID,
COMMITROWADDDATAFORMINSTANCEID = @COMMITROWADDDATAFORMINSTANCEID,
COMMITROWEDITDATAFORMINSTANCEID = @COMMITROWEDITDATAFORMINSTANCEID,
COMMITROWEDITDATAFORMIDFIELD = @COMMITROWEDITDATAFORMIDFIELD,
ROWRECORDOPERATIONID = @ROWRECORDOPERATIONID,
ROWCONTEXTVIEWDATAFORMINSTANCEID = @ROWCONTEXTVIEWDATAFORMINSTANCEID,
ROWCONTEXTEDITDATAFORMINSTANCEID = @ROWCONTEXTEDITDATAFORMINSTANCEID,
FORMDEFINITIONXML = @FORMDEFINITIONXML,
BATCHWORKFLOWID = @BATCHWORKFLOWID,
CUSTOM = @CUSTOM,
SITEID = @SITEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = GETDATE()
where
ID = @ID
else
update
dbo.BATCHTEMPLATE
set
[NAME] = @NAME,
DESCRIPTION = @DESCRIPTION,
ADDROWDATAFORMINSTANCEID = @ADDROWDATAFORMINSTANCEID,
EDITROWDATAFORMINSTANCEID = @EDITROWDATAFORMINSTANCEID,
COMMITROWADDDATAFORMINSTANCEID = @COMMITROWADDDATAFORMINSTANCEID,
COMMITROWEDITDATAFORMINSTANCEID = @COMMITROWEDITDATAFORMINSTANCEID,
COMMITROWEDITDATAFORMIDFIELD = @COMMITROWEDITDATAFORMIDFIELD,
ROWRECORDOPERATIONID = @ROWRECORDOPERATIONID,
ROWCONTEXTVIEWDATAFORMINSTANCEID = @ROWCONTEXTVIEWDATAFORMINSTANCEID,
ROWCONTEXTEDITDATAFORMINSTANCEID = @ROWCONTEXTEDITDATAFORMINSTANCEID,
FORMDEFINITIONXML = @FORMDEFINITIONXML,
BATCHWORKFLOWID = @BATCHWORKFLOWID,
SITEID = @SITEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = GETDATE()
where
ID = @ID;