USP_MKTSEGMENTATIONACTIVATE_REMOVEPREACTIVATEPROCESSES
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONACTIVATE_REMOVEPREACTIVATEPROCESSES]
(
@SEGMENTATIONID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @MKTSEGMENTATIONSEGMENTREFRESHPROCESSID uniqueidentifier;
declare @MKTMAILINGPREACTIVATIONPROCESSID uniqueidentifier;
declare @MKTSEGMENTATIONEXCLUSIONSPROCESSID uniqueidentifier;
declare @MKTSEGMENTATIONSEGMENTCALCULATEPROCESSID uniqueidentifier;
declare @SEGMENTATIONSEGMENTREFRESHPROCESSLASTRUN datetime;
declare @CURRENTDATE datetime = getdate();
begin try
--Only run this if the mailing is activated...
if (select [ACTIVE] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID) = 1
begin
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
/* Remove the Marketing Effort Selection Refresh Process business process parameter set */
select
@MKTSEGMENTATIONSEGMENTREFRESHPROCESSID = [ID]
from dbo.[MKTSEGMENTATIONSEGMENTREFRESHPROCESS]
where [SEGMENTATIONID] = @SEGMENTATIONID;
/* First store the last date the selections were refreshed */
select
@SEGMENTATIONSEGMENTREFRESHPROCESSLASTRUN = max([BUSINESSPROCESSSTATUS].[ENDEDON])
from
dbo.[BUSINESSPROCESSSTATUS]
where
[BUSINESSPROCESSSTATUS].[BUSINESSPROCESSPARAMETERSETID] = @MKTSEGMENTATIONSEGMENTREFRESHPROCESSID
and [BUSINESSPROCESSSTATUS].[STATUSCODE] = 0;
update
dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
set
[SEGMENTATIONSEGMENTREFRESHPROCESSLASTRUN] = @SEGMENTATIONSEGMENTREFRESHPROCESSLASTRUN,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where
[SEGMENTATIONID] = @SEGMENTATIONID;
if @MKTSEGMENTATIONSEGMENTREFRESHPROCESSID is not null
exec dbo.[USP_MKTSEGMENTATIONSEGMENTREFRESHPROCESS_DELETEBYID_WITHCHANGEAGENTID] @MKTSEGMENTATIONSEGMENTREFRESHPROCESSID, @CHANGEAGENTID;
/* Remove the mailing from the PreActivationProcess table */
select
@MKTMAILINGPREACTIVATIONPROCESSID = [ID]
from dbo.[MKTMAILINGPREACTIVATIONPROCESS]
where [SEGMENTATIONID] = @SEGMENTATIONID;
if @MKTMAILINGPREACTIVATIONPROCESSID is not null
exec dbo.[USP_MKTMAILINGPREACTIVATIONPROCESS_DELETEBYID_WITHCHANGEAGENTID] @MKTMAILINGPREACTIVATIONPROCESSID, @CHANGEAGENTID;
/* Remove the effort from the EffortExclusionsProcess table */
select
@MKTSEGMENTATIONEXCLUSIONSPROCESSID = [ID]
from dbo.[MKTSEGMENTATIONEXCLUSIONSPROCESS]
where [SEGMENTATIONID] = @SEGMENTATIONID;
if @MKTSEGMENTATIONEXCLUSIONSPROCESSID is not null
exec dbo.[USP_MKTSEGMENTATIONEXCLUSIONSPROCESS_DELETEBYID_WITHCHANGEAGENTID] @MKTSEGMENTATIONEXCLUSIONSPROCESSID, @CHANGEAGENTID;
/* Remove all but the latest business status row for the segment record count calculation process. We need */
/* the latest status to stay around so that its output tables can be used in reports after activation. */
select
@MKTSEGMENTATIONSEGMENTCALCULATEPROCESSID = [ID]
from dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS]
where [SEGMENTATIONID] = @SEGMENTATIONID;
if @MKTSEGMENTATIONSEGMENTCALCULATEPROCESSID is not null
begin
declare @BUSINESSPROCESSSTATUSID uniqueidentifier;
declare @STATUSID uniqueidentifier;
--Get the latest status record so we don't delete it....
select top 1
@BUSINESSPROCESSSTATUSID = [MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS].[ID]
from dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS]
inner join dbo.[BUSINESSPROCESSSTATUS] on [BUSINESSPROCESSSTATUS].[ID] = [MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS].[ID]
where [MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS].[PARAMETERSETID] = @MKTSEGMENTATIONSEGMENTCALCULATEPROCESSID
and [BUSINESSPROCESSSTATUS].[STATUSCODE] = 0
order by [BUSINESSPROCESSSTATUS].[ENDEDON] desc;
--Delete all the status records except for the one we are keeping. This will automatically
--clean up all the output tables associated with these status records.
declare STATUSCURSOR cursor local fast_forward for
select [ID]
from dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS]
where [PARAMETERSETID] = @MKTSEGMENTATIONSEGMENTCALCULATEPROCESSID
and [ID] <> @BUSINESSPROCESSSTATUSID;
open STATUSCURSOR;
fetch next from STATUSCURSOR into @STATUSID;
while (@@FETCH_STATUS = 0)
begin
exec dbo.[USP_MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS_DELETEBYID_WITHCHANGEAGENTID] @STATUSID, @CHANGEAGENTID;
fetch next from STATUSCURSOR into @STATUSID;
end
close STATUSCURSOR;
deallocate STATUSCURSOR;
end
end
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;