USP_DATAFORMTEMPLATE_EDIT_APPEALMAILINGREVENUECALCULATOR

The save procedure used by the edit dataform template "Appeal Mailing Revenue Calculator Edit Data 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.
@LETTERCHANNELINSTANCES xml IN
@BUDGETAMOUNT money IN Budget
@ESTIMATEDRESPONSERATE decimal(5, 2) IN Estimated response rate
@ESTIMATEDAVERAGEGIFTAMOUNT money IN Estimated average gift amount
@ESTIMATEDNETREVENUE money IN Estimated net revenue

Definition

Copy

CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_APPEALMAILINGREVENUECALCULATOR]
(
  @ID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier,
  @LETTERCHANNELINSTANCES xml,
  @BUDGETAMOUNT money,
  @ESTIMATEDRESPONSERATE decimal(5,2),
  @ESTIMATEDAVERAGEGIFTAMOUNT money,
  @ESTIMATEDNETREVENUE money
)
as
  begin
    set nocount on;

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

    declare @CURRENTDATE datetime = getdate();

    update dbo.[MKTPACKAGE] set
      [MKTPACKAGE].[UNITCOST] = [LETTERCHANNELINSTANCES].[COSTPERPIECE],
      [MKTPACKAGE].[DATECHANGED] = @CURRENTDATE,
      [MKTPACKAGE].[CHANGEDBYID] = @CHANGEAGENTID
    from dbo.[UFN_APPEALMAILING_GETLETTERCHANNELINSTANCES_FROMITEMLISTXML](@LETTERCHANNELINSTANCES) as [LETTERCHANNELINSTANCES]
    where [MKTPACKAGE].[ID] = [LETTERCHANNELINSTANCES].[MKTPACKAGEID];

    update dbo.[MKTSEGMENTATIONPACKAGE] set
      [MKTSEGMENTATIONPACKAGE].[UNITCOST] = [LETTERCHANNELINSTANCES].[COSTPERPIECE],
      [MKTSEGMENTATIONPACKAGE].[CHANGEDBYID] = @CHANGEAGENTID,
      [MKTSEGMENTATIONPACKAGE].[DATECHANGED] = @CURRENTDATE
    from dbo.[UFN_APPEALMAILING_GETLETTERCHANNELINSTANCES_FROMITEMLISTXML](@LETTERCHANNELINSTANCES) as [LETTERCHANNELINSTANCES]
    where [MKTSEGMENTATIONPACKAGE].[PACKAGEID] = [LETTERCHANNELINSTANCES].[MKTPACKAGEID]
    and [MKTSEGMENTATIONPACKAGE].[SEGMENTATIONID] = @ID;

    update dbo.[MKTSEGMENTATIONBUDGET] set
      [MKTSEGMENTATIONBUDGET].[BUDGETAMOUNT] = @BUDGETAMOUNT,
      [MKTSEGMENTATIONBUDGET].[DATECHANGED] = @CURRENTDATE,
      [MKTSEGMENTATIONBUDGET].[CHANGEDBYID] = @CHANGEAGENTID
    where [MKTSEGMENTATIONBUDGET].[ID] = @ID;

    update dbo.[APPEALMAILINGSETUP] set
      [APPEALMAILINGSETUP].[ESTIMATEDAVERAGEGIFTAMOUNT] = @ESTIMATEDAVERAGEGIFTAMOUNT,
      [APPEALMAILINGSETUP].[ESTIMATEDRESPONSERATE] = @ESTIMATEDRESPONSERATE,
      [APPEALMAILINGSETUP].[ESTIMATEDNETREVENUE] = @ESTIMATEDNETREVENUE,
      [APPEALMAILINGSETUP].[DATECHANGED] = @CURRENTDATE,
      [APPEALMAILINGSETUP].[CHANGEDBYID] = @CHANGEAGENTID
    where [APPEALMAILINGSETUP].[ID] = @ID;

    -- For convenience, appeal mailings save estimations at the APPEALMAILINGSETUP level.
    -- For compatibility, also maintain these estimations at the MKTSEGMENTATIONSEGMENT level, which
    -- is what DM mailings do.
    update dbo.[MKTSEGMENTATIONSEGMENT] set
      [MKTSEGMENTATIONSEGMENT].[RESPONSERATE] = @ESTIMATEDRESPONSERATE,
      [MKTSEGMENTATIONSEGMENT].[GIFTAMOUNT] = @ESTIMATEDAVERAGEGIFTAMOUNT,
      [MKTSEGMENTATIONSEGMENT].[DATECHANGED] = @CURRENTDATE,
      [MKTSEGMENTATIONSEGMENT].[CHANGEDBYID] = @CHANGEAGENTID
    where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @ID;

    declare @KPITABLE as table (
      [KPICATALOGID] uniqueidentifier,
      [SELECTED] bit,
      [NAME] nvarchar(255),
      [GOALTYPECODE] tinyint,
      [DEFAULT] bit,
      [LOCKED] bit,
      [TEMPLATETYPECODE] tinyint
    );

    insert into @KPITABLE
      exec dbo.[USP_MKTSEGMENTATIONACTIVATEKPI_GETFIELDS] null, 0, @CURRENTAPPUSERID;

    declare @ACTIVATIONKPIS xml;

    set @ACTIVATIONKPIS = (
      select 
        [KPICATALOGID],
        [SELECTED],
        [NAME],
        [GOALTYPECODE],
        [DEFAULT]
      from @KPITABLE 
      for xml raw('ITEM'), type, elements, root('ACTIVATIONKPIS'), binary base64);

    exec dbo.[USP_MKTSEGMENTATIONACTIVATEKPI_CLEARFIELDS] @ID, 1, @CHANGEAGENTID;

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