USP_APPEALMAILING_EDIT_SAVE_2

Saves information when editing an appeal mailing.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@NAME nvarchar(100) IN
@DESCRIPTION nvarchar(255) IN
@MAILDATE datetime IN
@FIXEDCOST money IN
@MKTPACKAGEID uniqueidentifier IN
@IDSETREGISTERID uniqueidentifier IN
@HOUSEHOLDINGTYPECODE tinyint IN
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit IN
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit IN
@HOUSEHOLDINGONERECORDPERHOUSEHOLD bit IN
@EXCLUSIONDATETYPECODE tinyint IN
@EXCLUSIONASOFDATE datetime IN
@EXCLUDEDECEASED bit IN
@EXCLUDEINACTIVE bit IN
@EXCLUSIONS xml IN
@USEADDRESSPROCESSING bit IN
@ADDRESSPROCESSINGOPTIONID uniqueidentifier IN
@NAMEFORMATPARAMETERID uniqueidentifier IN
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint IN
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime IN
@LABELFILECHANGED bit IN
@LABELFILENAME nvarchar(255) IN
@LABELFILE varbinary IN
@CREATEOUTPUTIDSET bit IN
@OUTPUTIDSETNAME nvarchar(100) IN
@OVERWRITEOUTPUTIDSET bit IN
@ACTIVATIONKPIS xml IN
@USEKPISASDEFAULT bit IN
@MAILINGBUDGET money IN
@DISPLAYEDFILENAME nvarchar(255) IN
@RECORDCOUNTNEEDSUPDATED bit INOUT

Definition

Copy


