USP_DATAFORMTEMPLATE_ADD_BATCHTEMPLATECOPY

The save procedure used by the add dataform template "Batch Template Copy Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@BATCHTEMPLATEID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@NAME nvarchar(60) IN Batch template name
@DESCRIPTION nvarchar(1000) IN Description
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_BATCHTEMPLATECOPY
                    (
                        @ID uniqueidentifier output,
                        @BATCHTEMPLATEID uniqueidentifier,
                        @NAME nvarchar(60),
                        @DESCRIPTION nvarchar(1000) = '',
                        @CHANGEAGENTID uniqueidentifier = null
                    )
                    as
                        set nocount on;

                        if @CHANGEAGENTID is null
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                        declare @CURRENTDATE datetime;
                        set @CURRENTDATE = getdate();

                        if @ID is null
                            set @ID = newid();

                        -- Get existing batch design
                        declare @BATCHFIELDS xml;
                        declare @BATCHWORKFLOWID uniqueidentifier;
                        declare @BATCHTYPECATALOGID uniqueidentifier;
                        declare @SITEID uniqueidentifier;
            declare @AUTOSAVEONROWCHANGE bit ;
            declare @NUMBERINGSCHEMEID uniqueidentifier ;
            declare @VALIDATEBATCH bit ;
            declare @CHECKFORDUPLICATERECORDS bit ;
            declare @PURGEBATCH bit ;
            declare @CREATEEXCEPTIONBATCH bit;
            declare @CREATECONTROLREPORT bit ;
            declare @CREATEOUTPUTIDSET bit ;
            declare @TEMPLATEUSECODE tinyint ;
            declare @TEMPLATEPERMISSIONS xml ;
            declare @CUSTOMIZEPERMISSIONS xml ;
            declare @AUTOMATCHTHRESHOLD int ;
            declare @OVERALLMATCHTHRESHOLD int ;

                        select                         
                            @BATCHFIELDS = BATCHTEMPLATE.FORMDEFINITIONXML,
                            @BATCHWORKFLOWID = BATCHWORKFLOWID,
                            @BATCHTYPECATALOGID = BATCHTEMPLATE.BATCHTYPECATALOGID,
                            @SITEID = BATCHTEMPLATE.SITEID,
              @NUMBERINGSCHEMEID =  BATCHNUMBERINGSCHEMEID ,
              @VALIDATEBATCH = DEFAULTVALIDATEBEFORECOMMIT ,
              @CHECKFORDUPLICATERECORDS = DEFAULTCHECKFORDUPLICATES ,
              @PURGEBATCH = DEFAULTDELETEBATCHAFTERCOMMIT ,
              @CREATEEXCEPTIONBATCH = DEFAULTCREATEEXCEPTIONBATCH ,
              @CREATECONTROLREPORT = DEFAULTCREATECONTROLREPORT ,
              @CREATEOUTPUTIDSET = DEFAULTCREATEOUTPUTSELECTION ,
              @AUTOSAVEONROWCHANGE = AUTOSAVEONROWCHANGE ,
              @TEMPLATEUSECODE = TEMPLATEUSECODE ,
              @AUTOMATCHTHRESHOLD = AUTOMATCHTHRESHOLD ,
              @OVERALLMATCHTHRESHOLD = OVERALLMATCHTHRESHOLD
                        from
                            dbo.BATCHTEMPLATE
                            inner join dbo.BATCHTYPECATALOG ON BATCHTYPECATALOG.ID = BATCHTEMPLATE.BATCHTYPECATALOGID                        
                        where BATCHTEMPLATE.ID = @BATCHTEMPLATEID

                        begin try
                            -- Create batch design
                            exec dbo.USP_BATCHTEMPLATEPROCESSOR_CREATEORUPDATE @ID output, @BATCHTYPECATALOGID, @NAME, @DESCRIPTION, @BATCHFIELDS, @BATCHWORKFLOWID, @CHANGEAGENTID, @SITEID = @SITEID;

              -- copy permissions
              set @TEMPLATEPERMISSIONS = (select [GRANTORDENY], NEWID() as [ID], [NAME], [SYSTEMROLEID]
                                          from dbo.[UFN_BATCHTEMPLATE_GETSYSTEMROLEPERMISSIONS](@BATCHTEMPLATEID)
                                          where GRANTORDENY <> 2
                                          order by NAME
                                          for xml raw('ITEM'),type,elements,root('TEMPLATEPERMISSIONS'),BINARY BASE64)

              set @CUSTOMIZEPERMISSIONS = (select [GRANTORDENY], NEWID() as [ID], [NAME], [SYSTEMROLEID]
                                   from dbo.[UFN_BATCHTEMPLATE_GETSYSTEMROLECUSTOMIZEPERMISSIONS](@BATCHTEMPLATEID)
                                   where GRANTORDENY <> 2
                                   order by NAME
                                   for xml raw('ITEM'),type,elements,root('CUSTOMIZEPERMISSIONS'),BINARY BASE64)                                          

              exec dbo.USP_BATCHTEMPLATE_GETSYSTEMROLEPERMISSIONS_ADDFROMXML @ID, @TEMPLATEPERMISSIONS, @CHANGEAGENTID;
                exec dbo.USP_BATCHTEMPLATE_GETSYSTEMROLECUSTOMIZEPERMISSIONS_ADDFROMXML @ID, @CUSTOMIZEPERMISSIONS, @CHANGEAGENTID;


              --- new fields

 update BATCHTEMPLATE set 
              BATCHNUMBERINGSCHEMEID = @NUMBERINGSCHEMEID,
              DEFAULTVALIDATEBEFORECOMMIT = @VALIDATEBATCH,
              DEFAULTCHECKFORDUPLICATES = @CHECKFORDUPLICATERECORDS,
              DEFAULTDELETEBATCHAFTERCOMMIT = @PURGEBATCH,
              DEFAULTCREATEEXCEPTIONBATCH = @CREATEEXCEPTIONBATCH,
              DEFAULTCREATECONTROLREPORT = @CREATECONTROLREPORT,
              DEFAULTCREATEOUTPUTSELECTION = @CREATEOUTPUTIDSET,
              AUTOSAVEONROWCHANGE = @AUTOSAVEONROWCHANGE,
              TEMPLATEUSECODE  = @TEMPLATEUSECODE,
              CHANGEDBYID = @CHANGEAGENTID,
              DATECHANGED = @CURRENTDATE,
              AUTOMATCHTHRESHOLD = @AUTOMATCHTHRESHOLD,
              OVERALLMATCHTHRESHOLD = @OVERALLMATCHTHRESHOLD
            where ID = @ID;                           

                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch

                        return 0;