USP_MKTSEGMENTATIONACTIVATEKPI_GETFIELDS
Returns a list of marketing effort KPIs to create for a marketing effort upon activation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@SELECTEDONLY | bit | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONACTIVATEKPI_GETFIELDS]
(
@SEGMENTATIONID uniqueidentifier,
@SELECTEDONLY bit,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
declare @MAILINGTYPECODE tinyint;
declare @KPIRECORDTYPE uniqueidentifier;
declare @KPINAMESUFFIX nvarchar(50);
declare @MEMBERSHIPKPINAMESUFFIX nvarchar(50);
declare @ACTIVE bit;
declare @DEFAULTS table([KPICATALOGID] uniqueidentifier primary key);
select
@MAILINGTYPECODE = [MAILINGTYPECODE]
from dbo.[MKTSEGMENTATION]
where [ID] = @SEGMENTATIONID;
--Get the KPI record type and set the name suffix to remove from the names, so the names don't look cluttered in the activate UI...
set @KPIRECORDTYPE = dbo.[UFN_RECORDTYPE_GETIDBYNAME]('Marketing Effort');
set @KPINAMESUFFIX = ' for Marketing Effort';
set @MEMBERSHIPKPINAMESUFFIX = ' for Membership Effort';
set @ACTIVE = (case when @SEGMENTATIONID is null then 0 else dbo.[UFN_MKTSEGMENTATION_ISACTIVE](@SEGMENTATIONID) end);
/* If using a communication template, load the lock settings from the template */
if exists(select top 1 1 from dbo.[MKTCOMMUNICATIONTEMPLATE] where [MKTSEGMENTATIONID] = @SEGMENTATIONID)
begin
/* Get KPIs from the activate table and also grab lock information from template */
declare @TEMPLATETYPECODE tinyint = (select [TEMPLATETYPECODE] from dbo.[MKTCOMMUNICATIONTEMPLATE] where [MKTSEGMENTATIONID] = @SEGMENTATIONID);
select
[MKTSEGMENTATIONACTIVATEKPI].[KPICATALOGID] as [ID],
cast(1 as bit) as [SELECTED],
case when [KPICATALOG].[NAME] like '%' + @KPINAMESUFFIX
then left([KPICATALOG].[NAME], len([KPICATALOG].[NAME]) - len(@KPINAMESUFFIX))
when [KPICATALOG].[NAME] like '%' + @MEMBERSHIPKPINAMESUFFIX
then left([KPICATALOG].[NAME], len([KPICATALOG].[NAME]) - len(@MEMBERSHIPKPINAMESUFFIX))
else [KPICATALOG].[NAME]
end as [NAME],
[KPICATALOG].[GOALTYPECODE],
cast(1 as bit) as [DEFAULT],
cast(isnull((select [MKTCOMMUNICATIONTEMPLATEDEFAULTKPI].[LOCKED] from dbo.[MKTCOMMUNICATIONTEMPLATEDEFAULTKPI] inner join dbo.[MKTCOMMUNICATIONTEMPLATE] on [MKTCOMMUNICATIONTEMPLATEDEFAULTKPI].[COMMUNICATIONTEMPLATEID] = [MKTCOMMUNICATIONTEMPLATE].[ID] and [MKTCOMMUNICATIONTEMPLATE].[MKTSEGMENTATIONID] = @SEGMENTATIONID where [KPICATALOGID] = [KPICATALOG].[ID]),0) as bit) as [LOCKED],
@TEMPLATETYPECODE as [TEMPLATETYPECODE]
from dbo.[MKTSEGMENTATIONACTIVATEKPI]
inner join dbo.[KPICATALOG] on [MKTSEGMENTATIONACTIVATEKPI].[KPICATALOGID] = [KPICATALOG].[ID]
where [MKTSEGMENTATIONACTIVATEKPI].[SEGMENTATIONID] = @SEGMENTATIONID
order by [KPICATALOG].[NAME]
end
else
begin
/* Insert default kpis */
insert into @DEFAULTS
select [KPICATALOGID]
from dbo.[MKTSEGMENTATIONACTIVATEDEFAULTKPI]
where [MAILINGTYPECODE] = @MAILINGTYPECODE;
select
[KPICATALOG].[ID],
cast(case @ACTIVE
when 1
then
case when exists(select top 1 1 from dbo.[MKTSEGMENTATIONACTIVATEKPI] where [KPICATALOGID] = [KPICATALOG].[ID] and [SEGMENTATIONID] = @SEGMENTATIONID)
then 1
else 0
end
when 0
then
case @SELECTEDONLY
when 0 then
case when exists(select top 1 1 from @DEFAULTS as [D] where [D].[KPICATALOGID] = [KPICATALOG].[ID])
then 1
else 0
end
when 1 then
case when exists(select top 1 1 from dbo.[MKTSEGMENTATIONACTIVATEKPI] where [KPICATALOGID] = [KPICATALOG].[ID] and [SEGMENTATIONID] = @SEGMENTATIONID)
then 1
else 0
end
end
end as bit) as [SELECTED],
case when [KPICATALOG].[NAME] like '%' + @KPINAMESUFFIX
then left([KPICATALOG].[NAME], len([KPICATALOG].[NAME]) - len(@KPINAMESUFFIX))
when [KPICATALOG].[NAME] like '%' + @MEMBERSHIPKPINAMESUFFIX
then left([KPICATALOG].[NAME], len([KPICATALOG].[NAME]) - len(@MEMBERSHIPKPINAMESUFFIX))
else [KPICATALOG].[NAME]
end as [NAME],
[KPICATALOG].[GOALTYPECODE],
cast (case when exists(select 1 from @DEFAULTS as [D] where [D].[KPICATALOGID] = [KPICATALOG].[ID])
then 1
else 0
end as bit) as [DEFAULT],
cast(0 as bit) as [LOCKED],
cast(0 as tinyint) as [TEMPLATETYPECODE]
from dbo.[KPICATALOG]
where
[KPICATALOG].[CONTEXTRECORDTYPEID] = @KPIRECORDTYPE
and (@CURRENTAPPUSERID is null or dbo.[UFN_SECURITY_APPUSER_GRANTED_KPI](@CURRENTAPPUSERID, [KPICATALOG].[ID]) = 1)
and
(
[SPECXML].value(
'declare namespace bbafx="bb_appfx_kpi";
declare namespace c="bb_appfx_commontypes";
(bbafx:KpiSpec/c:MetaTags/@MarketingMembershipMailingKPI)[1]',
'char(1)') is null
or
[SPECXML].value(
'declare namespace bbafx="bb_appfx_kpi";
declare namespace c="bb_appfx_commontypes";
(bbafx:KpiSpec/c:MetaTags/@MarketingMembershipMailingKPI)[1]',
'char(1)') = (case when @MAILINGTYPECODE = 2 then '1' else '0' end)
)
order by [KPICATALOG].[NAME];
end
return 0;