USP_APPEALMAILINGSETUPLETTER_REMOVE

Executes the "Remove Appeal Mailing Setup 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_APPEALMAILINGSETUPLETTER_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 = APPEALMAILINGSETUPLETTER.APPEALMAILINGSETUPID,
        @APPEALID = APPEALMAILING.APPEALID,
        @ACTIVE = MKTSEGMENTATION.ACTIVE,
        @EMAILSEGMENTID = APPEALMAILINGSETUPLETTER.EMAILSEGMENTID,
        @MAILSEGMENTID = APPEALMAILINGSETUPLETTER.MAILSEGMENTID,
        @EMAILPACKAGEID = APPEALMAILINGSETUPLETTER.EMAILPACKAGEID,
        @MAILPACKAGEID = APPEALMAILINGSETUPLETTER.MAILPACKAGEID
    from dbo.APPEALMAILINGSETUPLETTER
    left join dbo.[APPEALMAILING] 
        on APPEALMAILINGSETUPLETTER.APPEALMAILINGSETUPID = APPEALMAILING.ID
    left join dbo.MKTSEGMENTATION
        on APPEALMAILINGSETUPLETTER.APPEALMAILINGSETUPID = MKTSEGMENTATION.ID
    where APPEALMAILINGSETUPLETTER.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.APPEALMAILINGSETUPLETTER set
        APPEALMAILINGSETUPID = null
    where ID = @ID;

    return 0;

end