USP_MKTSEGMENTATIONACTIVATEPROCESS_GETOPTIONS
Retrieves the options for a marketing effort activation process parameter set.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONACTIVATEPROCESS_GETOPTIONS]
(
@ID uniqueidentifier
)
as
set nocount on;
declare @SEGMENTATIONID uniqueidentifier;
declare @MAILINGTYPECODE tinyint;
declare @SOURCEANALYSISRULEDATAEXISTS bit;
declare @USECHECKDIGIT bit;
declare @LASTFINDERNUMBER bigint;
declare @CALCULATEPROCESSREQUIRED bit;
declare @APPEALLOCKED bit = 0;
declare @ACTIVATEOPTIONSLOCKED bit = 0;
declare @KPISLOCKED bit = 0;
declare @FROMCOMMUNICATIONTEMPLATE bit = 0;
declare @CACHESOURCEANALYSISRULEDATAACTIVATELOCKED bit = 0;
declare @EXPORTAFTERACTIVATELOCKED bit = 0;
select
@USECHECKDIGIT = [CHECKDIGIT],
@LASTFINDERNUMBER = [LAST_FINDERNUMBER]
from dbo.[MKTFINDERNUMBER];
select
@SEGMENTATIONID = [MKTSEGMENTATION].[ID],
@MAILINGTYPECODE = [MKTSEGMENTATION].[MAILINGTYPECODE],
@CALCULATEPROCESSREQUIRED = (case when dbo.[UFN_MKTSEGMENTATION_ISRECORDCOUNTCACHECURRENT]([MKTSEGMENTATION].[ID], 0) = 1 then 0 else 1 end)
from dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID]
where [MKTSEGMENTATIONACTIVATEPROCESS].[ID] = @ID;
exec dbo.[USP_MKTSEGMENTATION_SOURCEANALYSISRULEDATAEXISTS] @SEGMENTATIONID, @SOURCEANALYSISRULEDATAEXISTS output;
if @CALCULATEPROCESSREQUIRED = 0 and @MAILINGTYPECODE = 0
begin
--Because vendor managed list segments always report as being current in the cache, we have to do some extra work here because we
--may have to force the segment calculate process to run so that tables and everything get setup correctly during activation.
declare @HASVENDORMANAGEDLISTSEGMENTS bit;
declare @HASOTHERSEGMENTS bit;
set @HASVENDORMANAGEDLISTSEGMENTS =
(case when exists(
select *
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and [MKTSEGMENTLIST].[TYPECODE] = 1) --vendor managed only
then 1 else 0 end);
set @HASOTHERSEGMENTS =
(case when exists(
select *
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
left join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and ([MKTSEGMENT].[SEGMENTTYPECODE] <> 2 or [MKTSEGMENTLIST].[TYPECODE] = 0)) --all other segments including imported lists
then 1 else 0 end);
--Check if the mailing has only vendor managed list segments, and if so make the calculate process required so that everything gets setup correctly...
set @CALCULATEPROCESSREQUIRED = (case when @HASVENDORMANAGEDLISTSEGMENTS = 1 and @HASOTHERSEGMENTS = 0 then 1 else 0 end);
if @CALCULATEPROCESSREQUIRED = 0 and @HASVENDORMANAGEDLISTSEGMENTS = 1 and @HASOTHERSEGMENTS = 1
begin
--Mailing has a mixture of segments, so check if any of the vendor managed list segments were added/modified since the last segment
--count calculation process, if so then we need to require the calculate process to run again so that everything gets setup correctly...
declare @ENDEDON datetime;
declare @STATUSCODE tinyint;
select
@ENDEDON = [BUSINESSPROCESSSTATUS].[ENDEDON],
@STATUSCODE = [BUSINESSPROCESSSTATUS].[STATUSCODE]
from dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS]
inner join dbo.[BUSINESSPROCESSSTATUS] on [BUSINESSPROCESSSTATUS].[BUSINESSPROCESSPARAMETERSETID] = [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[ID]
where [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[SEGMENTATIONID] = @SEGMENTATIONID
order by [BUSINESSPROCESSSTATUS].[ENDEDON] desc;
if @STATUSCODE is null or @STATUSCODE <> 0
set @CALCULATEPROCESSREQUIRED = 1;
else if exists(select *
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and [MKTSEGMENTLIST].[TYPECODE] = 1 --vendor managed only
and ([MKTSEGMENTATIONSEGMENT].[DATECHANGED] > @ENDEDON or [MKTSEGMENT].[DATECHANGED] > @ENDEDON or [MKTSEGMENTLIST].[DATECHANGED] > @ENDEDON))
set @CALCULATEPROCESSREQUIRED = 1;
end
end
-- See if any segments use a name format containing an advanced spouse option.
declare @ADVANCEDNAMEFORMATOPTIONUSED bit = 0;
if exists (select top 1 1
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
left join dbo.[NAMEFORMATPARAMETER] as [NAMEFORMATPARAMETEREFFORT] on [NAMEFORMATPARAMETEREFFORT].[ID] = [MKTSEGMENTATION].[NAMEFORMATPARAMETERID]
left join dbo.[NAMEFORMATPARAMETER] as [NAMEFORMATPARAMETERSEGMENT] on [NAMEFORMATPARAMETERSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[NAMEFORMATPARAMETERID]
where
[MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
-- advanced name format on the segment level
and (([MKTSEGMENTATIONSEGMENT].[OVERRIDEADDRESSPROCESSING] = 1
and [MKTSEGMENTATIONSEGMENT].[USEADDRESSPROCESSING] = 1
and ([NAMEFORMATPARAMETERSEGMENT].[JOINTEXCLUDESPOUSE] = 1 or [NAMEFORMATPARAMETERSEGMENT].[JOINTSPOUSESMAILEDSEPARATELY] = 1))
-- advanced name format on the mailing level
or ([MKTSEGMENTATIONSEGMENT].[OVERRIDEADDRESSPROCESSING] = 0
and [MKTSEGMENTATION].[USEADDRESSPROCESSING] = 1
and ([NAMEFORMATPARAMETEREFFORT].[JOINTEXCLUDESPOUSE] = 1 or [NAMEFORMATPARAMETEREFFORT].[JOINTSPOUSESMAILEDSEPARATELY] = 1)))
)
set @ADVANCEDNAMEFORMATOPTIONUSED = 1;
else
set @ADVANCEDNAMEFORMATOPTIONUSED = 0;
/* If using a communication template, load the lock settings from the template */
set @FROMCOMMUNICATIONTEMPLATE = (case when exists(select top 1 1 from dbo.[MKTCOMMUNICATIONTEMPLATE] where [MKTSEGMENTATIONID] = @SEGMENTATIONID) then 1 else 0 end);
if @FROMCOMMUNICATIONTEMPLATE = 1
begin
select
@APPEALLOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[APPEALLOCKED],
@ACTIVATEOPTIONSLOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[ACTIVATEOPTIONSLOCKED],
@KPISLOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[KPISLOCKED],
@CACHESOURCEANALYSISRULEDATAACTIVATELOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[CACHESOURCEANALYSISRULEDATAACTIVATELOCKED],
@EXPORTAFTERACTIVATELOCKED = [MKTCOMMUNICATIONTEMPLATEDEFAULT].[EXPORTAFTERACTIVATELOCKED]
from dbo.[MKTCOMMUNICATIONTEMPLATE]
inner join dbo.[MKTCOMMUNICATIONTEMPLATEDEFAULT] on [MKTCOMMUNICATIONTEMPLATEDEFAULT].[COMMUNICATIONTEMPLATEID] = [MKTCOMMUNICATIONTEMPLATE].[ID]
where [MKTSEGMENTATIONID] = @SEGMENTATIONID;
end
select
@SEGMENTATIONID as [SEGMENTATIONID],
[MKTSEGMENTATION].[SITEID],
@MAILINGTYPECODE as [MAILINGTYPECODE],
[MKTSEGMENTATION].[ACTIVE],
cast((case when [APPEALMAILING].[ID] is null then 0 else 1 end) as bit) as [ISAPPEALMAILING],
[MKTSEGMENTATIONEXPORTPROCESS].[ID] as [SEGMENTATIONEXPORTPROCESSID],
[MKTSEGMENTATION].[CREATEOUTPUTIDSET],
[MKTSEGMENTATION].[OUTPUTIDSETNAME],
[MKTSEGMENTATION].[OVERWRITEOUTPUTIDSET],
[MKTSEGMENTATION].[RUNACTIVATEANDEXPORT],
[MKTSEGMENTATION].[SOURCECODEID],
cast([MKTSEGMENTATIONACTIVATEPROCESS].[RUNSEGMENTATIONSEGMENTCALCULATEPROCESS] as bit) as [RUNSEGMENTATIONSEGMENTCALCULATEPROCESS],
[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[ID] as [SEGMENTATIONSEGMENTCALCULATEPROCESSID],
@CALCULATEPROCESSREQUIRED as [SEGMENTATIONSEGMENTCALCULATEPROCESSREQUIRED],
cast([MKTSEGMENTATIONACTIVATEPROCESS].[RUNSEGMENTATIONSEGMENTREFRESHPROCESS] as bit) as [RUNSEGMENTATIONSEGMENTREFRESHPROCESS],
cast([MKTSEGMENTATIONACTIVATEPROCESS].[CACHESOURCEANALYSISRULEDATA] as bit) as [CACHESOURCEANALYSISRULEDATA],
cast(@SOURCEANALYSISRULEDATAEXISTS as bit) as [SOURCEANALYSISRULEDATAEXISTS],
[LASTRUN].[SEGMENTATIONSEGMENTCALCULATEPROCESSLASTRUN],
[LASTRUN].[SEGMENTATIONSEGMENTREFRESHPROCESSLASTRUN],
[LASTRUN].[CACHESOURCEANALYSISRULEDATALASTRUN] as [SOURCEANALYSISRULEDATALASTCACHED],
cast((case when dbo.[UFN_INSTALLEDPRODUCTS_PRODUCTIS]('BB9873D7-F1ED-430A-8AB4-F09F47056538') = 0 then 1 else 0 end) as bit) as [ISBBEC],
dbo.[UFN_MKTSEGMENTATIONACTIVATE_GETDONORIDDATATYPE]([MKTSEGMENTATION].[ID]) as [DONORIDDATATYPE],
@USECHECKDIGIT as [USECHECKDIGIT],
@LASTFINDERNUMBER as [LASTFINDERNUMBER],
[MKTSEGMENTATION].[COMMUNICATIONTYPECODE],
[MKTSEGMENTATION].[BASECURRENCYID],
[MKTSEGMENTATION].[ISHISTORICAL],
isnull([MKTSOURCECODE].[ISHISTORICAL], 0) as [SOURCECODEISHISTORICAL],
[MKTSEGMENTATIONACTIVATEPROCESS].[RUNMARKETINGEXCLUSIONSREPORT],
[LASTRUN].[MARKETINGEXCLUSIONSREPORTLASTRUN],
@ADVANCEDNAMEFORMATOPTIONUSED as [ADVANCEDNAMEFORMATOPTIONUSED],
@APPEALLOCKED as [APPEALLOCKED],
@ACTIVATEOPTIONSLOCKED as [ACTIVATEOPTIONSLOCKED],
@KPISLOCKED as [KPISLOCKED],
@FROMCOMMUNICATIONTEMPLATE as [FROMCOMMUNICATIONTEMPLATE],
@CACHESOURCEANALYSISRULEDATAACTIVATELOCKED as [CACHESOURCEANALYSISRULEDATAACTIVATELOCKED],
@EXPORTAFTERACTIVATELOCKED as [EXPORTAFTERACTIVATELOCKED],
[LASTRUN].[EXPORTPROCESSLASTRUN] as [MARKETINGEFFORTLASTEXPORTED]
from dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID]
left outer join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTSEGMENTATION].[SOURCECODEID]
left outer join dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS] on [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID]
left outer join dbo.[MKTSEGMENTATIONEXPORTPROCESS] on [MKTSEGMENTATIONEXPORTPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
left outer join dbo.[APPEALMAILING] on [APPEALMAILING].[ID] = [MKTSEGMENTATION].[ID]
left join dbo.[UFN_MKTCOMMUNICATIONEFFORT_GETLASTRUNDATE_BULK]() as [LASTRUN] on [LASTRUN].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
where [MKTSEGMENTATIONACTIVATEPROCESS].[ID] = @ID;
return 0;