USP_MKTSEGMENTGROUP_COPY

Executes the "Segment Group: Copy" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT Input parameter indicating the ID of the record being updated.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the update.

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTGROUP_COPY]
(
  @ID uniqueidentifier output,
  @CHANGEAGENTID uniqueidentifier
)
as
  set nocount on;

  declare @SOURCEID uniqueidentifier;
  declare @TARGETID uniqueidentifier;
  declare @NAME nvarchar(100);
  declare @SITEID uniqueidentifier;
  declare @CURRENTDATE datetime;
  declare @BASECURRENCYID uniqueidentifier;

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

  set @SOURCEID = @ID;
  set @TARGETID = newid();
  set @CURRENTDATE = getdate();

  begin try
    --Get a unique segment group name...

    select 
      @NAME = dbo.[UFN_MKTSEGMENTGROUP_GETUNIQUENAME](@TARGETID, [NAME], null),
      @SITEID = [SITEID]
    from dbo.[MKTSEGMENTGROUP]
    where [ID] = @ID;

    select @BASECURRENCYID = [BASECURRENCYID] from dbo.[MKTSEGMENTGROUP] where [ID] = @SOURCEID;

    --Create a new segment group...

    insert into dbo.[MKTSEGMENTGROUP] (
      [ID],
      [NAME],
      [SITEID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED],
      [BASECURRENCYID]
    ) values (
      @TARGETID,
      @NAME,
      @SITEID,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE,
      @BASECURRENCYID
    );

    --Copy the segments from the old group into the new group...

    insert into dbo.[MKTGROUPSEGMENTS] (
      [ID],
      [SEGMENTID],
      [SEGMENTGROUPID],
      [SEQUENCE],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    )
    select
      newid(),
      [SEGMENTID],
      @TARGETID,
      [SEQUENCE],
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    from dbo.[MKTGROUPSEGMENTS]
    where [SEGMENTGROUPID] = @SOURCEID;

    set @ID = @TARGETID;

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

  end try

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

  return 0;