USP_DATAFORMTEMPLATE_ADD_BATCH2

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

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 template
@ORIGINATINGBATCHID uniqueidentifier IN Originating Batch Id
@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 Enable auto-save
@OVERRIDEBATCHNUMBER bit IN Override
@AUTOMATCHTHRESHOLD decimal(20, 4) IN
@OVERALLMATCHTHRESHOLD decimal(20, 4) IN
@PARAMETERSXML xml IN
@CHECKFORDUPLICATES bit IN
@DISABLEADDNEWROW bit IN
@SKIPBATCHASSIGNMENTALERT bit IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_BATCH2  
(  
    @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,  
    @OVERRIDEBATCHNUMBER bit = 0,  
    @AUTOMATCHTHRESHOLD decimal(20, 4) = 0,  
    @OVERALLMATCHTHRESHOLD decimal(20, 4) = 0,  
    @PARAMETERSXML xml = null,  
    @CHECKFORDUPLICATES bit = null,  
    @DISABLEADDNEWROW bit = 0,   
    @SKIPBATCHASSIGNMENTALERT bit = 0  
)  
as  
    set nocount on;  

    declare @TEMPLATEID uniqueidentifier;  
    declare @ORIGINATINGTEMPLATEID uniqueidentifier;  
    declare @NAME nvarchar(100);  
    declare @BATCHWORKFLOWSTATEID uniqueidentifier;  
    declare @BATCHWORKFLOWID uniqueidentifier;    
    declare @BATCHTYPECATALOGID uniqueidentifier;  
    declare @BATCHNUMBERINGSCHEMEID uniqueidentifier;   
    declare @USENUMBERINGSCHEME bit;  
    declare @ISMANUALSCHEME bit;  
    declare @SITEID uniqueidentifier;      
    set @USENUMBERINGSCHEME = 0;  
    select @SITEID = SITEID from dbo.BATCHTEMPLATE where ID = @BATCHTEMPLATEID;  
    if @CHANGEAGENTID is null    
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;  

    if @CREATECUSTOMBATCH = null  
      set @CREATECUSTOMBATCH = 0;  

    if (@OVERRIDEBATCHNUMBER = 0 and (@BATCHNUMBER is null or len(@BATCHNUMBER) = 0))  
      set @USENUMBERINGSCHEME = 1;  

    if (@USENUMBERINGSCHEME = 1)  
    begin  
        -- find the batch number from the workflow  

        select  
            @BATCHTYPECATALOGID = BATCHTEMPLATE.BATCHTYPECATALOGID,  
            @BATCHWORKFLOWID = BATCHTEMPLATE.BATCHWORKFLOWID,  
            @BATCHNUMBERINGSCHEMEID = BATCHTEMPLATE.BATCHNUMBERINGSCHEMEID  
        from   
            dbo.BATCHTEMPLATE  
        where  
            BATCHTEMPLATE.ID = @BATCHTEMPLATEID;  

        if @BATCHNUMBERINGSCHEMEID is null  
          raiserror('ERR_NUMBERINGSCHEME_NOTDEFINED', 13, 1);  

        exec dbo.USP_BATCHNUMBERINGSCHEME_GETNEXTBATCHNUMBER_ATOMIC @ID = @BATCHNUMBERINGSCHEMEID  
          , @BATCHTEMPLATEID = @BATCHTEMPLATEID  
          , @BATCHNUMBER = @BATCHNUMBER output  
          , @CHANGEAGENTID = @CHANGEAGENTID;  
    end  
    else  
    begin  
        select  
            @BATCHNUMBERINGSCHEMEID = BATCHTEMPLATE.BATCHNUMBERINGSCHEMEID,  
            @ISMANUALSCHEME = case BATCHNUMBERINGSCHEME.NUMBERINGSCHEMECODE when 0 then 0 else 1 end  
        from dbo.BATCHTEMPLATE  
          left join dbo.BATCHNUMBERINGSCHEME on BATCHTEMPLATE.BATCHNUMBERINGSCHEMEID = BATCHNUMBERINGSCHEME.ID  
        where  
            BATCHTEMPLATE.ID = @BATCHTEMPLATEID;  

        if @BATCHNUMBERINGSCHEMEID is null  
          raiserror('ERR_NUMBERINGSCHEME_NOTDEFINED', 13, 1);  

        -- Only check for rights when the originating ID is not provided. If it is, then we are coming  

        -- from the commit process for creating exception batches.  

        if @ORIGINATINGBATCHID is null  
        begin  
          if @ISMANUALSCHEME = 0 and dbo.UFN_SECURITY_APPUSER_GRANTED_CHANGEBATCHNUMBER(@CURRENTAPPUSERID, @BATCHTEMPLATEID) = 0  
          raiserror('ERR_CANNOTCUSTOMIZE_NUMBER', 13, 1);  
        end  
        if exists (select 
                    top 1 BATCH.ID 
                  from dbo.BATCH 
                  inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.ID = BATCH.BATCHTEMPLATEID
                  where BATCHNUMBER = @BATCHNUMBER and BATCHNUMBERINGSCHEMEID = @BATCHNUMBERINGSCHEMEID)
              raiserror('ERR_BATCHNUMBER_ISUNIQUE', 13, 1);    
    end  

    if @CREATECUSTOMBATCH = 1  
    begin  
      declare @HASSECURITY bit;  

      select @HASSECURITY = dbo.UFN_SECURITY_APPUSER_GRANTED_BATCHTEMPLATECUSTOMIZE(@CURRENTAPPUSERID, @BATCHTEMPLATEID);  
      if @HASSECURITY = 0  
      begin  
        raiserror('ERR_CANNOTCUSTOMIZE_BATCH', 13, 1);  
      end;  
      set @ORIGINATINGTEMPLATEID = @BATCHTEMPLATEID;  
      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 + ' ' + convert(nvarchar(30), GETDATE(), 109);  
      end;  
      exec dbo.USP_BATCHTEMPLATEPROCESSOR_CREATEORUPDATE @TEMPLATEID output, @BATCHTYPECATALOGID, @NAME, '', @FORMDEFINITIONXML, @BATCHWORKFLOWID, @CHANGEAGENTID, @CREATECUSTOMBATCH, @SITEID;  

      -- copy new features from template to custom  

      exec dbo.USP_BATCHTEMPLATE_SETDEFAULTSFORCUSTOM @ID = @TEMPLATEID, @ORIGINALID = @BATCHTEMPLATEID;  

      -- 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](@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 @TEMPLATEID, @TEMPLATEPERMISSIONS, @CHANGEAGENTID;                                          
      exec dbo.USP_BATCHTEMPLATE_GETSYSTEMROLECUSTOMIZEPERMISSIONS_ADDFROMXML @TEMPLATEID, @CUSTOMIZEPERMISSIONS, @CHANGEAGENTID;  

      update dbo.BATCHTEMPLATE  
      set ORIGINATINGTEMPLATEID = @ORIGINATINGTEMPLATEID  
      where BATCHTEMPLATE.ID = @TEMPLATEID  

      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  
        --WI 182042 if creating an exception batch use the same formmetadata (with defaults, hidden and required fields) that the originating batch has  

        if @ORIGINATINGBATCHID is null  
          set @FORMDEFINITIONXML = @TEMPLATE_FORMDEFINITIONXML;  
        else  
          select @FORMDEFINITIONXML = BATCH.FORMDEFINITIONXML, @PARAMETERSXML = PARAMETERSXML from dbo.BATCH where BATCH.ID = @ORIGINATINGBATCHID  
    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 @BATCHWORKFLOWID is not null   
        begin  
          select   
            @BATCHWORKFLOWSTATEID = ID   
          from dbo.BATCHWORKFLOWSTATE   
          where   
            BATCHWORKFLOWID = @BATCHWORKFLOWID   
            and ISINITIALSTATE = 1;  
        end;  
      else  
        set @BATCHWORKFLOWSTATEID = null;  

      if @BATCHWORKFLOWSTATEID is null  
      begin  
        raiserror('ERR_INVALIDWORKFLOW_DEFINED', 13, 1);  
      end;  

      --need to create new dataforms if necessary  


    exec USP_BATCH2_ADD @ID = @ID,
           @BATCHNUMBER = @BATCHNUMBER,
           @DESCRIPTION = @DESCRIPTION,
           @OWNERID = @APPUSERID,
           @BATCHTEMPLATEID = @BATCHTEMPLATEID,
           @BATCHWORKFLOWSTATEID = @BATCHWORKFLOWSTATEID,
           @PROJECTEDNUMBEROFRECORDS = @PROJECTEDNUMBEROFRECORDS,
           @PROJECTEDTOTALAMOUNT = @PROJECTEDTOTALAMOUNT,
           @FORMDEFINITIONXML = @FORMDEFINITIONXML,
           @ORIGINATINGBATCHID = @ORIGINATINGBATCHID,
           @CHANGEAGENTID = @CHANGEAGENTID,
           @AUTOSAVEONROWCHANGE = @AUTOSAVEONROWCHANGE,
           @AUTOMATCHTHRESHOLD = @AUTOMATCHTHRESHOLD,
           @OVERALLMATCHTHRESHOLD = @OVERALLMATCHTHRESHOLD,
           @PARAMETERSXML = @PARAMETERSXML,
           @DISABLEADDNEWROW = @DISABLEADDNEWROW,
           @CHECKFORDUPLICATES =  @CHECKFORDUPLICATES

    if @SKIPBATCHASSIGNMENTALERT = 0 begin  
        exec dbo.USP_BATCHASSIGNEDALERT_SEND null, @ID;  
    end;  

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

    return 0;