USP_MKTSEGMENTATIONACTIVATEEDIT_ROLLBACK
Used by the marketing effort activation edit form to roll back the changes made while activating a marketing effort, if the activation fails.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@DELETEAPPEALINFO | bit | IN |
Definition
Copy
create procedure dbo.[USP_MKTSEGMENTATIONACTIVATEEDIT_ROLLBACK]
(
@SEGMENTATIONID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@DELETEAPPEALINFO bit = null
)
as
set nocount on;
/*
This SP does the ID set work of USP_MKTSEGMENTATIONACTIVATE_ROLLBACK,
but nothing beyond that.
*/
declare @ACTIVE bit;
declare @CURRENTDATE datetime;
declare @ISAPPEALMAILING bit;
begin try
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = GetDate();
select
@ACTIVE = [MKTSEGMENTATION].[ACTIVE],
@ISAPPEALMAILING = (case when [APPEALMAILING].[ID] is null then 0 else 1 end)
from dbo.[MKTSEGMENTATION]
left join dbo.[APPEALMAILING] on [APPEALMAILING].[ID] = [MKTSEGMENTATION].[ID]
where [MKTSEGMENTATION].[ID] = @SEGMENTATIONID;
if @ISAPPEALMAILING = 1
set @DELETEAPPEALINFO = 0;
else if @DELETEAPPEALINFO is null
set @DELETEAPPEALINFO = 1;
/*********************************************************************/
/* Clean up the activate table that holds the appeal information and */
/* delete the normal and unresolved gift ID sets for the mailing. */
/*********************************************************************/
declare @ACTIVATEID uniqueidentifier;
declare @RECORDSOURCEID uniqueidentifier;
declare @NORMALIDSETID uniqueidentifier;
declare @NORMALIDSETTABLENAME nvarchar(255);
declare @NORMALIDSETFUNCTIONNAME nvarchar(255);
declare @NORMALIDSETFUNCTIONNAMEEXISTS nvarchar(255);
declare @UNRESOLVEDIDSETID uniqueidentifier;
declare @UNRESOLVEDIDSETTABLENAME nvarchar(255);
declare @UNRESOLVEDIDSETFUNCTIONNAME nvarchar(255);
declare @UNRESOLVEDIDSETFUNCTIONNAMEEXISTS nvarchar(255);
declare @SEGMENTRECORDSOURCES table([ID] uniqueidentifier primary key);
--Get all the current segment record sources for this mailing...
insert into @SEGMENTRECORDSOURCES (ID)
select [SRS].[QUERYVIEWCATALOGID]
from dbo.[UFN_MKTSEGMENTATION_GETDISTINCTRECORDSOURCES](@SEGMENTATIONID) as [SRS];
declare ACTIVATECURSOR cursor local fast_forward for
select
[MKTSEGMENTATIONACTIVATE].[ID],
[MKTSEGMENTATIONACTIVATE].[RECORDSOURCEID],
[MKTSEGMENTATIONACTIVATE].[NORMALGIFTIDSETREGISTERID],
[NORMALIDSET].[DBOBJECTNAME] [NORMALDBOBJECTNAME],
[MKTSEGMENTATIONACTIVATE].[UNRESOLVEDGIFTIDSETREGISTERID],
[UNRESOLVEDIDSET].[DBOBJECTNAME] [UNRESOLVEDDBOBJECTNAME]
from dbo.[MKTSEGMENTATIONACTIVATE]
left join dbo.[IDSETREGISTER] as [NORMALIDSET] on [NORMALIDSET].[ID] = [MKTSEGMENTATIONACTIVATE].[NORMALGIFTIDSETREGISTERID]
left join dbo.[IDSETREGISTER] as [UNRESOLVEDIDSET] on [UNRESOLVEDIDSET].[ID] = [MKTSEGMENTATIONACTIVATE].[UNRESOLVEDGIFTIDSETREGISTERID]
where [SEGMENTATIONID] = @SEGMENTATIONID;
open ACTIVATECURSOR;
fetch next from ACTIVATECURSOR into @ACTIVATEID, @RECORDSOURCEID, @NORMALIDSETID, @NORMALIDSETTABLENAME, @UNRESOLVEDIDSETID, @UNRESOLVEDIDSETTABLENAME;
while (@@FETCH_STATUS = 0)
begin
update dbo.[MKTSEGMENTATIONACTIVATE] set
[NORMALGIFTIDSETREGISTERID] = null,
[UNRESOLVEDGIFTIDSETREGISTERID] = null,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @ACTIVATEID;
if @NORMALIDSETID is not null
begin
set @NORMALIDSETFUNCTIONNAME = 'UFN_' + @NORMALIDSETTABLENAME;
set @NORMALIDSETFUNCTIONNAMEEXISTS = @NORMALIDSETFUNCTIONNAME + '_IDEXISTS';
exec dbo.[USP_IDSET_DELETE] @NORMALIDSETFUNCTIONNAME, @NORMALIDSETFUNCTIONNAMEEXISTS;
exec dbo.[USP_IDSET_DELETESTATICTABLE] @NORMALIDSETTABLENAME;
exec dbo.[USP_IDSETREGISTER_DELETEBYID_WITHCHANGEAGENTID] @NORMALIDSETID, @CHANGEAGENTID;
end
if @UNRESOLVEDIDSETID is not null
begin
set @UNRESOLVEDIDSETFUNCTIONNAME = 'UFN_' + @UNRESOLVEDIDSETTABLENAME;
set @UNRESOLVEDIDSETFUNCTIONNAMEEXISTS = @UNRESOLVEDIDSETFUNCTIONNAME + '_IDEXISTS';
exec dbo.[USP_IDSET_DELETE] @UNRESOLVEDIDSETFUNCTIONNAME, @UNRESOLVEDIDSETFUNCTIONNAMEEXISTS;
exec dbo.[USP_IDSET_DELETESTATICTABLE] @UNRESOLVEDIDSETTABLENAME;
exec dbo.[USP_IDSETREGISTER_DELETEBYID_WITHCHANGEAGENTID] @UNRESOLVEDIDSETID, @CHANGEAGENTID;
end
if @ACTIVE = 0 and (@DELETEAPPEALINFO = 1 or not exists(select 1 from @SEGMENTRECORDSOURCES where [ID] = @RECORDSOURCEID))
exec dbo.[USP_MKTSEGMENTATIONACTIVATE_DELETEBYID_WITHCHANGEAGENTID] @ACTIVATEID, @CHANGEAGENTID;
fetch next from ACTIVATECURSOR into @ACTIVATEID, @RECORDSOURCEID, @NORMALIDSETID, @NORMALIDSETTABLENAME, @UNRESOLVEDIDSETID, @UNRESOLVEDIDSETTABLENAME;
end
close ACTIVATECURSOR;
deallocate ACTIVATECURSOR;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;