USP_APPEALMAILING_DELETE

Executes the "Appeal Mailing: Delete" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being deleted.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the delete.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


CREATE procedure dbo.[USP_APPEALMAILING_DELETE]
(
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier = null
)
as
  set nocount on;

  declare @CURRENTDATE datetime = getDate();
  declare @MKTSEGMENTID uniqueidentifier;
  declare @MKTSEGMENTATIONACTIVATEPROCESSID uniqueidentifier;
  declare @COMMUNICATIONEXCLUSIONIDSETREGISTERID uniqueidentifier;

  --Grab the one and only segment in the appeal mailing...

  select
    @MKTSEGMENTID = coalesce([MKTSEGMENTATIONSEGMENT].[SEGMENTID], [APPEALMAILINGSETUP].[SEGMENTID]),
    @MKTSEGMENTATIONACTIVATEPROCESSID = [MKTSEGMENTATIONACTIVATEPROCESS].[ID],
    @COMMUNICATIONEXCLUSIONIDSETREGISTERID = [COMMUNICATIONEXCLUSIONS].[IDSETREGISTERID]
  from dbo.[APPEALMAILING]
  left join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [APPEALMAILING].[MKTSEGMENTATIONSEGMENTID]
  inner join dbo.[MKTSEGMENTATIONACTIVATEPROCESS] on [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID] = [APPEALMAILING].[ID]
  left join dbo.[APPEALMAILINGSETUP] on [APPEALMAILINGSETUP].[ID] = [APPEALMAILING].[ID]
  left join dbo.[COMMUNICATIONEXCLUSIONS] on [COMMUNICATIONEXCLUSIONS].[SEGMENTATIONID] = [APPEALMAILINGSETUP].[ID]
  where [APPEALMAILING].[ID] = @ID;

  --Delete the contact rules/communication preferences for the mailing activation business process...

  exec dbo.[USP_BUSINESSPROCESSCOMMPREF_DELETE] '22C3D75C-A956-4BFC-A5FD-4B866BAEF509', @MKTSEGMENTATIONACTIVATEPROCESSID, @CHANGEAGENTID;

  -- Delete any appeal mailing setup letters

  declare @LETTERID uniqueidentifier;
  declare LETTERCURSOR cursor local fast_forward for
    select
      ID
    from dbo.APPEALMAILINGSETUPLETTER
    where APPEALMAILINGSETUPID = @ID;

  open LETTERCURSOR;
  fetch next from LETTERCURSOR into @LETTERID;

  while (@@fetch_status = 0)
    begin
      exec dbo.USP_APPEALMAILINGSETUPLETTER_DELETE @LETTERID, @CHANGEAGENTID;
      fetch next from LETTERCURSOR into @LETTERID;
    end

  close LETTERCURSOR;
  deallocate LETTERCURSOR;

  --Delete the appeal mailing information...

  exec dbo.[USP_APPEALMAILING_DELETEBYID_WITHCHANGEAGENTID] @ID, @CHANGEAGENTID;

  --Delete the base mailing...

  exec dbo.[USP_MKTSEGMENTATION_DELETE] @ID, @CHANGEAGENTID;

  --Delete the auto generated base segment (have to make the segment not system defined first)...

  update dbo.[MKTSEGMENT] set
    [ISSYSTEM] = 0,
    [CHANGEDBYID] = @CHANGEAGENTID,
    [DATECHANGED] = @CURRENTDATE
  where [ID] = @MKTSEGMENTID;

  exec dbo.[USP_MKTSEGMENT_DELETE] @MKTSEGMENTID, @CHANGEAGENTID, @CURRENTAPPUSERID;

  --Delete the IDSet associated with the communication exclusions now that all segmentation records have cascaded

  if @COMMUNICATIONEXCLUSIONIDSETREGISTERID is not null
    begin
      update dbo.IDSETREGISTER set
        ISSYSTEM = 0,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED = @CURRENTDATE
      where ID = @COMMUNICATIONEXCLUSIONIDSETREGISTERID;

      exec dbo.[USP_IDSETREGISTER_DELETEBYID_WITHCHANGEAGENTID] @COMMUNICATIONEXCLUSIONIDSETREGISTERID, @CHANGEAGENTID;
    end
  return 0;