USP_DATAFORMTEMPLATE_EDIT_MKTSEGMENTLISTBYSELECTION

The save procedure used by the edit dataform template "List Segment By Selection Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@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
@CODEVALUEID uniqueidentifier IN Code value ID
@ALLOWCODEUPDATE bit IN Allow code update
@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

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTSEGMENTLISTBYSELECTION]
(
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255),
  @SEGMENTCATEGORYCODEID uniqueidentifier,
  @CODE nvarchar(10),
  @CODEVALUEID uniqueidentifier,
  @ALLOWCODEUPDATE bit,
  @SELECTIONS xml,
  @RENTALQUANTITY int,
  @RENTALCOSTADJUSTMENT money,
  @RENTALCOSTBASISCODE tinyint,
  @EXCHANGEQUANTITY int,
  @EXCHANGECOSTADJUSTMENT money,
  @EXCHANGECOSTBASISCODE tinyint,
  @GROUPS xml
)
as
  set nocount on;

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

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

    set @CURRENTDATE = getdate();

    select
      @SEGMENTLISTID = [CURRENTSEGMENTLISTID]
    from dbo.[MKTSEGMENT]
    where [ID] = @ID;

    /* Save the segment */
    update dbo.[MKTSEGMENT] set 
      [NAME] = @NAME,
      [DESCRIPTION] = @DESCRIPTION,
      [SEGMENTCATEGORYCODEID] = @SEGMENTCATEGORYCODEID,
      [CODE] = (case when @ALLOWCODEUPDATE = 1 then @CODE else [CODE] end),
      [PARTDEFINITIONVALUESID] = (case when @ALLOWCODEUPDATE = 1 then @CODEVALUEID else [PARTDEFINITIONVALUESID] end),
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] = @ID;

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

    select @DATEADDED = [DATEADDED], @CURRENCYEXCHANGERATEID = [CURRENCYEXCHANGERATEID] from dbo.[MKTSEGMENTLIST] where [ID] = @SEGMENTLISTID;

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

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

    update dbo.[MKTSEGMENTLIST] set
      [RENTALQUANTITY] = @RENTALQUANTITY,
      [RENTALCOSTADJUSTMENT] = @RENTALCOSTADJUSTMENT,
      [RENTALCOSTBASISCODE] = @RENTALCOSTBASISCODE,
      [EXCHANGEQUANTITY] = @EXCHANGEQUANTITY,
      [EXCHANGECOSTADJUSTMENT] = @EXCHANGECOSTADJUSTMENT,
      [EXCHANGECOSTBASISCODE] = @EXCHANGECOSTBASISCODE,
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE,
      [ORGANIZATIONRENTALCOSTADJUSTMENT] = @ORGANIZATIONRENTALCOSTADJUSTMENT,
      [ORGANIZATIONEXCHANGECOSTADJUSTMENT] = @ORGANIZATIONEXCHANGECOSTADJUSTMENT,
      [CURRENCYEXCHANGERATEID] = @CURRENCYEXCHANGERATEID
    where [ID] = @SEGMENTLISTID;

    /* Save all the new selections */
    exec dbo.[USP_MKTSEGMENT_GETSELECTIONS_UPDATEFROMXML] @ID, null, @SELECTIONS, @CHANGEAGENTID, @CURRENTDATE;

    /* Save all the groups */
    exec dbo.[USP_MKTSEGMENT_GETGROUPS_UPDATEFROMXML] @ID, @GROUPS, @CHANGEAGENTID, @CURRENTDATE;

    /* Create the VIEW and add it to the IDSETREGISTER */
    exec dbo.[USP_MKTSEGMENT_CREATEORUPDATEVIEW] @ID, @CHANGEAGENTID;

    /* Update the segment with the selected code */
    if @ALLOWCODEUPDATE = 1
      exec dbo.[USP_MKTSEGMENT_UPDATECODE] @ID, @CODE, @CODEVALUEID, @CHANGEAGENTID, 1;
  end try

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

  return 0;