UFN_QUERY_MKTCOMMUNICATIONEFFORTKPISLIST
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.[UFN_QUERY_MKTCOMMUNICATIONEFFORTKPISLIST]
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier
)
returns @KPI_DETAIL table
(
[KPIINSTANCEID] uniqueidentifier,
[NAME] nvarchar(255),
[GOALTYPECODE] tinyint,
[KPIVALUEMONEY] decimal(20,4),
[KPIVALUENUMBER] decimal(20,4),
[KPIVALUEPERCENT] decimal(20,4),
[GOALVALUEMONEY] decimal(20,4),
[GOALVALUENUMBER] decimal(20,4),
[GOALVALUEPERCENT] decimal(20,4),
[YELLOWTARGETMONEY] decimal(20,4),
[YELLOWTARGETNUMBER] decimal(20,4),
[YELLOWTARGETPERCENT] decimal(20,4),
[GREENTARGETMONEY] decimal(20,4),
[GREENTARGETNUMBER] decimal(20,4),
[GREENTARGETPERCENT] decimal(20,4),
[GOALSTATUSIMAGE] nvarchar(255),
[VARIANCE] decimal(20,4),
[CLOSESTASOFDATE] datetime,
[USERHASRIGHTSTOKPI] bit,
[CURRENCYID] uniqueidentifier,
[ISLOCKED] bit,
[LOCKEDPIC] nvarchar(255)
)
with execute as caller
as
begin
declare @ISSYSADMIN bit = (select [ISSYSADMIN] from dbo.[APPUSER] where [ID] = @CURRENTAPPUSERID);
declare @EFFORTNAME nvarchar(100) = (select [NAME] from dbo.[MKTSEGMENTATION] where [ID] = @ID);
with
xmlnamespaces ('bb_appfx_dataforms' as [DFI]),
[USERKPIS] as
(
select distinct [KPIINSTANCEID]
from
(select
distinct [SYSTEMROLEKPIINSTANCE].[KPIINSTANCEID]
from dbo.[SYSTEMROLEKPIINSTANCE]
inner join dbo.[SYSTEMROLEAPPUSER] on [SYSTEMROLEKPIINSTANCE].[SYSTEMROLEID] = [SYSTEMROLEAPPUSER].[SYSTEMROLEID]
where [SYSTEMROLEAPPUSER].[APPUSERID] = @CURRENTAPPUSERID
union all
select
[KPIINSTANCE].[ID]
from dbo.[V_SECURITY_SYSTEMROLEASSIGNMENT_USER_KPI] [SECURITYVIEW]
inner join dbo.[KPIINSTANCE] on [SECURITYVIEW].[KPICATALOGID] = [KPIINSTANCE].[KPICATALOGID]
where [SECURITYVIEW].[APPUSERID] = @CURRENTAPPUSERID
group by [KPIINSTANCE].[ID]
having min(cast([SECURITYVIEW].[GRANTORDENY] as tinyint)) = 1) as [KPI]
)
insert into @KPI_DETAIL
(
[KPIINSTANCEID],
[NAME],
[GOALTYPECODE],
[KPIVALUEMONEY],
[KPIVALUENUMBER],
[KPIVALUEPERCENT],
[GOALVALUEMONEY],
[GOALVALUENUMBER],
[GOALVALUEPERCENT],
[YELLOWTARGETMONEY],
[YELLOWTARGETNUMBER],
[YELLOWTARGETPERCENT],
[GREENTARGETMONEY],
[GREENTARGETNUMBER],
[GREENTARGETPERCENT],
[GOALSTATUSIMAGE],
[VARIANCE],
[CLOSESTASOFDATE],
[USERHASRIGHTSTOKPI],
[CURRENCYID],
[ISLOCKED],
[LOCKEDPIC]
)
select
[KPIINSTANCE].[ID] [KPIINSTANCEID],
case when [KPIINSTANCE].[NAME] like @EFFORTNAME + ' - %'
then right([KPIINSTANCE].[NAME], (len([KPIINSTANCE].[NAME]) - len(@EFFORTNAME)) - 3)
else [KPIINSTANCE].[NAME]
end as [NAME],
[KPICATALOG].[GOALTYPECODE],
convert(money, case [KPICATALOG].[GOALTYPECODE]
when 0 then [HISTORY].[VALUE]
else null
end) [KPIVALUEMONEY],
convert(bigint, case [KPICATALOG].[GOALTYPECODE]
when 1 then [HISTORY].[VALUE]
else null
end) [KPIVALUENUMBER],
case [KPICATALOG].[GOALTYPECODE]
when 2 then [HISTORY].[VALUE]
else null
end [KPIVALUEPERCENT],
convert(money, case [KPICATALOG].[GOALTYPECODE]
when 0 then [KPIINSTANCE].[GOALVALUE]
else null
end) [GOALVALUEMONEY],
convert(bigint, case [KPICATALOG].[GOALTYPECODE]
when 1 then [KPIINSTANCE].[GOALVALUE]
else null
end) [GOALVALUENUMBER],
case [KPICATALOG].[GOALTYPECODE]
when 2 then [KPIINSTANCE].[GOALVALUE]
else null
end [GOALVALUEPERCENT],
convert(money, case [KPICATALOG].[GOALTYPECODE]
when 0 then case [KPIINSTANCE].[GOALAIMTYPECODE]
when 0 then [GOALUPWARDLOWVALUE]
else [GOALDOWNWARDHIGHVALUE]
end
else null
end) [YELLOWTARGETMONEY],
convert(bigint, case [KPICATALOG].[GOALTYPECODE]
when 1 then case [KPIINSTANCE].[GOALAIMTYPECODE]
when 0 then [GOALUPWARDLOWVALUE]
else [GOALDOWNWARDHIGHVALUE]
end
else null
end) [YELLOWTARGETNUMBER],
case [KPICATALOG].[GOALTYPECODE]
when 2 then case [KPIINSTANCE].[GOALAIMTYPECODE]
when 0 then [GOALUPWARDLOWVALUE]
else [GOALDOWNWARDHIGHVALUE]
end
else null
end [YELLOWTARGETPERCENT],
convert(money, case [KPICATALOG].[GOALTYPECODE]
when 0 then case [KPIINSTANCE].[GOALAIMTYPECODE]
when 0 then [GOALUPWARDMIDVALUE]
else [GOALDOWNWARDMIDVALUE]
end
end) [GREENTARGETMONEY],
convert(bigint, case [KPICATALOG].[GOALTYPECODE]
when 1 then case [KPIINSTANCE].[GOALAIMTYPECODE]
when 0 then [GOALUPWARDMIDVALUE]
else [GOALDOWNWARDMIDVALUE]
end
end) [GREENTARGETNUMBER],
case [KPICATALOG].[GOALTYPECODE]
when 2 then
case [KPIINSTANCE].[GOALAIMTYPECODE]
when 0 then [GOALUPWARDMIDVALUE]
else [GOALDOWNWARDMIDVALUE]
end
end [GREENTARGETPERCENT],
case
when [HISTORY].[VALUE] is null then 'res:roadblank'
else
case [KPIINSTANCE].[GOALAIMTYPECODE]
when 0 then
case
when [HISTORY].[VALUE] < [GOALUPWARDMIDVALUE] then 'res:road0'
when [HISTORY].[VALUE] < [GOALUPWARDLOWVALUE] then 'res:road1'
else 'res:road2'
end
when 1 then
case
when [HISTORY].[VALUE] > [GOALDOWNWARDMIDVALUE] then 'res:road0'
when [HISTORY].[VALUE] > [GOALDOWNWARDHIGHVALUE] then 'res:road1'
else 'res:road2'
end
end
end [GOALSTATUSIMAGE],
case
when [KPIINSTANCE].[GOALVALUE] <> 0 then
case [KPIINSTANCE].[GOALAIMTYPECODE]
when 0 then ([HISTORY].[VALUE] - [KPIINSTANCE].[GOALVALUE]) / abs([KPIINSTANCE].[GOALVALUE])
when 1 then -1 * (([HISTORY].[VALUE] - [KPIINSTANCE].[GOALVALUE]) / abs([KPIINSTANCE].[GOALVALUE]))
end
else 0
end [VARIANCE],
[HISTORY].[ASOFDATE] as [CLOSESTASOFDATE],
1 as [USERHASRIGHTSTOKPI],
[KPIINSTANCE].PARAMETERSXML.value('data(/DFI:DataFormItem/DFI:Values/DFI:fv[@ID="CURRENCYID"]/DFI:Value)[1]','varchar(36)') as [CURRENCYID],
cast(isnull((select [MKTCOMMUNICATIONTEMPLATEDEFAULTKPI].[LOCKED] from dbo.[MKTCOMMUNICATIONTEMPLATEDEFAULTKPI] inner join dbo.[MKTCOMMUNICATIONTEMPLATE] on [MKTCOMMUNICATIONTEMPLATEDEFAULTKPI].[COMMUNICATIONTEMPLATEID] = [MKTCOMMUNICATIONTEMPLATE].[ID] and [MKTCOMMUNICATIONTEMPLATE].[MKTSEGMENTATIONID] = @ID where [KPICATALOGID] = [KPICATALOG].[ID]), 0) as bit) as [ISLOCKED],
case
when isnull((select [MKTCOMMUNICATIONTEMPLATEDEFAULTKPI].[LOCKED]
from dbo.[MKTCOMMUNICATIONTEMPLATEDEFAULTKPI]
inner join dbo.[MKTCOMMUNICATIONTEMPLATE] on [MKTCOMMUNICATIONTEMPLATEDEFAULTKPI].[COMMUNICATIONTEMPLATEID] = [MKTCOMMUNICATIONTEMPLATE].[ID] and [MKTCOMMUNICATIONTEMPLATE].[MKTSEGMENTATIONID] = @ID
where [KPICATALOGID] = [KPICATALOG].[ID]),0) = 1 then 'catalog:Blackbaud.AppFx.Marketing.Catalog.dll,Blackbaud.AppFx.Marketing.Catalog.padlock_locked_16.png'
else ''
end as [LOCKEDPIC]
from dbo.[KPIINSTANCE]
inner join dbo.[KPICATALOG] on [KPIINSTANCE].[KPICATALOGID] = [KPICATALOG].[ID]
outer apply (
select top (1) [ID], [KPIINSTANCEID], [VALUE], [ASOFDATE]
from dbo.[KPIINSTANCEHISTORY]
where [KPIINSTANCEID] = [KPIINSTANCE].[ID]
order by [ASOFDATE] desc
) as [HISTORY]
where
[KPIINSTANCE].[CONTEXTRECORDID] = cast(@ID as nvarchar(100)) and
(@ISSYSADMIN = 1
or exists
(select [KPIINSTANCEID]
from [USERKPIS]
where [USERKPIS].[KPIINSTANCEID] = [KPIINSTANCE].[ID])
) --Security check
order by [KPIINSTANCE].[NAME];
return;
end;