USP_DATALIST_COMMITTEDBATCHES

Returns a list of all committed batches.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@NUMDAYS int IN Date range
@BATCHDESIGN uniqueidentifier IN Batch template
@CATEGORY nvarchar(100) IN Category
@INCLUDEDELETED bit IN Include deleted batches

Definition

Copy


CREATE procedure dbo.USP_DATALIST_COMMITTEDBATCHES
(
  @CURRENTAPPUSERID uniqueidentifier,
  @NUMDAYS int = 7,
  @BATCHDESIGN uniqueidentifier = null,
  @CATEGORY nvarchar(100) = '',
  @INCLUDEDELETED bit = 0
)
as
  set nocount on;

  declare @SQL nvarchar(max),
          @PARAMLIST nvarchar(4000);

  set @SQL = '
    declare @DATE datetime
    set @DATE = getdate();

    with CTE_NAME(ID, LEVELS, ORIGINATINGTEMPLATEID, ORIGINATINGTEMPLATENAME, LOOKUPID) as
    (
      select bt.ID, 0 as levels, bt.ID, bt2.NAME,  bt2.ID
      from dbo.BATCHTEMPLATE bt
      left outer join dbo.BATCHTEMPLATE bt2 on bt.ORIGINATINGTEMPLATEID = bt2.ID    
      union all
      select n.ID, n.LEVELS + 1, bt3.ID, bt3.NAME, bt3.ORIGINATINGTEMPLATEID
      from CTE_NAME n
      inner join dbo.BATCHTEMPLATE bt3 on n.LOOKUPID = bt3.ID
    )                 
    select 
      BATCH.ID, 
      BATCH.BATCHNUMBER, 
      BATCH.DESCRIPTION, 
      (select case when DISPLAYNAME = '''' then USERNAME else DISPLAYNAME end from dbo.APPUSER where ID = BATCH.APPUSERID) as OWNER,                            
      BATCH.STATUS,
      BATCHTYPECATALOG.CATEGORY,
      [BATCH].[DATECHANGED],
      coalesce(BATCHTYPECATALOG.BATCHDELETERECORDOPERATIONID, ''5345164C-DD4F-4B6E-9CF1-10E1B25E3F4F'') BATCHDELETERECORDOPERATIONID,
      BATCH.STATUSCODE,
      case
        when exists (select 1 
            from dbo.BUSINESSPROCESSOUTPUT
            inner join dbo.BATCHSTATUS on BATCHSTATUS.PARAMETERSETID = BATCH.ID
            and BUSINESSPROCESSOUTPUT.BUSINESSPROCESSSTATUSID = BATCHSTATUS.ID
            and BUSINESSPROCESSOUTPUT.TABLEKEY = ''CONTROL'') 
            and BATCH.STATUSCODE > 0 and len(BATCHTYPECATALOG.CONTROLREPORTREPORTSPECID) > 0 then 1
        else 0
      end CONTROLREPORTVISIBLE,
      case
        when exists (select 1 
            from dbo.BUSINESSPROCESSOUTPUT
            inner join dbo.BATCHSTATUS on BATCHSTATUS.PARAMETERSETID = BATCH.ID
            and BUSINESSPROCESSOUTPUT.BUSINESSPROCESSSTATUSID = BATCHSTATUS.ID
            and BUSINESSPROCESSOUTPUT.TABLEKEY = ''EXCEPTION'') 
            and BATCH.STATUSCODE > 0 and len(BATCHTYPECATALOG.EXCEPTIONREPORTREPORTSPECID) > 0 then
          1
        else 0
      end EXCEPTIONREPORTVISIBLE,
      case
        when (BATCH.ORIGINATINGBATCHID is not null) or ([CHILDBATCH].ID is not null) then 1
        else 0
      end INEXCEPTIONCHAIN,
      case when CUSTOM = 1 then xtr.ORIGINATINGTEMPLATENAME else BATCHTEMPLATE.NAME end BATCHDESIGN,
      [BATCH].[DATECOMMITTED],          
      case when BATCHTEMPLATE.CUSTOM = 1 then 1 else null end ISCUSTOM
    from dbo.BATCH
    left join dbo.BATCH [CHILDBATCH] on BATCH.ID = [CHILDBATCH].ORIGINATINGBATCHID
    inner join BATCHTEMPLATE on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID
    inner join BATCHTYPECATALOG on BATCHTEMPLATE.BATCHTYPECATALOGID = BATCHTYPECATALOG.ID
    left outer join (select n.ID, n.ORIGINATINGTEMPLATENAME, n.ORIGINATINGTEMPLATEID
                      from CTE_NAME n
                      inner join (
                        select MAX(n.LEVELS) MAXLEVEL, n.ID
                        from CTE_NAME n
                        group by id  
                      ) m on m.ID = n.ID and m.MAXLEVEL = n.LEVELS
                    ) xtr on xtr.ID = BATCH.BATCHTEMPLATEID
    where dbo.UFN_SECURITY_APPUSER_GRANTED_BATCHOWNER(@CURRENTAPPUSERID, BATCH.ID) = 1
    and BATCH.STATUSCODE IN (1, 1 + @INCLUDEDELETED)
    and not BATCH.DATECOMMITTED is null
    and (
      @NUMDAYS is null
      --The "GETLATESTTIME" date function has been inlined here for performance (the part with "dateadd(ms, -003...")...

      or (@NUMDAYS is not null and dateadd(ms, -003, dateadd(d, 1, cast(cast(BATCH.DATECOMMITTED as date) as datetime))) > dateadd(dd, -@NUMDAYS, getdate()))
    )' + char(13);

  if @BATCHDESIGN is not null
    set @SQL += '    and (BATCHTEMPLATE.ID = @BATCHDESIGN or xtr.ORIGINATINGTEMPLATEID = @BATCHDESIGN)' + char(13);

  if @CATEGORY is not null and @CATEGORY <> ''
    set @SQL += '    and BATCHTYPECATALOG.CATEGORY = @CATEGORY' + char(13);

  set @SQL += '    order by BATCH.DATECOMMITTED DESC;';

  set @PARAMLIST = '@CURRENTAPPUSERID uniqueidentifier, ' +
                   '@NUMDAYS int, ' +
                   '@BATCHDESIGN uniqueidentifier = null, ' +
                   '@CATEGORY nvarchar(100) = '''', ' +
                   '@INCLUDEDELETED bit';

  exec sp_executesql @SQL, @PARAMLIST,
    @CURRENTAPPUSERID = @CURRENTAPPUSERID,
    @NUMDAYS = @NUMDAYS,
    @BATCHDESIGN = @BATCHDESIGN,
    @CATEGORY = @CATEGORY,
    @INCLUDEDELETED = @INCLUDEDELETED;

  return 0;