USP_KPIINSTANCE_GETTREE
Gets a list of KPI instances.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_KPIINSTANCE_GETTREE(@CURRENTAPPUSERID uniqueidentifier = null)
as
set nocount on;
declare @ISSYSADMIN bit;
declare @SITEPRODUCTINSTALLED bit;
set @ISSYSADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @SITEPRODUCTINSTALLED = dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('133f9bca-00f1-4007-9792-586b931340c6');
select KPIINSTANCE.ID,
KPIINSTANCE.KPICATALOGID,
KPIINSTANCE.NAME,
KPIINSTANCE.DESCRIPTION,
KPIINSTANCE.GOALVALUE,
KPIINSTANCE.PARAMETERSXML,
KPICATALOG.GOALTYPECODE,
KPICATALOG.UIFOLDER,
KPICATALOG.DECIMALPLACES,
KPICATALOG.SPECXML.value('declare namespace kpi="bb_appfx_kpi"; (/kpi:KpiSpec/kpi:KpiFormDefinition)[1]/@CurrencyFieldID', 'nvarchar(max)') CURRENCYFIELDID
from dbo.KPIINSTANCE
inner join dbo.KPICATALOG on KPIINSTANCE.KPICATALOGID = KPICATALOG.ID
where (
KPICATALOG.HASSITEFILTER = 0 or
KPIINSTANCE.SITEFILTERENABLEDFORINSTANCE = 0 or
@SITEPRODUCTINSTALLED = 0 or
@ISSYSADMIN = 1 or
exists
(
select 1
from dbo.SYSTEMROLEAPPUSER
where
SYSTEMROLEAPPUSER.APPUSERID = @CURRENTAPPUSERID and
-- Make sure the kpi instance is permissioned for this role
exists
(
select 1
from dbo.SYSTEMROLEKPIINSTANCE
where
SYSTEMROLEKPIINSTANCE.SYSTEMROLEID = SYSTEMROLEAPPUSER.SYSTEMROLEID and
SYSTEMROLEKPIINSTANCE.KPIINSTANCEID = KPIINSTANCE.ID
) and
(
SYSTEMROLEAPPUSER.SECURITYMODECODE = 0 or -- All Sites
(
SYSTEMROLEAPPUSER.SECURITYMODECODE = 1 and -- No Site
not exists (select 1 from dbo.KPIINSTANCESITE where KPIINSTANCEID = KPIINSTANCE.ID)
) or
(
SYSTEMROLEAPPUSER.SECURITYMODECODE in (2, 3) and -- Records with one of these sites assigned or within a branch
exists
(
select 1
from dbo.SITEPERMISSION
inner join dbo.KPIINSTANCESITE on SITEPERMISSION.SITEID = KPIINSTANCESITE.SITEID
where
SITEPERMISSION.SYSTEMROLEID = SYSTEMROLEAPPUSER.SYSTEMROLEID and
SITEPERMISSION.APPUSERID = SYSTEMROLEAPPUSER.APPUSERID and
KPIINSTANCESITE.KPIINSTANCEID = KPIINSTANCE.ID
)
)
)
)
)
order by KPIINSTANCE.NAME;