USP_MKTSEGMENTWHITEMAIL_SAVE

Saves a white mail segment.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@CURRENTAPPUSERID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@SEGMENTATIONID uniqueidentifier IN
@QUERYVIEWCATALOGID uniqueidentifier IN
@NAME nvarchar(100) IN
@DESCRIPTION nvarchar(255) IN
@SEGMENTCATEGORYCODEID uniqueidentifier IN
@STATUSCODE tinyint IN
@ACTIVEFROM date IN
@ACTIVETO date IN
@SOURCECODEID uniqueidentifier IN
@SOURCECODEITEMLIST xml IN
@CODEVALUEID uniqueidentifier IN
@CODE nvarchar(10) IN
@GROUPS xml IN
@SITEID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTWHITEMAIL_SAVE]
(
  @ID uniqueidentifier = null output,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,    
  @SEGMENTATIONID uniqueidentifier,
  @QUERYVIEWCATALOGID uniqueidentifier,
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255),
  @SEGMENTCATEGORYCODEID uniqueidentifier,
  @STATUSCODE tinyint,
  @ACTIVEFROM date,
  @ACTIVETO date,
  @SOURCECODEID uniqueidentifier,
  @SOURCECODEITEMLIST xml,
  @CODEVALUEID uniqueidentifier,
  @CODE nvarchar(10),
  @GROUPS xml,
  @SITEID uniqueidentifier = null
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @SOURCECODE nvarchar(50);
  declare @BASECURRENCYID uniqueidentifier;

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

  if @CODE is null set @CODE = '';

  begin try
    if exists (select top 1 1 from dbo.[MKTSEGMENTWHITEMAIL] where [ID] = @ID)
      begin
        set @SOURCECODE = dbo.[UFN_MKTSOURCECODE_BUILDCODE](@ID, null, null);

        exec dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTSEGMENT_3]
          @ID = @ID,
          @CHANGEAGENTID = @CHANGEAGENTID,
          @NAME = @NAME,
          @DESCRIPTION = @DESCRIPTION,
          @SEGMENTCATEGORYCODEID = @SEGMENTCATEGORYCODEID,
          @CODE = @CODE,
          @QUERYVIEWCATALOGID = @QUERYVIEWCATALOGID,
          @SELECTIONS = null,
          @GROUPS = @GROUPS,
          @ALLOWCODEUPDATE = 1,
          @CODEVALUEID = @CODEVALUEID,
          @SITEID = @SITEID;

        select @CURRENTDATE = [DATECHANGED] from dbo.[MKTSEGMENT] where [ID] = @ID;

        update dbo.[MKTSEGMENTWHITEMAIL] set
          [STATUSCODE] = @STATUSCODE,
          [ACTIVEFROM] = @ACTIVEFROM,
          [ACTIVETO] = @ACTIVETO,
          [SOURCECODEID] = @SOURCECODEID,
          [CHANGEDBYID] = @CHANGEAGENTID,
          [DATECHANGED] = @CURRENTDATE
        where [ID] = @ID;

        exec dbo.[USP_MKTSOURCECODEPART_WHITEMAILSEGMENT_GETITEMLIST2_UPDATEFROMXML] @ID, @SOURCECODEITEMLIST, @CHANGEAGENTID, @CURRENTDATE;

        -- update the source code map with any changes to the source code

        exec dbo.[USP_MKTSEGMENTWHITEMAIL_UPDATESOURCECODEMAP] @ID, @CHANGEAGENTID;

        -- if the source code has changed...

        if dbo.[UFN_MKTSOURCECODE_BUILDCODE](@ID, null, null) <> @SOURCECODE
          -- ...clear any cached calculations

          exec dbo.[USP_MKTSEGMENTWHITEMAILCACHE_CLEAR] @ID, @CHANGEAGENTID;
      end
    else
      begin
        exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENT]
          @ID = @ID output,
          @CHANGEAGENTID = @CHANGEAGENTID,
          @QUERYVIEWCATALOGID = @QUERYVIEWCATALOGID,
          @NAME = @NAME,
          @DESCRIPTION = @DESCRIPTION,
          @CODE = @CODE,
          @SELECTIONS = null,
          @GROUPS = @GROUPS,
          @SEGMENTTYPECODE = 9,
          @SEGMENTCATEGORYCODEID = @SEGMENTCATEGORYCODEID,
          @CODEVALUEID = @CODEVALUEID,
          @SITEID = @SITEID;

        set @BASECURRENCYID = dbo.[UFN_APPUSER_GETBASECURRENCY](@CURRENTAPPUSERID);
        select @CURRENTDATE = [DATEADDED] from dbo.[MKTSEGMENT] where [ID] = @ID;

        update dbo.[MKTSEGMENT] set
          [BASECURRENCYID] = @BASECURRENCYID,
          [DATECHANGED] = @CURRENTDATE
        where [ID] = @ID;

        insert into dbo.[MKTSEGMENTWHITEMAIL]
        (
          [ID],
          [STATUSCODE],
          [ACTIVEFROM],
          [ACTIVETO],
          [SOURCECODEID],
          [SEGMENTATIONID],
          [ADDEDBYID],
          [CHANGEDBYID],
          [DATEADDED],
          [DATECHANGED]
        )
        values
        (
          @ID,
          @STATUSCODE,
          @ACTIVEFROM,
          @ACTIVETO,
          @SOURCECODEID,
          case when @SEGMENTATIONID <> '00000000-0000-0000-0000-000000000000' then @SEGMENTATIONID else null end,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE
        );

        exec dbo.[USP_MKTSOURCECODEPART_WHITEMAILSEGMENT_GETITEMLIST2_ADDFROMXML] @ID, @SOURCECODEITEMLIST, @CHANGEAGENTID, @CURRENTDATE;

        -- add information about the source code to the source code map

        exec dbo.[USP_MKTSEGMENTWHITEMAIL_ADDSOURCECODEMAP] @ID, @CHANGEAGENTID;

        -- insert a parameter set for the white mail segment refresh process

        exec dbo.[USP_MKTSEGMENTWHITEMAILREFRESHPROCESS_SAVE] @ID, @CHANGEAGENTID;
      end
  end try

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

  return 0;