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