UFN_QUERY_COMMITTEDBATCHES
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SITEFILTERMODE | tinyint | IN | |
@SITESSELECTED | xml | IN | |
@SPECIFICBATCHTYPEID | uniqueidentifier | IN | |
@NUMDAYS | int | IN | |
@INCLUDEDELETED | bit | IN |
Definition
Copy
CREATE function dbo.UFN_QUERY_COMMITTEDBATCHES
(
@CURRENTAPPUSERID uniqueidentifier,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null,
@SPECIFICBATCHTYPEID uniqueidentifier = null,
@NUMDAYS int = 7,
@INCLUDEDELETED bit = 0
)
returns table
as return (
-- these batch template CTEs resolve a chain of batch templates, where each is created from the next, down to the original batch template
with ISSYSADMIN (ISSYSADMIN) as (
select ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID
)
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.STATUSCODE,
case when exists (select top 1 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 as CONTROLREPORTVISIBLE,
case when exists (select top 1 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 as EXCEPTIONREPORTVISIBLE,
case when BATCH.ORIGINATINGBATCHID is not null or CHILDBATCH.ID is not null then 1 else 0 end as INEXCEPTIONCHAIN,
case when BATCHTEMPLATE.CUSTOM = 1 then dbo.UFN_BATCHTEMPLATE_GETORIGINATINGTEMPLATENAME(BATCH.BATCHTEMPLATEID) else BATCHTEMPLATE.NAME end as BATCHDESIGN,
BATCH.DATECOMMITTED,
case when BATCHTEMPLATE.CUSTOM = 1 then 1 else null end as ISCUSTOM,
isnull(SITE.NAME, 'All sites') as BATCHTEMPLATESITE,
BATCH.DATEADDED,
BATCH.DATECHANGED
from dbo.BATCH
left join dbo.BATCH as CHILDBATCH on BATCH.ID = CHILDBATCH.ORIGINATINGBATCHID
inner join BATCHTEMPLATE on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID
inner join BATCHTYPECATALOG on BATCHTEMPLATE.BATCHTYPECATALOGID = BATCHTYPECATALOG.ID
left join dbo.SITE on SITE.ID = BATCHTEMPLATE.SITEID
left join dbo.BATCHWORKFLOWSTATUS on BATCHWORKFLOWSTATUS.BATCHID = BATCH.ID and BATCHWORKFLOWSTATUS.BATCHWORKFLOWSTATEID = BATCH.BATCHWORKFLOWSTATEID and BATCHWORKFLOWSTATUS.APPUSERID = @CURRENTAPPUSERID and BATCHWORKFLOWSTATUS.DATECHANGED = BATCH.DATECHANGED
cross apply ISSYSADMIN
where BATCH.STATUSCODE IN (1, 1 + isnull(@INCLUDEDELETED, 0)) -- committed, deleted
and BATCH.DATECOMMITTED is not null
-- feature security
and (
BATCHWORKFLOWSTATUS.BATCHID is not null -- current user is assigned the batch; trumps everything
or
BATCH.APPUSERID = @CURRENTAPPUSERID -- current user owns the batch; trumps everything
or
ISSYSADMIN.ISSYSADMIN = 1
or (
dbo.UFN_SECURITY_APPUSER_GRANTED_BATCHOWNER(@CURRENTAPPUSERID, BATCH.ID) = 1
and (
BATCHTEMPLATE.SITEID is null
or exists (select top 1 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID, '10265778-d9b2-474e-84b5-422cfec48e57', 10) where SITEID = BATCHTEMPLATE.SITEID)
)
)
)
-- site filter
and (
@SITEFILTERMODE = 0
or
BATCHTEMPLATE.SITEID in (select SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED))
)
-- time window
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()))
)
-- other parameters
and (@SPECIFICBATCHTYPEID is null or BATCHTYPECATALOG.ID = @SPECIFICBATCHTYPEID)
)