USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTATIONFROMPLAN

The save procedure used by the add dataform template "Marketing Effort From Marketing Plan Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@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.
@MARKETINGPLANITEMID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CODE nvarchar(10) IN Code
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@INCLUDESELECTIONS xml IN Universe
@EXCLUDESELECTIONS xml IN Exclusion selections
@EXCLUDESEGMENTATIONS xml IN Excluded previous marketing efforts
@SOURCECODEID uniqueidentifier IN Source code
@ITEMLIST xml IN Items
@MAILDATE datetime IN Date
@HOUSEHOLDINGTYPECODE tinyint IN Include
@SITEID uniqueidentifier IN Site
@MAILINGTYPECODE tinyint IN Marketing effort type
@EXCLUSIONDATETYPECODE tinyint IN Consider exclusions as of
@EXCLUSIONASOFDATE datetime IN Consider exclusions as of
@EXCLUDEDECEASED bit IN Exclude deceased constituents
@EXCLUDEINACTIVE bit IN Exclude inactive constituents
@EXCLUSIONS xml IN Exclusions
@USEADDRESSPROCESSING bit IN Use address processing?
@ADDRESSPROCESSINGOPTIONID uniqueidentifier IN Address processing options
@NAMEFORMATPARAMETERID uniqueidentifier IN Name format options
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint IN Consider seasonal addresses as of
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime IN Consider seasonal addresses as of
@ACTIVATIONKPIS xml IN Activation KPIs
@USEKPISASDEFAULT bit IN Use the chosen KPIs as the default for future marketing efforts
@APPEALINFORMATION xml IN Appeal information including the appeal searchlist and record source.
@RUNACTIVATEANDEXPORT bit IN Run activate and export upon process completion
@EXPORTDESCRIPTION nvarchar(255) IN Export description
@MAILEXPORTDEFINITIONID uniqueidentifier IN Mail export definition
@EMAILEXPORTDEFINITIONID uniqueidentifier IN Email export definition
@PHONEEXPORTDEFINITIONID uniqueidentifier IN Phone export definition
@HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit IN Also include qualifying individuals who are not members of any household
@HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit IN Also include qualifying households which do not have any members
@HOUSEHOLDINGONERECORDPERHOUSEHOLD bit IN Send to one person per household
@CODEVALUEID uniqueidentifier IN Code value ID
@RUNSEGMENTATIONSEGMENTREFRESHPROCESS bit IN Refresh segment selections and filters
@CACHESOURCEANALYSISRULEDATA bit IN Capture source analysis rule data
@OVERRIDEBUSINESSUNITS bit IN Override appeal business units
@BUSINESSUNITS xml IN Business units
@RUNMARKETINGEXCLUSIONSREPORT bit IN

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTATIONFROMPLAN]
(
  @ID uniqueidentifier = null output,
  @CURRENTAPPUSERID uniqueidentifier = null,
  @CHANGEAGENTID uniqueidentifier = null,    
  @MARKETINGPLANITEMID uniqueidentifier,
  @CODE nvarchar(10) = '',
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255) = '',
  @INCLUDESELECTIONS xml = null,
  @EXCLUDESELECTIONS xml = null,
  @EXCLUDESEGMENTATIONS xml = null,
  @SOURCECODEID uniqueidentifier = null,
  @ITEMLIST xml = null,
  @MAILDATE datetime = null,
  @HOUSEHOLDINGTYPECODE tinyint = 0,
  @SITEID uniqueidentifier = null,
  @MAILINGTYPECODE tinyint = 0,
  @EXCLUSIONDATETYPECODE tinyint = 0,
  @EXCLUSIONASOFDATE datetime = null,
  @EXCLUDEDECEASED bit = 1,
  @EXCLUDEINACTIVE bit = 1,
  @EXCLUSIONS xml = null,
  @USEADDRESSPROCESSING bit = 0,
  @ADDRESSPROCESSINGOPTIONID uniqueidentifier = null,
  @NAMEFORMATPARAMETERID uniqueidentifier = null,
  @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint = 0,
  @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime = null,
  @ACTIVATIONKPIS xml = null,
  @USEKPISASDEFAULT bit = 0,
  @APPEALINFORMATION xml = null,
  @RUNACTIVATEANDEXPORT bit = 0,
  @EXPORTDESCRIPTION nvarchar(255) = null,
  @MAILEXPORTDEFINITIONID uniqueidentifier = null,
  @EMAILEXPORTDEFINITIONID uniqueidentifier = null,
  @PHONEEXPORTDEFINITIONID uniqueidentifier = null,
  @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD bit = 0,
  @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS bit = 0,
  @HOUSEHOLDINGONERECORDPERHOUSEHOLD bit = 0,
  @CODEVALUEID uniqueidentifier = null,
  @RUNSEGMENTATIONSEGMENTREFRESHPROCESS bit = 0,
  @CACHESOURCEANALYSISRULEDATA bit = 1,
  @OVERRIDEBUSINESSUNITS bit = 0,
  @BUSINESSUNITS xml = null,
  @RUNMARKETINGEXCLUSIONSREPORT bit = 1
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @MKTSEGMENTATIONACTIVATEPROCESSID uniqueidentifier;
  declare @BASECURRENCYID uniqueidentifier;
  declare @ORGANIZATIONCURRENCYID uniqueidentifier;
  declare @ORGANIZATIONCURRENCYEXCHANGERATEID uniqueidentifier;
  declare @ISBBEC bit;

  begin try
    if @ID is null
      set @ID = NewID();

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

    set @CURRENTDATE = getdate();
    set @ISBBEC = (case when dbo.[UFN_INSTALLEDPRODUCTS_PRODUCTIS]('BB9873D7-F1ED-430A-8AB4-F09F47056538') = 0 then 1 else 0 end);

    select
      @BASECURRENCYID = [BASECURRENCYID]
    from dbo.[MKTMARKETINGPLANITEM]
    where [ID]= @MARKETINGPLANITEMID;

    /* Save the mailing */
    insert into dbo.[MKTSEGMENTATION] (
      [ID],
      [CODE],
      [PARTDEFINITIONVALUESID],
      [NAME],
      [DESCRIPTION],
      [SITEID],
      [MARKETINGPLANITEMID],
      [SOURCECODEID],
      [MAILDATE],
      [HOUSEHOLDINGTYPECODE],
      [HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD],
      [HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS],
      [HOUSEHOLDINGONERECORDPERHOUSEHOLD],
      [MAILINGTYPECODE],
      [USEADDRESSPROCESSING],
      [ADDRESSPROCESSINGOPTIONID],
      [NAMEFORMATPARAMETERID],
      [ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
      [ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
      [RUNACTIVATEANDEXPORT],
      [OVERRIDEBUSINESSUNITS],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED],
      [BASECURRENCYID]
    ) values (
      @ID,
      @CODE,
      @CODEVALUEID,
      @NAME,
      @DESCRIPTION,
      @SITEID,
      @MARKETINGPLANITEMID,
      @SOURCECODEID,
      @MAILDATE,
      @HOUSEHOLDINGTYPECODE,
      @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD,
      @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS,
      @HOUSEHOLDINGONERECORDPERHOUSEHOLD,
      @MAILINGTYPECODE,
      @USEADDRESSPROCESSING,
      @ADDRESSPROCESSINGOPTIONID,
      @NAMEFORMATPARAMETERID,
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
@ADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
      @RUNACTIVATEANDEXPORT,
      @OVERRIDEBUSINESSUNITS,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE,
      @BASECURRENCYID
    );

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

    if (@ORGANIZATIONCURRENCYID != @BASECURRENCYID)
      set @ORGANIZATIONCURRENCYEXCHANGERATEID = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);

    /* Create default budget info */
    insert into dbo.[MKTSEGMENTATIONBUDGET] (
      [ID],
      [BUDGETAMOUNT],
      [FIXEDCOST],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED],
      [BASECURRENCYID],
      [ORGANIZATIONBUDGETAMOUNT],
      [ORGANIZATIONFIXEDCOST],
      [ORGANIZATIONCURRENCYEXCHANGERATEID]
    ) values (
      @ID,
      0.0,
      0.0,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE,
      @BASECURRENCYID,
      0.0,
      0.0,
      @ORGANIZATIONCURRENCYEXCHANGERATEID
    );

    if @ISBBEC = 1
      begin
        /* Save business units */
        exec dbo.USP_MKTSEGMENTATIONBUSINESSUNIT_GETBUSINESSUNITS_ADDFROMXML @ID, @BUSINESSUNITS, @CHANGEAGENTID;   
      end

    /* Save the source code information */
    exec dbo.[USP_MKTSOURCECODEPART_GETITEMLIST2_UPDATEFROMXML] @ID, @ITEMLIST, @CHANGEAGENTID, @CURRENTDATE;

    /* Save all the filters */
    exec dbo.USP_MKTSEGMENTATIONFILTERSELECTION_GETINCLUDESELECTIONS_ADDFROMXML @ID, @INCLUDESELECTIONS, @CHANGEAGENTID, @CURRENTDATE;
    exec dbo.USP_MKTSEGMENTATIONFILTERSELECTION_GETEXCLUDESELECTIONS_ADDFROMXML @ID, @EXCLUDESELECTIONS, @CHANGEAGENTID, @CURRENTDATE;
    exec dbo.USP_MKTSEGMENTATIONFILTERSEGMENTATION_GETEXCLUDESEGMENTATIONS_ADDFROMXML @ID, @EXCLUDESEGMENTATIONS, @CHANGEAGENTID, @CURRENTDATE;

    /* add this mailing to the PREACTIVATIONPROCESS table */
    if not exists(select 1 from dbo.[MKTMAILINGPREACTIVATIONPROCESS] where [SEGMENTATIONID] = @ID)
      insert into dbo.[MKTMAILINGPREACTIVATIONPROCESS] (
        [ID],
        [SEGMENTATIONID],
        [ADDEDBYID],
        [CHANGEDBYID],
        [DATEADDED],
        [DATECHANGED]
      ) values (
        NewID(),
        @ID,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        @CURRENTDATE
      );


    /* Add the mailing to the SegmentCalculationProcess table */
    exec dbo.[USP_MKTSEGMENTATIONSEGMENTCALCULATEPROCESS_SAVE] @ID, @CHANGEAGENTID;

    if @MAILINGTYPECODE not in (1, 4)
      exec dbo.[USP_MKTSEGMENTATIONSEGMENTREFRESHPROCESS_SAVE] @ID, @CHANGEAGENTID;

    /* Add the mailing to the ActivationProcess table */
    exec dbo.[USP_MKTSEGMENTATIONACTIVATEPROCESS_SAVE] @ID, @CHANGEAGENTID, 1, @RUNSEGMENTATIONSEGMENTREFRESHPROCESS, @CACHESOURCEANALYSISRULEDATA, @RUNMARKETINGEXCLUSIONSREPORT;

    /* Add the effort to the EffortExclusionsProcess table */
    exec dbo.[USP_MKTSEGMENTATION_EFFORTEXCLUSIONSPROCESS_SAVE] @ID, @CHANGEAGENTID;

    if @ISBBEC = 1
      begin
        /* Save the contact rules/communication preferences for the mailing activation business process */
        select
          @MKTSEGMENTATIONACTIVATEPROCESSID = [ID]
        from dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
        where [SEGMENTATIONID] = @ID;

        exec dbo.[USP_BUSINESSPROCESSCOMMPREF_ADD]
          @CHANGEAGENTID = @CHANGEAGENTID,
          @BUSINESSPROCESSCATALOGID = '22C3D75C-A956-4BFC-A5FD-4B866BAEF509',
          @BUSINESSPROCESSPARAMETERSETID = @MKTSEGMENTATIONACTIVATEPROCESSID,
          @EXCLUSIONDATETYPECODE = @EXCLUSIONDATETYPECODE,
          @EXCLUSIONASOFDATE = @EXCLUSIONASOFDATE,
          @EXCLUDEDECEASED = @EXCLUDEDECEASED,
          @EXCLUDEINACTIVE = @EXCLUDEINACTIVE,
          @EXCLUSIONS = @EXCLUSIONS,
          @CURRENTAPPUSERID = @CURRENTAPPUSERID;

        /* Create the address cache table */
        exec dbo.[USP_MKTSEGMENTATIONSEGMENTCACHEADDRESSES_CREATETABLE] @ID;
      end

    --update the name on the plan item the mailings is from

    update dbo.[MKTMARKETINGPLANITEM] set 
      [NAME] = @NAME,
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] = @MARKETINGPLANITEMID;

    /* Save KPIs */
    exec dbo.[USP_MKTSEGMENTATIONACTIVATEKPI_SAVEFIELD_FROMXML] 
      @ID
      @ACTIVATIONKPIS
      @USEKPISASDEFAULT
      @CHANGEAGENTID,
      @CURRENTAPPUSERID;

    /* Save the appeal information */
    exec dbo.[USP_MKTSEGMENTATIONACTIVATE_SAVEFIELD_FROMXML]
      @ID,
      @APPEALINFORMATION,
      @CHANGEAGENTID;

    /* Save the export information */
    insert into dbo.[MKTSEGMENTATIONEXPORTPROCESS] (
      [ID],
      [SEGMENTATIONID],
      [DESCRIPTION],
      [MAILEXPORTDEFINITIONID],
      [EMAILEXPORTDEFINITIONID],
      [PHONEEXPORTDEFINITIONID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    ) values (
      newid(),
      @ID,
      @EXPORTDESCRIPTION,
      @MAILEXPORTDEFINITIONID,
      @EMAILEXPORTDEFINITIONID,
      @PHONEEXPORTDEFINITIONID,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    );
  end try

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

  return 0;