USP_MKTMEMBERSHIPMAILINGPROCESS_CREATEMAILING

Creates a marketing effort from a membership renewal effort template.

Parameters

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

Definition

Copy


CREATE procedure dbo.[USP_MKTMEMBERSHIPMAILINGPROCESS_CREATEMAILING]
(
  @MEMBERSHIPMAILINGTEMPLATEID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @SEGMENTATIONID uniqueidentifier output,
  @DATETEXT nvarchar(50),
  @CHANGEAGENTID 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 @RUNSEGMENTATIONSEGMENTREFRESHPROCESS bit;
    declare @CACHESOURCEANALYSISRULEDATA bit;
    declare @EXPORTDESCRIPTION nvarchar(255);
    declare @MAILEXPORTDEFINITIONID uniqueidentifier;
    declare @EMAILEXPORTDEFINITIONID uniqueidentifier;
    declare @PHONEEXPORTDEFINITIONID uniqueidentifier;
    declare @BASECURRENCYID uniqueidentifier;
    declare @RUNMARKETINGEXCLUSIONSREPORT bit;

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

    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 = 2,
      @EXCLUSIONDATETYPECODE = @EXCLUSIONDATETYPECODE,
      @EXCLUSIONASOFDATE = @EXCLUSIONASOFDATE,
      @EXCLUDEDECEASED = @EXCLUDEDECEASED,
      @EXCLUDEINACTIVE = @EXCLUDEINACTIVE,
      @EXCLUSIONS = @EXCLUSIONS,
      @USEADDRESSPROCESSING = @USEADDRESSPROCESSING,
      @ADDRESSPROCESSINGOPTIONID = @ADDRESSPROCESSINGOPTIONID,
      @NAMEFORMATPARAMETERID = @NAMEFORMATPARAMETERID,
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE,
      @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE = @ADDRESSPROCESSINGOPTIONSEASONALASOFDATE,
      @ACTIVATIONKPIS = null,
      @USEKPISASDEFAULT = 0,
      @APPEALINFORMATION = null,
      @RUNACTIVATEANDEXPORT = @RUNACTIVATEANDEXPORT,
      @EXPORTDESCRIPTION = @EXPORTDESCRIPTION,
      @MAILEXPORTDEFINITIONID = @MAILEXPORTDEFINITIONID,
      @EMAILEXPORTDEFINITIONID = @EMAILEXPORTDEFINITIONID,
      @PHONEEXPORTDEFINITIONID = @PHONEEXPORTDEFINITIONID,
      @HOUSEHOLDINGINCLUDEINDIVIDUALSWITHNOHOUSEHOLD = 0,
      @HOUSEHOLDINGINCLUDEHOUSEHOLDSWITHNOMEMBERS = 0,
      @HOUSEHOLDINGONERECORDPERHOUSEHOLD = 0,
      @CODEVALUEID = @CODEVALUEID,
      @RUNSEGMENTATIONSEGMENTREFRESHPROCESS = @RUNSEGMENTATIONSEGMENTREFRESHPROCESS,
      @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.[MKTMEMBERSHIPMAILINGTEMPLATEFILTERSELECTION]
    where [MEMBERSHIPMAILINGTEMPLATEID] = @MEMBERSHIPMAILINGTEMPLATEID;


    -- 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 [MEMBERSHIPMAILINGTEMPLATEID] = @MEMBERSHIPMAILINGTEMPLATEID;


    -- copy the seeds


    insert into dbo.[MKTSEGMENTATIONSEED] (
      [ID],
      [SEGMENTATIONID],
      [SEEDID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    )
    select
      newid(),
      @SEGMENTATIONID,
      [SEEDID],
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    from dbo.[MKTMEMBERSHIPMAILINGTEMPLATESEED]
    where [MEMBERSHIPMAILINGTEMPLATEID] = @MEMBERSHIPMAILINGTEMPLATEID;


    -- 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.[MKTMEMBERSHIPMAILINGTEMPLATEASKLADDEROVERRIDE]
    where [MEMBERSHIPMAILINGTEMPLATEID] = @MEMBERSHIPMAILINGTEMPLATEID;


    -- 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
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[SEGMENTID],
        isnull([MKTMEMBERSHIPMAILINGTEMPLATERULE].[CODE], '') as [CODE],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[PARTDEFINITIONVALUESID] as [CODEVALUEID],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[PACKAGEID],
        isnull([MKTPACKAGE].[CODE], '') as [PACKAGECODE],
        [MKTPACKAGE].[PARTDEFINITIONVALUESID] as [PACKAGECODEVALUEID],
        isnull([MKTPACKAGE].[CHANNELSOURCECODE], '') as [CHANNELSOURCECODE],
        [MKTPACKAGE].[CHANNELPARTDEFINITIONVALUESID] as [CHANNELSOURCECODEVALUEID],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[RESPONSERATE],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[GIFTAMOUNT],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[ASKLADDERID],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[SEQUENCE],
        isnull([MKTMEMBERSHIPMAILINGTEMPLATERULE].[TESTSEGMENTCODE], '') as [TESTSEGMENTCODE],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[TESTPARTDEFINITIONVALUESID] as [TESTSEGMENTCODEVALUEID],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[OVERRIDEADDRESSPROCESSING],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[USEADDRESSPROCESSING],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[ADDRESSPROCESSINGOPTIONID],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[NAMEFORMATPARAMETERID],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[ADDRESSPROCESSINGOPTIONSEASONALASOFDATE],
        [MKTMEMBERSHIPMAILINGTEMPLATERULE].[EXCLUDE]
      from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE]
      left outer join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTMEMBERSHIPMAILINGTEMPLATERULE].[PACKAGEID]
      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTMEMBERSHIPMAILINGTEMPLATERULE].[SEGMENTID]
      where [MKTMEMBERSHIPMAILINGTEMPLATERULE].[MEMBERSHIPMAILINGTEMPLATEID] = @MEMBERSHIPMAILINGTEMPLATEID
      order by [MKTMEMBERSHIPMAILINGTEMPLATERULE].[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 standard segment

      exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTATIONSEGMENT] 
        @TARGETSEGMENTID output
        @CHANGEAGENTID
        @SEGMENTATIONID
        null
        @SEGMENTID
        @CODE
        @TESTSEGMENTCODE
        @PACKAGEID
        @PACKAGECODE
        @RESPONSERATE
        @GIFTAMOUNT
        100
        0
        0
        @SEQUENCE
        @ASKLADDERID
        1
        @OVERRIDEADDRESSPROCESSING
        @SEGMENTUSEADDRESSPROCESSING
        @SEGMENTADDRESSPROCESSINGOPTIONID
        @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATETYPECODE
        @SEGMENTADDRESSPROCESSINGOPTIONSEASONALASOFDATE
        @SEGMENTNAMEFORMATPARAMETERID,
        @CODEVALUEID,
        @TESTSEGMENTCODEVALUEID,
        @PACKAGECODEVALUEID,
        null,
        @CHANNELSOURCECODE,
        @CHANNELSOURCECODEVALUEID,
        0,
        0,
        null,
        null,
        @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;