USP_DATAFORMTEMPLATE_ADD_BATCH
The save procedure used by the add dataform template "Batch Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@BATCHNUMBER | nvarchar(100) | IN | Batch number |
@DESCRIPTION | nvarchar(1000) | IN | Description |
@OWNERID | uniqueidentifier | IN | Owner |
@PROJECTEDNUMBEROFRECORDS | int | IN | Projected # |
@PROJECTEDTOTALAMOUNT | money | IN | Projected amount |
@BATCHTEMPLATEID | uniqueidentifier | IN | Batch design |
@ORIGINATINGBATCHID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@CREATECUSTOMBATCH | bit | IN | Create custom batch |
@FORMDEFINITIONXML | xml | IN | |
@AUTOSAVEONROWCHANGE | bit | IN | Auto save |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_BATCH
(
@ID uniqueidentifier = null output,
@CURRENTAPPUSERID uniqueidentifier,
@BATCHNUMBER nvarchar(100) = '',
@DESCRIPTION nvarchar(1000) = '',
@OWNERID uniqueidentifier = null,
@PROJECTEDNUMBEROFRECORDS int = 0,
@PROJECTEDTOTALAMOUNT money = 0,
@BATCHTEMPLATEID uniqueidentifier,
@ORIGINATINGBATCHID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@CREATECUSTOMBATCH bit = null,
@FORMDEFINITIONXML xml = null,
@AUTOSAVEONROWCHANGE bit = 0
)
as
set nocount on;
declare @TEMPLATEID uniqueidentifier;
declare @NAME nvarchar(100);
declare @BATCHWORKFLOWSTATEID uniqueidentifier;
declare @BATCHWORKFLOWID uniqueidentifier;
declare @BATCHTYPECATALOGID uniqueidentifier;
declare @BATCHNUMBERINGSCHEMEID uniqueidentifier;
declare @CHANGEDATE datetime;
set @CHANGEDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CREATECUSTOMBATCH = null
set @CREATECUSTOMBATCH = 0;
if ((@BATCHNUMBER is null) or (len(@BATCHNUMBER) = 0))
begin
select
@BATCHTYPECATALOGID = BATCHTEMPLATE.BATCHTYPECATALOGID,
@BATCHWORKFLOWID = BATCHWORKFLOW.ID,
@BATCHNUMBERINGSCHEMEID = BATCHTEMPLATE.BATCHNUMBERINGSCHEMEID
from
dbo.BATCHTEMPLATE
inner join dbo.BATCHWORKFLOW on BATCHTEMPLATE.BATCHWORKFLOWID = BATCHWORKFLOW.ID
where
BATCHTEMPLATE.ID = @BATCHTEMPLATEID;
exec dbo.USP_BATCHNUMBERINGSCHEME_GETNEXTBATCHNUMBER_ATOMIC @ID = @BATCHNUMBERINGSCHEMEID,
@BATCHTEMPLATEID = @BATCHTEMPLATEID,
@BATCHNUMBER = @BATCHNUMBER output,
@CHANGEAGENTID = @CHANGEAGENTID;
end
else
if dbo.UFN_SECURITY_APPUSER_GRANTED_CHANGEBATCHNUMBER(@CURRENTAPPUSERID, @BATCHTEMPLATEID) = 0
raiserror('You do not have permission to assign a custom batch number for this batch design.', 13, 1);
if @CREATECUSTOMBATCH = 1
begin
declare @HASSECURITY bit;
select @HASSECURITY = dbo.UFN_SECURITY_APPUSER_GRANTED_BATCHTEMPLATECUSTOMIZE(@CURRENTAPPUSERID, @BATCHTEMPLATEID)
if @HASSECURITY = 0
begin
raiserror('You do not have permission to create a custom batch from this batch template.', 13, 1);
end;
set @TEMPLATEID = newID();
-- This might have been set up above when getting the next batch number.
if (@BATCHTYPECATALOGID is null)
select @BATCHTYPECATALOGID = BATCHTEMPLATE.BATCHTYPECATALOGID, @BATCHWORKFLOWID = BATCHTEMPLATE.BATCHWORKFLOWID from dbo.BATCHTEMPLATE where BATCHTEMPLATE.ID = @BATCHTEMPLATEID;
set @NAME = @BATCHNUMBER;
if exists(select top 1 NAME from dbo.BATCHTEMPLATE where NAME = @NAME)
begin
--make name unique?
set @NAME = @NAME + ' ' + cast(getDate() as nvarchar(15));
end;
exec dbo.USP_BATCHTEMPLATEPROCESSOR_CREATEORUPDATE @TEMPLATEID output, @BATCHTYPECATALOGID, @NAME, '', @FORMDEFINITIONXML, @BATCHWORKFLOWID, @CHANGEAGENTID, @CREATECUSTOMBATCH;
set @BATCHTEMPLATEID = @TEMPLATEID;
end;
else
begin
declare @TEMPLATE_FORMDEFINITIONXML xml;
select @TEMPLATE_FORMDEFINITIONXML = BATCHTEMPLATE.FORMDEFINITIONXML, @BATCHWORKFLOWID = BATCHTEMPLATE.BATCHWORKFLOWID from dbo.BATCHTEMPLATE where BATCHTEMPLATE.ID = @BATCHTEMPLATEID;
if @FORMDEFINITIONXML is null
set @FORMDEFINITIONXML = @TEMPLATE_FORMDEFINITIONXML;
end;
if @ID is null
set @ID = newid()
begin try
declare @APPUSERID uniqueidentifier;
if @OWNERID is null
set @APPUSERID = @CURRENTAPPUSERID;
else
set @APPUSERID = @OWNERID;
if not @BATCHWORKFLOWID is null
select @BATCHWORKFLOWSTATEID=ID from dbo.BATCHWORKFLOWSTATE where BATCHWORKFLOWID = @BATCHWORKFLOWID and ISINITIALSTATE = 1;
else
set @BATCHWORKFLOWSTATEID = null;
--need to create new dataforms if necessary
insert into dbo.BATCH (ID, BATCHNUMBER, DESCRIPTION, PROJECTEDNUMBEROFRECORDS, PROJECTEDTOTALAMOUNT, BATCHTEMPLATEID, APPUSERID, BATCHWORKFLOWSTATEID, ORIGINATINGBATCHID, FORMDEFINITIONXML, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, AUTOSAVEONROWCHANGE)
values (@ID, @BATCHNUMBER, @DESCRIPTION, coalesce(@PROJECTEDNUMBEROFRECORDS, 0), @PROJECTEDTOTALAMOUNT, @BATCHTEMPLATEID, @APPUSERID, @BATCHWORKFLOWSTATEID, @ORIGINATINGBATCHID, @FORMDEFINITIONXML,@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, coalesce(@AUTOSAVEONROWCHANGE,0));
if not @BATCHWORKFLOWSTATEID is null
insert into dbo.BATCHWORKFLOWSTATUS (BATCHID, APPUSERID, BATCHWORKFLOWSTATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, APPUSERNAME)
values (@ID, @APPUSERID, @BATCHWORKFLOWSTATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, COALESCE(dbo.UFN_APPUSER_GETNAME(@APPUSERID),''));
exec dbo.USP_BATCHASSIGNEDALERT_SEND null, @ID;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0