CREATE procedure dbo.[USP_APPEALMAILING_EDIT_SAVE_2]
(
  @ID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255),
  @MAILDATE datetime,
  @FIXEDCOST money,
  @MKTPACKAGEID uniqueidentifier,
  @IDSETREGISTERID uniqueidentifier,
  @HOUSEHOLDINGTYPECODE tinyint,
  @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit,
  @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit,
  @HOUSEHOLDINGONERECORDPERHOUSEHOLD bit,
  @EXCLUSIONDATETYPECODE tinyint,
  @EXCLUSIONASOFDATE datetime,
  @EXCLUDEDECEASED bit,
  @EXCLUDEINACTIVE bit,
  @EXCLUSIONS xml,
  @USEADDRESSPROCESSING bit,
  @ADDRESSPROCESSINGOPTIONID uniqueidentifier,
  @NAMEFORMATPARAMETERID uniqueidentifier,
  @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint,
  @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime,
  @LABELFILECHANGED bit,
  @LABELFILENAME nvarchar(255),
  @LABELFILE varbinary(max),
  @CREATEOUTPUTIDSET bit,
  @OUTPUTIDSETNAME nvarchar(100),
  @OVERWRITEOUTPUTIDSET bit,
  @ACTIVATIONKPIS xml = null,
  @USEKPISASDEFAULT bit = null,
  @MAILINGBUDGET money,
  @DISPLAYEDFILENAME nvarchar(255),
  @RECORDCOUNTNEEDSUPDATED bit = null output
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @OLDNAME nvarchar(100);
  declare @ORGANIZATIONCURRENCYEXCHANGERATEID uniqueidentifier;
  declare @ORGANIZATIONBUDGETAMOUNT money;
  declare @ORGANIZATIONFIXEDCOST money;
  declare @ORGANIZATIONCURRENCYID uniqueidentifier;
  declare @BASECURRENCYID uniqueidentifier;
  declare @DATEADDED datetime;

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

    set @CURRENTDATE = getdate();

    select
      @OLDNAME = [NAME]
    from dbo.[MKTSEGMENTATION]
    where [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] = @ID;

    --Update the base mailing (do not set the householding field here, the SP below will take care of it)...

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

    select 
      @BASECURRENCYID = [BASECURRENCYID], 
      @DATEADDED = [DATEADDED], 
      @ORGANIZATIONCURRENCYEXCHANGERATEID = [ORGANIZATIONCURRENCYEXCHANGERATEID] 
    from dbo.[MKTSEGMENTATIONBUDGET]
    where [ID] = @ID;

    set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();

    if (@ORGANIZATIONCURRENCYID = @BASECURRENCYID)
      begin
        set @ORGANIZATIONBUDGETAMOUNT = @MAILINGBUDGET;
        set @ORGANIZATIONFIXEDCOST = @FIXEDCOST;
      end
    else
      begin
        if @ORGANIZATIONCURRENCYEXCHANGERATEID is null
          set @ORGANIZATIONCURRENCYEXCHANGERATEID = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @DATEADDED, 0, null);

        set @ORGANIZATIONBUDGETAMOUNT = dbo.[UFN_CURRENCY_CONVERT](@MAILINGBUDGET, @ORGANIZATIONCURRENCYEXCHANGERATEID);
        set @ORGANIZATIONFIXEDCOST = dbo.[UFN_CURRENCY_CONVERT](@FIXEDCOST, @ORGANIZATIONCURRENCYEXCHANGERATEID);
      end

    --Update the budget information...

    update dbo.[MKTSEGMENTATIONBUDGET] set
      [BUDGETAMOUNT] = @MAILINGBUDGET,
      [FIXEDCOST] = @FIXEDCOST,
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE,
      [ORGANIZATIONFIXEDCOST] = @ORGANIZATIONFIXEDCOST,
      [ORGANIZATIONBUDGETAMOUNT] = @ORGANIZATIONBUDGETAMOUNT,
      [ORGANIZATIONCURRENCYEXCHANGERATEID] = @ORGANIZATIONCURRENCYEXCHANGERATEID
    where [ID] = @ID;

    if @USEADDRESSPROCESSING = 1 and @ADDRESSPROCESSINGOPTIONID is not null
      exec dbo.[USP_MKTSEGMENTATIONSEGMENTCACHEADDRESSES_CREATETABLE] @ID;

    exec dbo.[USP_APPEALMAILING_CREATEORUPDATESEGMENT]
      @APPEALMAILINGID = @ID,
      @CURRENTAPPUSERID = @CURRENTAPPUSERID,
      @NAME = @NAME,
      @IDSETREGISTERID = @IDSETREGISTERID,
      @MKTPACKAGEID = @MKTPACKAGEID,
      @HOUSEHOLDINGTYPECODE = @HOUSEHOLDINGTYPECODE,
      @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD = @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD,
      @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS = @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS,
      @HOUSEHOLDINGONERECORDPERHOUSEHOLD = @HOUSEHOLDINGONERECORDPERHOUSEHOLD,
      @EXCLUSIONDATETYPECODE = @EXCLUSIONDATETYPECODE,
      @EXCLUSIONASOFDATE = @EXCLUSIONASOFDATE,
      @EXCLUDEDECEASED = @EXCLUDEDECEASED,
      @EXCLUDEINACTIVE = @EXCLUDEINACTIVE,
      @EXCLUSIONS = @EXCLUSIONS,
      @USEADDRESSPROCESSING = @USEADDRESSPROCESSING,
      @ADDRESSPROCESSINGOPTIONID = @ADDRESSPROCESSINGOPTIONID,
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
      @CHANGEAGENTID = @CHANGEAGENTID,
      @RECORDCOUNTNEEDSUPDATED = @RECORDCOUNTNEEDSUPDATED output;

    --Update the name of any gift IDSets that are created for this mailing...

    update dbo.[IDSETREGISTER] set
      [NAME] = @NAME + substring([NAME], len(@OLDNAME) + 1, 300),
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] in (
      select [NORMALGIFTIDSETREGISTERID] from dbo.[MKTSEGMENTATIONACTIVATE] where [SEGMENTATIONID] = @ID and [NORMALGIFTIDSETREGISTERID] is not null
      union all
      select [UNRESOLVEDGIFTIDSETREGISTERID] from dbo.[MKTSEGMENTATIONACTIVATE] where [SEGMENTATIONID] = @ID and [UNRESOLVEDGIFTIDSETREGISTERID] is not null
    )
    and [NAME] like (replace(replace(replace(@OLDNAME, '\', '\\'), '_', '\_'), '%', '\%') + ' (%)') escape '\';

    --Save KPIs...

    exec dbo.[USP_MKTSEGMENTATIONACTIVATEKPI_SAVEFIELD_FROMXML]
      @ID,
      @ACTIVATIONKPIS,
      @USEKPISASDEFAULT,
      @CHANGEAGENTID,
      @CURRENTAPPUSERID;

    --Update the name of any KPIs that are created for this mailing...

    update dbo.[KPIINSTANCE] set
      [NAME] = @NAME + substring([NAME], len(@OLDNAME) + 1, 255),
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] in (
      select [KPIINSTANCE].[ID]
      from dbo.[MKTSEGMENTATIONACTIVATEKPI]
      inner join dbo.[KPIINSTANCE] on [KPIINSTANCE].[KPICATALOGID] = [MKTSEGMENTATIONACTIVATEKPI].[KPICATALOGID]
      where [MKTSEGMENTATIONACTIVATEKPI].[SEGMENTATIONID] = @ID
      and [KPIINSTANCE].[CONTEXTRECORDID] = cast([MKTSEGMENTATIONACTIVATEKPI].[SEGMENTATIONID] as nvarchar(36))
      and [KPIINSTANCE].[NAME] like (replace(replace(replace(@OLDNAME, '\', '\\'), '_', '\_'), '%', '\%') + ' - %') escape '\'
    );
  end try

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

  return 0;