USP_MKTSEGMENTWHITEMAIL_ADDSOURCECODEMAP

Populates the source code map tables for a given white mail segment.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTWHITEMAIL_ADDSOURCECODEMAP]
(
  @SEGMENTID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null
)
as
  set nocount on;

  declare @QUERYVIEWCATALOGID uniqueidentifier;
  declare @SOURCECODEID uniqueidentifier;
  declare @SEGMENTATIONID uniqueidentifier;
  declare @SQL nvarchar(max);
  declare @CURRENTDATE datetime;

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

    set @CURRENTDATE = getdate();

    select
      @QUERYVIEWCATALOGID = [MKTSEGMENT].[QUERYVIEWCATALOGID],
      @SOURCECODEID = [MKTSEGMENTWHITEMAIL].[SOURCECODEID],
      @SEGMENTATIONID = [MKTSEGMENTWHITEMAIL].[SEGMENTATIONID]
    from dbo.[MKTSEGMENTWHITEMAIL]
    inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTWHITEMAIL].[ID]
    left outer join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTWHITEMAIL].[SEGMENTATIONID]
    where [MKTSEGMENTWHITEMAIL].[ID] = @SEGMENTID;

    insert into dbo.[MKTSOURCECODEMAP]
    (
      [ID],
      [WHITEMAILSEGMENTID],
      [DONORQUERYVIEWCATALOGID],
      [SOURCECODEID],
      [SOURCECODE],
      [SEGMENTATIONID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    )
    values
    (
      newid(),
      @SEGMENTID,
      @QUERYVIEWCATALOGID,
      @SOURCECODEID,
      dbo.[UFN_MKTSOURCECODE_BUILDCODE](@SEGMENTID, null, null),
      @SEGMENTATIONID,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    );

    insert into dbo.[MKTSOURCECODEMAPPART] (
      [ID],
      [MKTSOURCECODEMAPID],
      [MKTSOURCECODEPARTDEFINITIONID],
      [CODE],
      [MKTSOURCECODEPARTDEFINITIONVALUESID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    )
    select
      newid() as [ID],
      [MKTSOURCECODEMAP].[ID] as [MKTSOURCECODEMAPID],
      [MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID],
      dbo.[UFN_MKTSOURCECODE_BUILDCODE](@SEGMENTID, null, [MKTSOURCECODEITEM].[ID]) as [CODE],
      case when [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE] = 0
           then case when exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [SOURCECODEITEMID] = [MKTSOURCECODEITEM].[ID] and [WHITEMAILSEGMENTID] = @SEGMENTID)
                     then (select [PARTDEFINITIONVALUESID] from dbo.[MKTSOURCECODEPART] where [SOURCECODEITEMID] = [MKTSOURCECODEITEM].[ID] and [WHITEMAILSEGMENTID] = @SEGMENTID)
                     else (select [PARTDEFINITIONVALUESID] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID)
                end
           when [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE] = 1
           then [MKTSEGMENT].[PARTDEFINITIONVALUESID]
           when [MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE] = 5
           then case when exists (select top 1 1 from dbo.[MKTSOURCECODEPART] where [SOURCECODEITEMID] = [MKTSOURCECODEITEM].[ID] and [WHITEMAILSEGMENTID] = @SEGMENTID)
                     then (select [PARTDEFINITIONVALUESID] from dbo.[MKTSOURCECODEPART] where [SOURCECODEITEMID] = [MKTSOURCECODEITEM].[ID] and [WHITEMAILSEGMENTID] = @SEGMENTID)
                     else (select [PARTDEFINITIONVALUESID] from dbo.[MKTSOURCECODEPART] where [SEGMENTATIONID] = @SEGMENTATIONID and [SOURCECODEITEMID] = [MKTSOURCECODEITEM].[ID] and [SEGMENTATIONSEGMENTID] is null and [SEGMENTATIONTESTSEGMENTID] is null and [WHITEMAILSEGMENTID] is null)
                end
           else 
                (select [PARTDEFINITIONVALUESID] from dbo.[MKTSOURCECODEPART] where [SOURCECODEITEMID] = [MKTSOURCECODEITEM].[ID] and [WHITEMAILSEGMENTID] = @SEGMENTID)
      end as [MKTSOURCECODEPARTDEFINITIONVALUESID],
      @CHANGEAGENTID as [ADDEDBYID],
      @CHANGEAGENTID as [CHANGEDBYID],
      @CURRENTDATE as [DATEADDED],
      @CURRENTDATE as [DATECHANGED]
    from dbo.[MKTSOURCECODEMAP]
    inner join dbo.[MKTSOURCECODEITEM] on [MKTSOURCECODEITEM].[SOURCECODEID] = [MKTSOURCECODEMAP].[SOURCECODEID]
    inner join dbo.[MKTSOURCECODEPARTDEFINITION] on [MKTSOURCECODEPARTDEFINITION].[ID] = [MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID]
    inner join dbo.[MKTSEGMENTWHITEMAIL] on [MKTSEGMENTWHITEMAIL].[ID] = [MKTSOURCECODEMAP].[WHITEMAILSEGMENTID]
    inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTWHITEMAIL].[ID]
    where [MKTSOURCECODEMAP].[WHITEMAILSEGMENTID] = @SEGMENTID;
  end try

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

  return 0;