USP_COMMUNICATIONLETTER_REMOVE
Executes the "Remove Communication Letter" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the ID of the record being updated. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the update. |
Definition
Copy
CREATE procedure dbo.USP_COMMUNICATIONLETTER_REMOVE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as begin
declare @SEGMENTATIONID uniqueidentifier;
declare @APPEALID uniqueidentifier;
declare @ACTIVE bit;
declare @EMAILSEGMENTID uniqueidentifier;
declare @MAILSEGMENTID uniqueidentifier;
declare @MKTSEGMENTATIONSEGMENTID uniqueidentifier;
declare @EMAILPACKAGEID uniqueidentifier;
declare @MAILPACKAGEID uniqueidentifier;
declare @MKTSEGMENTATIONPACKAGEID uniqueidentifier;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
select
@SEGMENTATIONID = COMMUNICATIONLETTER.SEGMENTATIONID,
@APPEALID = APPEALMAILING.APPEALID,
@ACTIVE = MKTSEGMENTATION.ACTIVE,
@EMAILSEGMENTID = COMMUNICATIONLETTER.EMAILSEGMENTID,
@MAILSEGMENTID = COMMUNICATIONLETTER.MAILSEGMENTID,
@EMAILPACKAGEID = COMMUNICATIONLETTER.EMAILPACKAGEID,
@MAILPACKAGEID = COMMUNICATIONLETTER.MAILPACKAGEID
from dbo.COMMUNICATIONLETTER
left join dbo.[APPEALMAILING]
on COMMUNICATIONLETTER.SEGMENTATIONID = APPEALMAILING.ID
left join dbo.MKTSEGMENTATION
on COMMUNICATIONLETTER.SEGMENTATIONID = MKTSEGMENTATION.ID
where COMMUNICATIONLETTER.ID = @ID;
-- Rollback active mailings to be re-activated
if @ACTIVE = 1 or dbo.UFN_MKTSEGMENTATION_HASACTIVESEGMENTS(@SEGMENTATIONID) = 1
begin
declare @DELETEAPPEALINFO bit = case when @APPEALID is null then 0 else 1 end;
exec dbo.USP_MKTSEGMENTATIONACTIVATE_ROLLBACK @SEGMENTATIONID, @CHANGEAGENTID, @DELETEAPPEALINFO, 1;
end
if @EMAILSEGMENTID is not null
begin
declare EMAILSEGMENTATIONSEGMENTCURSOR cursor local fast_forward for
select
ID
from dbo.MKTSEGMENTATIONSEGMENT
where SEGMENTATIONID = @SEGMENTATIONID
and SEGMENTID = @EMAILSEGMENTID;
open EMAILSEGMENTATIONSEGMENTCURSOR;
fetch next from EMAILSEGMENTATIONSEGMENTCURSOR into @MKTSEGMENTATIONSEGMENTID;
while (@@FETCH_STATUS = 0)
begin
-- Drop the Segmentation segment record linking the mailing to the segment
exec dbo.USP_MKTSEGMENTATIONSEGMENT_DELETEBYID_WITHCHANGEAGENTID @MKTSEGMENTATIONSEGMENTID, @CHANGEAGENTID;
fetch next from EMAILSEGMENTATIONSEGMENTCURSOR into @MKTSEGMENTATIONSEGMENTID;
end
close EMAILSEGMENTATIONSEGMENTCURSOR;
deallocate EMAILSEGMENTATIONSEGMENTCURSOR;
end
if @EMAILPACKAGEID is not null
begin
declare EMAILSEGMENTATIONPACKAGECURSOR cursor local fast_forward for
select
ID
from dbo.MKTSEGMENTATIONPACKAGE
where SEGMENTATIONID = @SEGMENTATIONID
and PACKAGEID = @EMAILPACKAGEID;
open EMAILSEGMENTATIONPACKAGECURSOR;
fetch next from EMAILSEGMENTATIONPACKAGECURSOR into @MKTSEGMENTATIONPACKAGEID;
while (@@FETCH_STATUS = 0)
begin
-- Drop the Segmentation segment record linking the mailing to the segment
exec dbo.USP_MKTSEGMENTATIONPACKAGE_DELETEBYID_WITHCHANGEAGENTID @MKTSEGMENTATIONPACKAGEID, @CHANGEAGENTID;
fetch next from EMAILSEGMENTATIONPACKAGECURSOR into @MKTSEGMENTATIONPACKAGEID;
end
close EMAILSEGMENTATIONPACKAGECURSOR;
deallocate EMAILSEGMENTATIONPACKAGECURSOR;
end
if @MAILSEGMENTID is not null
begin
declare MAILSEGMENTATIONSEGMENTCURSOR cursor local fast_forward for
select
ID
from dbo.MKTSEGMENTATIONSEGMENT
where SEGMENTATIONID = @SEGMENTATIONID
and SEGMENTID = @MAILSEGMENTID;
open MAILSEGMENTATIONSEGMENTCURSOR;
fetch next from MAILSEGMENTATIONSEGMENTCURSOR into @MKTSEGMENTATIONSEGMENTID;
while (@@FETCH_STATUS = 0)
begin
-- Drop the Segmentation package record linking the mailing to the segment
exec dbo.USP_MKTSEGMENTATIONSEGMENT_DELETEBYID_WITHCHANGEAGENTID @MKTSEGMENTATIONSEGMENTID, @CHANGEAGENTID;
fetch next from MAILSEGMENTATIONSEGMENTCURSOR into @MKTSEGMENTATIONSEGMENTID;
end
close MAILSEGMENTATIONSEGMENTCURSOR;
deallocate MAILSEGMENTATIONSEGMENTCURSOR;
end
if @MAILPACKAGEID is not null
begin
declare MAILSEGMENTATIONPACKAGECURSOR cursor local fast_forward for
select
ID
from dbo.MKTSEGMENTATIONPACKAGE
where SEGMENTATIONID = @SEGMENTATIONID
and PACKAGEID = @MAILPACKAGEID;
open MAILSEGMENTATIONPACKAGECURSOR;
fetch next from MAILSEGMENTATIONPACKAGECURSOR into @MKTSEGMENTATIONPACKAGEID;
while (@@FETCH_STATUS = 0)
begin
-- Drop the Segmentation package record linking the mailing to the segment
exec dbo.USP_MKTSEGMENTATIONPACKAGE_DELETEBYID_WITHCHANGEAGENTID @MKTSEGMENTATIONPACKAGEID, @CHANGEAGENTID;
fetch next from MAILSEGMENTATIONPACKAGECURSOR into @MKTSEGMENTATIONPACKAGEID;
end
close MAILSEGMENTATIONPACKAGECURSOR;
deallocate MAILSEGMENTATIONPACKAGECURSOR;
end
update dbo.COMMUNICATIONLETTER set
SEGMENTATIONID = null
where ID = @ID;
-- Reorder the remaining letters
declare @SEQUENCE int;
select @SEQUENCE = SEQUENCE from dbo.COMMUNICATIONLETTER where ID = @ID;
update dbo.COMMUNICATIONLETTER
set
SEQUENCE = (SEQUENCE - 1)
where
ID in (select ID from dbo.COMMUNICATIONLETTER where SEGMENTATIONID = @SEGMENTATIONID and SEQUENCE > @SEQUENCE)
return 0;
end