USP_DATAFORMTEMPLATE_EDITSAVE_BATCH2FIELDOPTIONS

The save procedure used by the edit dataform template "Batch Field Options Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@CREATECUSTOMBATCH bit IN Create custom batch
@BATCHFIELDS xml IN Batch fields

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_BATCH2FIELDOPTIONS(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CREATECUSTOMBATCH bit,
@BATCHFIELDS xml
)
as
begin
  set nocount on;

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

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

  declare @TEMPLATEID uniqueidentifier;
  declare @ORIGINATINGTEMPLATEID uniqueidentifier;
  declare @BATCHTYPECATALOGID uniqueidentifier;
  declare @BATCHWORKFLOWID uniqueidentifier;
  declare @NAME nvarchar(100);
  declare @SITEID uniqueidentifier;

  declare @CUSTOM bit;
  set @CUSTOM = 0;    

  select 
      @TEMPLATEID = BATCHTEMPLATE.ID
    , @BATCHTYPECATALOGID = BATCHTEMPLATE.BATCHTYPECATALOGID
    , @NAME = BATCHTEMPLATE.NAME
    , @BATCHWORKFLOWID = BATCHTEMPLATE.BATCHWORKFLOWID
    , @CUSTOM = BATCHTEMPLATE.CUSTOM
    , @SITEID = BATCHTEMPLATE.SITEID
  from
    dbo.BATCHTEMPLATE inner join
    dbo.BATCH on BATCHTEMPLATE.ID = BATCH.BATCHTEMPLATEID 
  where BATCH.ID = @ID;

  if @CREATECUSTOMBATCH = 1
  begin        
    declare @HASSECURITY bit;
    select @HASSECURITY = dbo.UFN_SECURITY_APPUSER_GRANTED_BATCHTEMPLATECUSTOMIZE(@CURRENTAPPUSERID, @TEMPLATEID)
    if @HASSECURITY = 0
    begin
      raiserror('You do not have permission to create a custom batch from this batch template.', 13, 1);
    end;

    select @NAME = BATCH.BATCHNUMBER from dbo.BATCH where BATCH.ID = @ID;
    if exists(select top 1 NAME from dbo.BATCHTEMPLATE where NAME = @NAME)
    begin
      --make name unique?
      set @NAME = @NAME + ' ' + convert(nvarchar, GETUTCDATE(), 20);
    end;    

    set @ORIGINATINGTEMPLATEID = @TEMPLATEID
    set @TEMPLATEID = newID();

    exec dbo.USP_BATCHTEMPLATEPROCESSOR_CREATEORUPDATE @TEMPLATEID output, @BATCHTYPECATALOGID, @NAME, '', @BATCHFIELDS, @BATCHWORKFLOWID, @CHANGEAGENTID, 1, @SITEID

    -- copy new features from template to custom
    exec dbo.USP_BATCHTEMPLATE_SETDEFAULTSFORCUSTOM @ID = @TEMPLATEID, @ORIGINALID = @ORIGINATINGTEMPLATEID;

    -- copy security from originating template
      declare @TEMPLATEPERMISSIONS xml;
      declare @CUSTOMIZEPERMISSIONS xml;

      set @TEMPLATEPERMISSIONS = (select [GRANTORDENY], NEWID() as [ID], [NAME], [SYSTEMROLEID]
                                  from dbo.[UFN_BATCHTEMPLATE_GETSYSTEMROLEPERMISSIONS](@ORIGINATINGTEMPLATEID)
                                  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](@ORIGINATINGTEMPLATEID)
                       where GRANTORDENY <> 2
                       order by NAME
                       for xml raw('ITEM'),type,elements,root('CUSTOMIZEPERMISSIONS'),BINARY BASE64)    

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


    update dbo.BATCHTEMPLATE        
    set ORIGINATINGTEMPLATEID = @ORIGINATINGTEMPLATEID
    where BATCHTEMPLATE.ID = @TEMPLATEID  
  end
  else
  begin
    if @CUSTOM = 1
      exec dbo.USP_BATCHTEMPLATEPROCESSOR_CREATEORUPDATE @TEMPLATEID output, @BATCHTYPECATALOGID, @NAME, '', @BATCHFIELDS, @BATCHWORKFLOWID, @CHANGEAGENTID, 1, @SITEID
  end

  update dbo.BATCH set 
    BATCHTEMPLATEID = @TEMPLATEID
    FORMDEFINITIONXML = @BATCHFIELDS,
    CHANGEDBYID = @CHANGEAGENTID,
    DATECHANGED = @CHANGEDATE
  where BATCH.ID = @ID;

end