USP_DATAFORMTEMPLATE_ADD_MKTPACKAGE_MAIL

The save procedure used by the add dataform template "Package Add Form (Mail Channel)".

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
@CODE nvarchar(10) IN Code
@COST money IN Base cost
@COSTDISTRIBUTIONMETHODCODE tinyint IN Distribution
@SITEID uniqueidentifier IN Site
@CATEGORYCODEID uniqueidentifier IN Category
@LETTERCODEID uniqueidentifier IN Letter
@EXPORTDEFINITIONID uniqueidentifier IN Export definition
@CONTEXT nvarchar(128) IN Input parameter indicating the context ID for the record being added.
@CODEVALUEID uniqueidentifier IN Code value ID
@CHANNELSOURCECODE nvarchar(10) IN Channel source code
@CHANNELSOURCECODEVALUEID uniqueidentifier IN Channel code value ID
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_ADD_MKTPACKAGE_MAIL]
(
  @ID uniqueidentifier = null output,
  @CHANGEAGENTID uniqueidentifier = null,
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255) = '',
  @CODE nvarchar(10) = '',
  @COST money = 0,
  @COSTDISTRIBUTIONMETHODCODE tinyint = 0,
  @SITEID uniqueidentifier = null,
  @CATEGORYCODEID uniqueidentifier = null,
  @LETTERCODEID uniqueidentifier = null,
  @EXPORTDEFINITIONID uniqueidentifier = null,
  @CONTEXT nvarchar(128),
  @CODEVALUEID uniqueidentifier = null,
  @CHANNELSOURCECODE nvarchar(10) = '',
  @CHANNELSOURCECODEVALUEID uniqueidentifier = null,
  @CURRENTAPPUSERID uniqueidentifier = null
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @BASECURRENCYID uniqueidentifier;
  declare @ORGANIZATIONCURRENCYID uniqueidentifier;
  declare @CURRENCYEXCHANGERATEID uniqueidentifier;
  declare @ORGANIZATIONAMOUNT money;

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

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

    set @CURRENTDATE = getdate();

    if (select [EXPORTDEFINITIONID] from dbo.[LETTERCODE] where [ID] = @LETTERCODEID) is not null
      set @EXPORTDEFINITIONID = null;

    exec dbo.[USP_MKTPACKAGE_PARSECONTEXTID] @CONTEXT, null, @BASECURRENCYID output, null;

    if @BASECURRENCYID is null
      set @BASECURRENCYID = dbo.[UFN_APPUSER_GETBASECURRENCY](@CURRENTAPPUSERID);

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

    if (@ORGANIZATIONCURRENCYID = @BASECURRENCYID)
      set @ORGANIZATIONAMOUNT = @COST;
    else
      begin
        set @CURRENCYEXCHANGERATEID = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);
        set @ORGANIZATIONAMOUNT = dbo.[UFN_CURRENCY_CONVERT](@COST, @CURRENCYEXCHANGERATEID);
      end

    insert into dbo.[MKTPACKAGE] (
      [ID],
      [NAME],
      [DESCRIPTION],
      [CODE],
      [PARTDEFINITIONVALUESID],
      [CHANNELSOURCECODE],
      [CHANNELPARTDEFINITIONVALUESID],
      [CHANNELCODE],
      [PACKAGECATEGORYCODEID],
      [UNITCOST],
      [COSTDISTRIBUTIONMETHODCODE],
      [SITEID],
      [LETTERCODEID],
      [EXPORTDEFINITIONID],
      [ADDEDBYID],
      [CHANGEDBYID],
      [DATEADDED],
      [DATECHANGED],
      [BASECURRENCYID],
      [ORGANIZATIONUNITCOST],
      [CURRENCYEXCHANGERATEID]
    ) values (
      @ID,
      @NAME,
      @DESCRIPTION,
      @CODE,
      @CODEVALUEID,
      @CHANNELSOURCECODE,
      @CHANNELSOURCECODEVALUEID,
      0, -- Mail

      @CATEGORYCODEID,
      @COST,
      @COSTDISTRIBUTIONMETHODCODE,
      @SITEID,
      @LETTERCODEID,
      @EXPORTDEFINITIONID,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE,
      @BASECURRENCYID,
      @ORGANIZATIONAMOUNT,
      @CURRENCYEXCHANGERATEID
    );
  end try

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

  return 0;