USP_DATAFORMTEMPLATE_EDIT_APPEALMAILINGACTIVATE

The save procedure used by the edit dataform template "Appeal Mailing Activate Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@MKTPACKAGEID uniqueidentifier IN Package
@IDSETREGISTERID uniqueidentifier IN Selection
@LABELFILECHANGED bit IN Letter File changed?
@LABELFILENAME nvarchar(255) IN Label template
@LABELFILE varbinary IN LABELFILE
@CREATEOUTPUTIDSET bit IN Create selection from results
@OUTPUTIDSETNAME nvarchar(100) IN Selection name
@OVERWRITEOUTPUTIDSET bit IN Overwrite existing selection
@MAILDATE datetime IN Mail date

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_APPEALMAILINGACTIVATE]
(
  @ID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @MKTPACKAGEID uniqueidentifier,
  @IDSETREGISTERID uniqueidentifier,
  @LABELFILECHANGED bit,
  @LABELFILENAME nvarchar(255),
  @LABELFILE varbinary(max),
  @CREATEOUTPUTIDSET bit,
  @OUTPUTIDSETNAME nvarchar(100),
  @OVERWRITEOUTPUTIDSET bit,
  @MAILDATE datetime
)
as
  set nocount on;

  declare @APPEALMAILINGID uniqueidentifier;
  declare @HOUSEHOLDINGTYPECODE tinyint;
  declare @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit;
  declare @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit;
  declare @HOUSEHOLDINGONERECORDPERHOUSEHOLD bit;
  declare @USEADDRESSPROCESSING bit;
  declare @ADDRESSPROCESSINGOPTIONID uniqueidentifier;
  declare @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint;
  declare @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime;
  declare @CURRENTDATE datetime;
  declare @ISHYBRID bit;

  begin try
    --Validate that the mailing is not currently being activated before saving changes...

    if dbo.[UFN_MKTSEGMENTATION_ISACTIVATING](@ID) = 1
      raiserror('BBERR_APPEALMAILINGACTIVATE_ISACTIVATING', 13, 1);

    if @CHANGEAGENTID is null  
      exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;

    set @CURRENTDATE = getdate();

    --Grab some info so we know what to update...

    select
      @APPEALMAILINGID = [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID],
      @HOUSEHOLDINGTYPECODE = [MKTSEGMENTATION].[HOUSEHOLDINGTYPECODE],
      @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD = [MKTSEGMENTATION].[HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD],
      @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS = [MKTSEGMENTATION].[HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS],
      @HOUSEHOLDINGONERECORDPERHOUSEHOLD = [MKTSEGMENTATION].[HOUSEHOLDINGONERECORDPERHOUSEHOLD],
      @USEADDRESSPROCESSING = [MKTSEGMENTATION].[USEADDRESSPROCESSING],
      @ADDRESSPROCESSINGOPTIONID = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONID],
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = [MKTSEGMENTATION].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
      @ISHYBRID = (case when [APPEALMAILINGSETUP].[ID] is null then 0 else 1 end)
    from dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
    inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID]
    left join dbo.[APPEALMAILINGSETUP] on [APPEALMAILINGSETUP].[ID] = [MKTSEGMENTATION].[ID]
    where [MKTSEGMENTATIONACTIVATEPROCESS].[ID] = @ID;

    --Update the appeal mailing...

    update dbo.[APPEALMAILING] set
      [LABELFILE] = (case when @LABELFILECHANGED = 1 then @LABELFILE else [LABELFILE] end),
      [LABELFILENAME] = (case when @LABELFILECHANGED = 1 then @LABELFILENAME else [LABELFILENAME] end),    
      [CREATEOUTPUTIDSET] = @CREATEOUTPUTIDSET,
      [OUTPUTIDSETNAME] = @OUTPUTIDSETNAME,
      [OVERWRITEOUTPUTIDSET] = @OVERWRITEOUTPUTIDSET,
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] = @APPEALMAILINGID;

    --OutputIDSet information is now stored on the segmentation table, but keep both tables up-to-date for backwards compatibility...

    update dbo.[MKTSEGMENTATION] set
      [CREATEOUTPUTIDSET] = @CREATEOUTPUTIDSET,
      [OUTPUTIDSETNAME] = @OUTPUTIDSETNAME,
      [OVERWRITEOUTPUTIDSET] = @OVERWRITEOUTPUTIDSET,
      [MAILDATE] = @MAILDATE,
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] = @APPEALMAILINGID;

    exec dbo.[USP_MKTSEGMENTATIONSEGMENTCACHEADDRESSES_CREATETABLE] @APPEALMAILINGID;

    if @ISHYBRID = 0
      --Update the underlying segment information...

      exec dbo.[USP_APPEALMAILING_CREATEORUPDATESEGMENT]
    @APPEALMAILINGID = @APPEALMAILINGID,
        @CURRENTAPPUSERID = @CURRENTAPPUSERID,
        @IDSETREGISTERID = @IDSETREGISTERID,
        @MKTPACKAGEID = @MKTPACKAGEID,
        @HOUSEHOLDINGTYPECODE = @HOUSEHOLDINGTYPECODE,
        @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD = @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD,
        @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS = @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS,
        @HOUSEHOLDINGONERECORDPERHOUSEHOLD = @HOUSEHOLDINGONERECORDPERHOUSEHOLD,
        @USEADDRESSPROCESSING = @USEADDRESSPROCESSING,
        @ADDRESSPROCESSINGOPTIONID = @ADDRESSPROCESSINGOPTIONID,
        @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
        @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
        @CHANGEAGENTID = @CHANGEAGENTID;
  end try

  begin catch
    exec dbo.[USP_RAISE_ERROR];
    return 1;
  end catch

  return 0;