USP_MKTACKNOWLEDGEMENTMAILINGPROCESS_CREATEMAILING

Creates a marketing effort from a marketing acknowledgement template.

Parameters

Parameter Parameter Type Mode Description
@ACKNOWLEDGEMENTMAILINGTEMPLATEID uniqueidentifier IN
@SEGMENTATIONID uniqueidentifier INOUT
@DATETEXT nvarchar(50) IN
@SUCCESSFULRULES xml IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTACKNOWLEDGEMENTMAILINGPROCESS_CREATEMAILING]
(
  @ACKNOWLEDGEMENTMAILINGTEMPLATEID uniqueidentifier,
  @SEGMENTATIONID uniqueidentifier output,
  @DATETEXT nvarchar(50),
  @SUCCESSFULRULES xml,
  @CHANGEAGENTID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier
)
as
  set nocount on;

  declare @CURRENTDATE datetime;

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

    set @CURRENTDATE = getdate();


    /**************************/
    /* Create the new mailing */
    /**************************/
    declare @CODE nvarchar(10);
    declare @CODEVALUEID uniqueidentifier;
    declare @NAME nvarchar(100);
    declare @DESCRIPTION nvarchar(255);
    declare @SITEID uniqueidentifier;
    declare @SOURCECODEID uniqueidentifier;
    declare @EXCLUSIONDATETYPECODE tinyint;
    declare @EXCLUSIONASOFDATE datetime;
    declare @EXCLUDEDECEASED bit;
    declare @EXCLUDEINACTIVE bit;
    declare @EXCLUSIONS xml;
    declare @USEADDRESSPROCESSING bit;
    declare @ADDRESSPROCESSINGOPTIONID uniqueidentifier;
    declare @NAMEFORMATPARAMETERID uniqueidentifier;
    declare @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint;
    declare @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime;
    declare @RUNACTIVATEANDEXPORT bit;
    declare @EXPORTDESCRIPTION nvarchar(255);
    declare @MAILEXPORTDEFINITIONID uniqueidentifier;
    declare @EMAILEXPORTDEFINITIONID uniqueidentifier;
    declare @CACHESOURCEANALYSISRULEDATA bit;
    declare @BASECURRENCYID uniqueidentifier;
    declare @RUNMARKETINGEXCLUSIONSREPORT bit;

    select
      @CODE = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[CODE],
      @CODEVALUEID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[PARTDEFINITIONVALUESID],
      @NAME = dbo.[UFN_MKTACKNOWLEDGEMENTMAILINGPROCESS_GETUNIQUENAME]([MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[NAME], @DATETEXT),
      @DESCRIPTION = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[DESCRIPTION],
      @SITEID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[SITEID],
      @SOURCECODEID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[SOURCECODEID],
      @EXCLUSIONDATETYPECODE = [BUSINESSPROCESSCOMMPREF].[DATETYPECODE],
      @EXCLUSIONASOFDATE = [BUSINESSPROCESSCOMMPREF].[ASOFDATE],
      @EXCLUDEDECEASED = [BUSINESSPROCESSCOMMPREF].[EXCLUDEDECEASED],
      @EXCLUDEINACTIVE = [BUSINESSPROCESSCOMMPREF].[EXCLUDEINACTIVE],
      @EXCLUSIONS = dbo.[UFN_BUSINESSPROCESSCOMMPREF_GETEXCLUSIONS_TOITEMLISTXML]([MKTACKNOWLEDGEMENTMAILINGPROCESS].[ID]),
      @USEADDRESSPROCESSING = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[USEADDRESSPROCESSING],
      @ADDRESSPROCESSINGOPTIONID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[ADDRESSPROCESSINGOPTIONID],
      @NAMEFORMATPARAMETERID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[NAMEFORMATPARAMETERID],
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
      @RUNACTIVATEANDEXPORT = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[RUNACTIVATEANDEXPORT],
      @EXPORTDESCRIPTION = isnull([MKTACKNOWLEDGEMENTMAILINGTEMPLATEEXPORT].[DESCRIPTION], ''),
      @MAILEXPORTDEFINITIONID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATEEXPORT].[MAILEXPORTDEFINITIONID],
      @EMAILEXPORTDEFINITIONID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATEEXPORT].[EMAILEXPORTDEFINITIONID],
      @CACHESOURCEANALYSISRULEDATA = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[CACHESOURCEANALYSISRULEDATA],
      @BASECURRENCYID = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[BASECURRENCYID],
      @RUNMARKETINGEXCLUSIONSREPORT = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[RUNMARKETINGEXCLUSIONSREPORT]
    from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATE]
    inner join dbo.[MKTACKNOWLEDGEMENTMAILINGPROCESS] on [MKTACKNOWLEDGEMENTMAILINGPROCESS].[ACKNOWLEDGEMENTMAILINGTEMPLATEID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[ID]
    left outer join dbo.[BUSINESSPROCESSCOMMPREF] on [BUSINESSPROCESSCOMMPREF].[BUSINESSPROCESSPARAMETERSETID] = [MKTACKNOWLEDGEMENTMAILINGPROCESS].[ID]
    left outer join dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATEEXPORT] on [MKTACKNOWLEDGEMENTMAILINGTEMPLATEEXPORT].[ACKNOWLEDGEMENTMAILINGTEMPLATEID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[ID]
    where [MKTACKNOWLEDGEMENTMAILINGTEMPLATE].[ID] = @ACKNOWLEDGEMENTMAILINGTEMPLATEID;

    if @EXCLUSIONS is not null
      set @EXCLUSIONS.modify('delete /EXCLUSIONS/ITEM/ID');

    exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTATION]
      @ID = @SEGMENTATIONID output,
      @CURRENTAPPUSERID = @CURRENTAPPUSERID,
      @CHANGEAGENTID = @CHANGEAGENTID,
      @CODE = @CODE,
      @NAME = @NAME,
      @DESCRIPTION = @DESCRIPTION,
      @INCLUDESELECTIONS = null,
      @EXCLUDESELECTIONS = null,
      @EXCLUDESEGMENTATIONS = null,
      @MARKETINGPLANITEMID = null,
      @SOURCECODEID = @SOURCECODEID,
      @ITEMLIST = null,
      @MAILDATE = @CURRENTDATE,
      @HOUSEHOLDINGTYPECODE = 0,
      @SITEID = @SITEID,
      @MAILINGTYPECODE = 1,
      @EXCLUSIONDATETYPECODE = @EXCLUSIONDATETYPECODE,
      @EXCLUSIONASOFDATE = @EXCLUSIONASOFDATE,
      @EXCLUDEDECEASED = @EXCLUDEDECEASED,
      @EXCLUDEINACTIVE = @EXCLUDEINACTIVE,
      @EXCLUSIONS = @EXCLUSIONS,
      @USEADDRESSPROCESSING = @USEADDRESSPROCESSING,
      @ADDRESSPROCESSINGOPTIONID = @ADDRESSPROCESSINGOPTIONID,
      @NAMEFORMATPARAMETERID = @NAMEFORMATPARAMETERID,
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
      @ACTIVATIONKPIS = null,
      @USEKPISASDEFAULT = null,
      @APPEALINFORMATION = null,
      @RUNACTIVATEANDEXPORT = @RUNACTIVATEANDEXPORT,
      @EXPORTDESCRIPTION = @EXPORTDESCRIPTION,
      @MAILEXPORTDEFINITIONID = @MAILEXPORTDEFINITIONID,
      @EMAILEXPORTDEFINITIONID = @EMAILEXPORTDEFINITIONID,
      @PHONEEXPORTDEFINITIONID = null,
      @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD = 0,
      @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS = 0,
      @HOUSEHOLDINGONERECORDPERHOUSEHOLD = 0,
      @CODEVALUEID = @CODEVALUEID,
      @RUNSEGMENTATIONSEGMENTREFRESHPROCESS = 0,
      @CACHESOURCEANALYSISRULEDATA = @CACHESOURCEANALYSISRULEDATA,
      @BUSINESSUNITS = null,
      @OVERRIDEBUSINESSUNITS = 0,
      @BASECURRENCYID = @BASECURRENCYID,
      @ORGANIZATIONCURRENCYEXCHANGERATEID = null,
      @RUNMARKETINGEXCLUSIONSREPORT = @RUNMARKETINGEXCLUSIONSREPORT;


    /**************************************************/
    /* Copy the universe/exclusion selection filters */
    /**************************************************/
    insert into dbo.[MKTSEGMENTATIONFILTERSELECTION] (
      [ID],
      [SEGMENTATIONID],
      [FILTERTYPECODE],
      [SELECTIONID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    )
    select
      newid(),
      @SEGMENTATIONID,
      [FILTERTYPECODE],
      [SELECTIONID],
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATEFILTERSELECTION]
    where [ACKNOWLEDGEMENTMAILINGTEMPLATEID] = @ACKNOWLEDGEMENTMAILINGTEMPLATEID;


    /******************************/
    /* Copy the source code parts */
    /******************************/
    insert into dbo.[MKTSOURCECODEPART] (
      [ID],
      [SEGMENTATIONID],
      [SOURCECODEITEMID],
      [LISTID],
      [CHANNELCODE],
      [CODE],
      [PARTDEFINITIONVALUESID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    )
    select
      newid(),
      @SEGMENTATIONID,
      [SOURCECODEITEMID],
      [LISTID],
      [CHANNELCODE],
      [CODE],
      [PARTDEFINITIONVALUESID],
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    from dbo.[MKTSOURCECODEPART]
    where [ACKNOWLEDGEMENTMAILINGTEMPLATEID] = @ACKNOWLEDGEMENTMAILINGTEMPLATEID;


    /******************/
    /* Copy the seeds */
    /******************/
    insert into dbo.[MKTSEGMENTATIONSEED] (
      [ID],
      [SEGMENTATIONID],
      [SEEDID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    )
    select
      newid(),
      @SEGMENTATIONID,
      [SEEDID],
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATESEED]
    where [ACKNOWLEDGEMENTMAILINGTEMPLATEID] = @ACKNOWLEDGEMENTMAILINGTEMPLATEID;


    /*********************************/
    /* Copy any ask ladder overrides */
    /*********************************/
    insert into dbo.[MKTSEGMENTATIONASKLADDEROVERRIDE] (
      [ID],
      [SEGMENTATIONID],
      [ASKLADDERID],
      [IDSETREGISTERID],
      [SEQUENCE],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    )
    select
      newid(),
      @SEGMENTATIONID,
      [ASKLADDERID],
      [IDSETREGISTERID],
      [SEQUENCE],
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    from dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATEASKLADDEROVERRIDE]
    where [ACKNOWLEDGEMENTMAILINGTEMPLATEID] = @ACKNOWLEDGEMENTMAILINGTEMPLATEID;


    /********************************/
    /* Copy the segments via cursor */
    /********************************/
    declare @TARGETSEGMENTID uniqueidentifier;
    declare @SEGMENTID uniqueidentifier;
    declare @PACKAGEID uniqueidentifier;
    declare @PACKAGECODE nvarchar(10);
    declare @PACKAGECODEVALUEID uniqueidentifier;
    declare @CHANNELSOURCECODE nvarchar(10);
    declare @CHANNELSOURCECODEVALUEID uniqueidentifier;
    declare @RESPONSERATE decimal(5, 2);
    declare @GIFTAMOUNT money;
    declare @ASKLADDERID uniqueidentifier;
    declare @SEQUENCE int;
    declare @TESTSEGMENTCODE nvarchar(10);
    declare @TESTSEGMENTCODEVALUEID uniqueidentifier;
    declare @OVERRIDEADDRESSPROCESSING bit;
    declare @SEGMENTUSEADDRESSPROCESSING bit;
    declare @SEGMENTADDRESSPROCESSINGOPTIONID uniqueidentifier;
    declare @SEGMENTNAMEFORMATPARAMETERID uniqueidentifier;
    declare @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE tinyint;
    declare @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATE datetime;
    declare @EXCLUDE bit;

    declare SEGMENTCURSOR cursor local fast_forward for
      select
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[SEGMENTID],
        isnull([MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[CODE], '') as [CODE],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[PARTDEFINITIONVALUESID] as [CODEVALUEID],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[PACKAGEID],
        isnull([MKTPACKAGE].[CODE], '') as [PACKAGECODE],
        [MKTPACKAGE].[PARTDEFINITIONVALUESID] as [PACKAGECODEVALUEID],
        isnull([MKTPACKAGE].[CHANNELSOURCECODE], '') as [CHANNELSOURCECODE],
        [MKTPACKAGE].[CHANNELPARTDEFINITIONVALUESID] as [CHANNELSOURCECODEVALUEID],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[RESPONSERATE],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[GIFTAMOUNT],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ASKLADDERID],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[SEQUENCE],
        isnull([MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[TESTSEGMENTCODE], '') as [TESTSEGMENTCODE],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[TESTPARTDEFINITIONVALUESID] as [TESTSEGMENTCODEVALUEID],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[OVERRIDEADDRESSPROCESSING],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[USEADDRESSPROCESSING],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ADDRESSPROCESSINGOPTIONID],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[NAMEFORMATPARAMETERID],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
        [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[EXCLUDE]
      from (select T.c.value('(ID)[1]','uniqueidentifier') as [ID] from @SUCCESSFULRULES.nodes('/RULES/ITEM') T(c)) as [SUCCESSFULRULES]
      inner join dbo.[MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE] on [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ID] = [SUCCESSFULRULES].[ID]
      left outer join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[PACKAGEID]
      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[SEGMENTID]
      where [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[ACKNOWLEDGEMENTMAILINGTEMPLATEID] = @ACKNOWLEDGEMENTMAILINGTEMPLATEID
      order by [MKTACKNOWLEDGEMENTMAILINGTEMPLATERULE].[SEQUENCE];

    open SEGMENTCURSOR;
    fetch next from SEGMENTCURSOR into @SEGMENTID, @CODE, @CODEVALUEID, @PACKAGEID, @PACKAGECODE, @PACKAGECODEVALUEID, @CHANNELSOURCECODE, @CHANNELSOURCECODEVALUEID, @RESPONSERATE, @GIFTAMOUNT, @ASKLADDERID, @SEQUENCE, @TESTSEGMENTCODE, @TESTSEGMENTCODEVALUEID, @OVERRIDEADDRESSPROCESSING, @SEGMENTUSEADDRESSPROCESSING, @SEGMENTADDRESSPROCESSINGOPTIONID, @SEGMENTNAMEFORMATPARAMETERID, @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE, @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATE, @EXCLUDE;

    while (@@FETCH_STATUS = 0)
    begin
      set @TARGETSEGMENTID = null;

      --Create the segment...

      exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTATIONSEGMENT] 
        @ID = @TARGETSEGMENTID output,
        @CHANGEAGENTID = @CHANGEAGENTID,
        @SEGMENTATIONIDMARKETINGPLANBRIEFIDSEQUENCE = @SEGMENTATIONID,
        @MARKETINGPLANBRIEFID = null,
        @SEGMENTID = @SEGMENTID,
        @CODE = @CODE,
        @TESTSEGMENTCODE = @TESTSEGMENTCODE,
        @PACKAGEID = @PACKAGEID,
        @PACKAGECODE = @PACKAGECODE,
        @RESPONSERATE = @RESPONSERATE,
        @GIFTAMOUNT = @GIFTAMOUNT,
        @SAMPLESIZE = 100,
        @SAMPLESIZETYPECODE = 0,
        @SAMPLESIZEMETHODCODE = 0,
        @SEQUENCE = @SEQUENCE,
        @ASKLADDERID = @ASKLADDERID,
        @SAMPLESIZEEXCLUDEREMAINDER = 1,
        @OVERRIDEADDRESSPROCESSING = @OVERRIDEADDRESSPROCESSING,
        @USEADDRESSPROCESSING = @SEGMENTUSEADDRESSPROCESSING,
        @ADDRESSPROCESSINGOPTIONID = @SEGMENTADDRESSPROCESSINGOPTIONID,
        @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
        @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
        @NAMEFORMATPARAMETERID = @SEGMENTNAMEFORMATPARAMETERID,
        @CODEVALUEID = @CODEVALUEID,
        @TESTSEGMENTCODEVALUEID = @TESTSEGMENTCODEVALUEID,
        @PACKAGECODEVALUEID = @PACKAGECODEVALUEID,
        @ITEMLIST = null,
        @CHANNELSOURCECODE = @CHANNELSOURCECODE,
        @CHANNELSOURCECODEVALUEID = @CHANNELSOURCECODEVALUEID,
        @EXCLUDESPOUSE = 0,
        @OVERRIDEBUSINESSUNITS = 0,
        @BUSINESSUNITS = null,
        @CURRENTAPPUSERID = @CURRENTAPPUSERID,
        @EXCLUDE = @EXCLUDE;

      fetch next from SEGMENTCURSOR into @SEGMENTID, @CODE, @CODEVALUEID, @PACKAGEID, @PACKAGECODE, @PACKAGECODEVALUEID, @CHANNELSOURCECODE, @CHANNELSOURCECODEVALUEID, @RESPONSERATE, @GIFTAMOUNT, @ASKLADDERID, @SEQUENCE, @TESTSEGMENTCODE, @TESTSEGMENTCODEVALUEID, @OVERRIDEADDRESSPROCESSING, @SEGMENTUSEADDRESSPROCESSING, @SEGMENTADDRESSPROCESSINGOPTIONID, @SEGMENTNAMEFORMATPARAMETERID, @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE, @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATE, @EXCLUDE;
    end;

    close SEGMENTCURSOR;
    deallocate SEGMENTCURSOR;
  end try

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

  return 0;