USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTLISTBYSELECTION

The save procedure used by the add dataform template "List Segment By Selection Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@SEGMENTCATEGORYCODEID uniqueidentifier IN Category
@CODE nvarchar(10) IN Code
@PARENTSEGMENTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@SELECTIONS xml IN Selections
@RENTALQUANTITY int IN Rental quantity
@RENTALCOSTADJUSTMENT money IN Rental cost adjustment
@RENTALCOSTBASISCODE tinyint IN Rental cost basis code
@EXCHANGEQUANTITY int IN Exchange quantity
@EXCHANGECOSTADJUSTMENT money IN Exchange cost adjustment
@EXCHANGECOSTBASISCODE tinyint IN Exchange cost basis code
@GROUPS xml IN Groups
@CODEVALUEID uniqueidentifier IN Code value ID
@SITEID uniqueidentifier IN Site

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTLISTBYSELECTION]
(
  @ID uniqueidentifier = null output,
  @CHANGEAGENTID uniqueidentifier = null,    
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255) = '',
  @SEGMENTCATEGORYCODEID uniqueidentifier = null,
  @CODE nvarchar(10) = '',
  @PARENTSEGMENTID uniqueidentifier,
  @SELECTIONS xml,
  @RENTALQUANTITY int = 0,
  @RENTALCOSTADJUSTMENT money = 0,
  @RENTALCOSTBASISCODE tinyint = 1, -- per thousand

  @EXCHANGEQUANTITY int = 0,
  @EXCHANGECOSTADJUSTMENT money = 0,
  @EXCHANGECOSTBASISCODE tinyint = 1, -- per thousand

  @GROUPS xml = null,
  @CODEVALUEID uniqueidentifier = null,
  @SITEID uniqueidentifier = null
)
as
  set nocount on;

  declare @SEGMENTLISTID uniqueidentifier;
  declare @RECORDSOURCEID uniqueidentifier;
  declare @LISTID uniqueidentifier;
  declare @CURRENTDATE datetime;
  declare @BASECURRENCYID uniqueidentifier;
  declare @CURRENCYEXCHANGERATEID uniqueidentifier;
  declare @ORGANIZATIONRENTALCOSTADJUSTMENT money;
  declare @ORGANIZATIONEXCHANGECOSTADJUSTMENT money;
  declare @ORGANIZATIONCURRENCYID uniqueidentifier;

  begin try
    if @ID is null
      set @ID = newid();

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

    set @CURRENTDATE = getdate();
    set @SEGMENTLISTID = newid();

    select
      @RECORDSOURCEID = [MKTLIST].[RECORDSOURCEID],
      @LISTID = [MKTLIST].[ID]
    from dbo.[MKTSEGMENT]
    inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
    inner join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
    where [MKTSEGMENT].[ID] = @PARENTSEGMENTID;

    select
      @BASECURRENCYID = [MKTLIST].[BASECURRENCYID]
    from dbo.[MKTLIST]
    where [MKTLIST].[ID] = @LISTID;

    set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();

    if (@ORGANIZATIONCURRENCYID = @BASECURRENCYID)
    begin
      set @ORGANIZATIONRENTALCOSTADJUSTMENT = @RENTALCOSTADJUSTMENT;
      set @ORGANIZATIONEXCHANGECOSTADJUSTMENT = @EXCHANGECOSTADJUSTMENT;
    end
    else
    begin
      set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);
      set @ORGANIZATIONRENTALCOSTADJUSTMENT = dbo.[UFN_CURRENCY_CONVERT](@RENTALCOSTADJUSTMENT, @CURRENCYEXCHANGERATEID);
      set @ORGANIZATIONEXCHANGECOSTADJUSTMENT = dbo.[UFN_CURRENCY_CONVERT](@EXCHANGECOSTADJUSTMENT, @CURRENCYEXCHANGERATEID);
    end

    --Save the segment, using segment type 2 (list)...

    insert into dbo.[MKTSEGMENT] (
      [ID],
      [NAME],
      [DESCRIPTION],
      [SITEID],
      [SEGMENTCATEGORYCODEID],
      [CODE],
      [PARTDEFINITIONVALUESID],
      [QUERYVIEWCATALOGID],
      [SEGMENTTYPECODE],
      [BASECURRENCYID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    ) values (
      @ID,
      @NAME,
      @DESCRIPTION,
      @SITEID,
      @SEGMENTCATEGORYCODEID,
      @CODE,
      @CODEVALUEID,
      @RECORDSOURCEID,
      2,
      @BASECURRENCYID,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    );

    insert into dbo.[MKTSEGMENTLIST] (
      [ID],
      [SEGMENTID],
      [LISTID],
      [TYPECODE],
      [STATUSCODE],
      [PARENTSEGMENTID],
      [RENTALQUANTITY],
      [RENTALCOSTADJUSTMENT],
      [RENTALCOSTBASISCODE],
      [EXCHANGEQUANTITY],
      [EXCHANGECOSTADJUSTMENT],
      [EXCHANGECOSTBASISCODE],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED],
      [BASECURRENCYID],
      [ORGANIZATIONRENTALCOSTADJUSTMENT],
      [ORGANIZATIONEXCHANGECOSTADJUSTMENT],
      [CURRENCYEXCHANGERATEID]
    ) values (
      @SEGMENTLISTID,
      @ID,
      @LISTID,
      0,
      3,
      @PARENTSEGMENTID,
      @RENTALQUANTITY,
      @RENTALCOSTADJUSTMENT,
      @RENTALCOSTBASISCODE,
      @EXCHANGEQUANTITY,
      @EXCHANGECOSTADJUSTMENT,
      @EXCHANGECOSTBASISCODE,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE,
      @BASECURRENCYID,
      @ORGANIZATIONRENTALCOSTADJUSTMENT,
      @ORGANIZATIONEXCHANGECOSTADJUSTMENT,
      @CURRENCYEXCHANGERATEID
    );

    --Update the segment to hold the current list segment record ID...

    update dbo.[MKTSEGMENT] set
      [CURRENTSEGMENTLISTID] = @SEGMENTLISTID,
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] = @ID;

    --Save all the selections...

    exec dbo.[USP_MKTSEGMENT_GETSELECTIONS_ADDFROMXML] @ID, null, @SELECTIONS, @CHANGEAGENTID, @CURRENTDATE;

    --Save all the groups...

    exec dbo.[USP_MKTSEGMENT_GETGROUPS_ADDFROMXML] @ID, @GROUPS, @CHANGEAGENTID, @CURRENTDATE;

    --Insert a parameter set for the refresh process for this segment...

    insert into dbo.[MKTSEGMENTREFRESHPROCESS] (
      [ID],
      [SEGMENTID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED]
    ) values (
      newid(),
      @ID,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    );

    --Create the view and add it to the IDSETREGISTER...

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

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

  return 0;