USP_IMPORTPROCESSBATCH_UPDATE

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@NUMBEROFEXCEPTIONS int IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_IMPORTPROCESSBATCH_UPDATE
(
  @ID uniqueidentifier,
  @NUMBEROFEXCEPTIONS int,
  @CHANGEAGENTID uniqueidentifier
)
as
begin
  set nocount on;

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

  declare @BASETABLENAME nvarchar(128);
    declare @AMOUNTCOLUMN nvarchar(100);
  declare @BATCHID uniqueidentifier;
  declare @COMMITTED bit;
  declare @EXCEPTIONBATCHID uniqueidentifier;

    select @BASETABLENAME=BASETABLENAME, 
    @AMOUNTCOLUMN=AMOUNTCOLUMN, 
    @BATCHID = BATCH.ID, 
    @COMMITTED = case BATCH.STATUSCODE when 1 then 1 else 0 end
    @EXCEPTIONBATCHID = EXCEPTIONBATCH.ID
  from dbo.BATCHTYPECATALOG 
    inner join dbo.BATCHTEMPLATE on BATCHTYPECATALOG.ID = BATCHTEMPLATE.BATCHTYPECATALOGID
  inner join dbo.BATCH on BATCHTEMPLATE.ID = BATCH.BATCHTEMPLATEID
  left join dbo.BATCH as EXCEPTIONBATCH on BATCH.ID = EXCEPTIONBATCH.ORIGINATINGBATCHID
  inner join dbo.IMPORTPROCESSBATCH on BATCH.ID = IMPORTPROCESSBATCH.BATCHID
  where IMPORTPROCESSBATCH.ID = @ID;

    if len(@BASETABLENAME) > 0
    begin
      declare @sql nvarchar(max);
        declare @batchidstring nvarchar(36);
    declare @importprocessbatchid nvarchar(36);
    declare @exceptionbatchidstring nvarchar(36);
        set @batchidstring = cast(@BATCHID as nvarchar(36));
    set @importprocessbatchid = cast(@ID as nvarchar(36));

    set @sql = 'update dbo.IMPORTPROCESSBATCH set CHANGEDBYID = ''' + cast(@CHANGEAGENTID as nvarchar(36)) + ''', DATECHANGED = getdate(), ';
    if @COMMITTED = 1
    begin
      if @EXCEPTIONBATCHID is not null
      begin
        set @exceptionbatchidstring = cast(@EXCEPTIONBATCHID as nvarchar(36));
        if len(@AMOUNTCOLUMN) > 0
          set @sql = @sql + 'COMMITTEDTOTAL = (select coalesce(sum(' + @AMOUNTCOLUMN + '), 0) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @batchidstring + ''') - (select coalesce(sum(' + @AMOUNTCOLUMN + '), 0) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @exceptionbatchidstring + '''), ';
        set @sql = @sql + 'COMMITTEDNUMBER = (select count(1) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @batchidstring + ''') - (select count(1) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @exceptionbatchidstring + '''), ';
      end
      else
      begin
        if len(@AMOUNTCOLUMN) > 0
          set @sql = @sql + 'COMMITTEDTOTAL = (select coalesce(sum(' + @AMOUNTCOLUMN + '), 0) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @batchidstring + '''), ';
        set @sql = @sql + 'COMMITTEDNUMBER = (select count(1) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @batchidstring + '''), ';
      end
    end
    if len(@AMOUNTCOLUMN) > 0
        set @sql = @sql + 'IMPORTEDTOTAL = (select coalesce(sum(' + @AMOUNTCOLUMN + '), 0) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @batchidstring + '''), ';
    set @sql = @sql + 'IMPORTEDNUMBER = (select count(1) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @batchidstring + ''') where IMPORTPROCESSBATCH.ID = ''' + @importprocessbatchid + '''';
        exec(@sql);
    end    

    update dbo.IMPORTPROCESSBATCH
  set NUMBEROFBATCHEXCEPTIONS = @NUMBEROFEXCEPTIONS
  where ID = @ID;
end