USP_DATAFORMTEMPLATE_ADD_REGISTRANTBATCH

The save procedure used by the add dataform template "RegistrantBatchTemplate Add Data 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 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

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_REGISTRANTBATCH
(
  @ID uniqueidentifier = null output
  , @CURRENTAPPUSERID uniqueidentifier
  , @BATCHNUMBER nvarchar(100) = ''
  , @DESCRIPTION nvarchar(1000) = ''
  , @OWNERID uniqueidentifier = null            
  , @PROJECTEDNUMBEROFRECORDS int = 0
  , @PROJECTEDTOTALAMOUNT money = 0
  , @BATCHTEMPLATEID uniqueidentifier = 'EEA94C9B-E963-403F-92F8-CC4E85745FFA'
  , @ORIGINATINGBATCHID uniqueidentifier = null
  , @CHANGEAGENTID uniqueidentifier = null
  , @CREATECUSTOMBATCH bit = null
  , @FORMDEFINITIONXML xml = null
  , @AUTOSAVEONROWCHANGE bit = 0
  , @OVERRIDEBATCHNUMBER 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;
    declare @USENUMBERINGSCHEME bit;

    set @CHANGEDATE = getdate();
    set @USENUMBERINGSCHEME = 0;

    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
        if dbo.UFN_SECURITY_APPUSER_GRANTED_CHANGEBATCHNUMBER(@CURRENTAPPUSERID, @BATCHTEMPLATEID) = 0
            raiserror('ERR_CANNOTCUSTOMIZE_NUMBER', 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 @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;

      -- copy new features from template to custom

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

      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 @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


    declare @CREATEEXCEPTIONBATCH bit ;
    declare @PURGEBATCH bit ;
    declare @CREATECONTROLREPORT bit;
    declare @VALIDATEBATCH bit;
    declare @CHECKFORDUPLICATERECORDS bit;

    select
      @CREATEEXCEPTIONBATCH = BATCHTEMPLATE.DEFAULTCREATEEXCEPTIONBATCH,
      @CREATECONTROLREPORT = BATCHTEMPLATE.DEFAULTCREATECONTROLREPORT,
      @VALIDATEBATCH = BATCHTEMPLATE.DEFAULTVALIDATEBEFORECOMMIT,
      @PURGEBATCH = BATCHTEMPLATE.DEFAULTDELETEBATCHAFTERCOMMIT,
      @CHECKFORDUPLICATERECORDS = BATCHTEMPLATE.DEFAULTCHECKFORDUPLICATES
    from
      dbo.BATCHTEMPLATE
    where
      BATCHTEMPLATE.ID = @BATCHTEMPLATEID;

    insert into dbo.BATCH (
      ID
      , BATCHNUMBER
      , DESCRIPTION
      , PROJECTEDNUMBEROFRECORDS
      , PROJECTEDTOTALAMOUNT
      , BATCHTEMPLATEID
      , APPUSERID
      , BATCHWORKFLOWSTATEID
      , ORIGINATINGBATCHID
      , FORMDEFINITIONXML
      , AUTOSAVEONROWCHANGE
      , VALIDATEBATCH
      , CHECKFORDUPLICATERECORDS
      , CREATEEXCEPTIONBATCH
      , PURGEBATCH
      , CREATECONTROLREPORT
      , ADDEDBYID
      , CHANGEDBYID
      , DATEADDED
      , DATECHANGED
    )
    values (
      @ID
      , @BATCHNUMBER
      , @DESCRIPTION
      , coalesce(@PROJECTEDNUMBEROFRECORDS, 0)
      , @PROJECTEDTOTALAMOUNT
      , @BATCHTEMPLATEID
      , @APPUSERID
      , @BATCHWORKFLOWSTATEID
      , @ORIGINATINGBATCHID
      , @FORMDEFINITIONXML
      , coalesce(@AUTOSAVEONROWCHANGE, 0)
      , @VALIDATEBATCH
      , @CHECKFORDUPLICATERECORDS
      , @CREATEEXCEPTIONBATCH
      , @PURGEBATCH
      , @CREATECONTROLREPORT
      , @CHANGEAGENTID
      , @CHANGEAGENTID
      , @CHANGEDATE
      , @CHANGEDATE
    );

    if @BATCHWORKFLOWSTATEID is not 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;