USP_DATAFORMTEMPLATE_EDIT_MKTMARKETINGPLANBASECURRENCY

The save procedure used by the edit dataform template "Marketing Plan Base Currency 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.
@BASECURRENCYID uniqueidentifier IN Base currency

Definition

Copy

CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTMARKETINGPLANBASECURRENCY] (
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @BASECURRENCYID uniqueidentifier
)
as
  begin
    set nocount on;

    declare @CURRENTDATE datetime;
    declare @OLDBASECURRENCYID uniqueidentifier;
    declare @ORGANIZATIONCURRENCYID uniqueidentifier;

    if exists (select top 1 1 from dbo.[MKTMARKETINGPLANBRIEF] where [MARKETINGPLANID] = @ID and [PACKAGEID] is not null)
      raiserror('BBERR_PLANBASECURRENCYEDIT_HASPACKAGES', 13, 1);

    declare @USEDBYMAILING bit;

    set @USEDBYMAILING = case when exists (select * 
                                           from dbo.[MKTMARKETINGPLAN]
                                           inner join [MKTMARKETINGPLANITEM] on [MKTMARKETINGPLANITEM].[MARKETINGPLANID] = [MKTMARKETINGPLAN].[ID]
                                           left join [MKTSEGMENTATION] on [MKTSEGMENTATION].[MARKETINGPLANITEMID] = [MKTMARKETINGPLANITEM].[ID]
                                           where [MKTMARKETINGPLAN].[ID] = @ID and [MKTSEGMENTATION].[ID] is not null) then 1 else 0 end;
    if @USEDBYMAILING = 1
      raiserror('BBERR_PLANBASECURRENCYEDIT_HASMARKETINGEFFORT', 13, 1);

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

    set @CURRENTDATE = getdate();

    begin try
      select 
        @OLDBASECURRENCYID = [BASECURRENCYID]
      from dbo.[MKTMARKETINGPLAN]
      where [ID] = @ID;

      if @OLDBASECURRENCYID <> @BASECURRENCYID
        begin
          update dbo.[MKTMARKETINGPLAN] set
            [BASECURRENCYID] = @BASECURRENCYID,
            [CHANGEDBYID] = @CHANGEAGENTID,
            [DATECHANGED] = @CURRENTDATE
          where [ID] = @ID;            

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

          if @BASECURRENCYID = @ORGANIZATIONCURRENCYID
            begin
              update dbo.[MKTMARKETINGPLANITEM] set
                [BASECURRENCYID] = @BASECURRENCYID,
                [CURRENCYEXCHANGERATEID] = null,
                [ORGANIZATIONBUDGETAMOUNT] = [BUDGETAMOUNT],
                [ORGANIZATIONTOTALREVENUEGOAL] = [TOTALREVENUEGOAL],
                [CHANGEDBYID] = @CHANGEAGENTID,
                [DATECHANGED] = @CURRENTDATE
              where [MARKETINGPLANID] = @ID;

              update dbo.[MKTMARKETINGPLANITEMEXPENSE] set
                [BASECURRENCYID] = @BASECURRENCYID,
                [CURRENCYEXCHANGERATEID] = null,
                [ORGANIZATIONAMOUNT] = [AMOUNT],
                [ORGANIZATIONBUDGETAMOUNT] = [BUDGETAMOUNT],
                [CHANGEDBYID] = @CHANGEAGENTID,
                [DATECHANGED] = @CURRENTDATE
              where [MARKETINGPLANITEMID] in (select [ID] from dbo.[MKTMARKETINGPLANITEM] where [MARKETINGPLANID] = @ID);

              update dbo.[MKTMARKETINGPLANBRIEF] set
                [BASECURRENCYID] = @BASECURRENCYID,
                [CURRENCYEXCHANGERATEID] = null,
                [ORGANIZATIONUNITCOST] = [UNITCOST],
                [ORGANIZATIONBUDGETAMOUNT] = [BUDGETAMOUNT],
                [ORGANIZATIONTOTALREVENUEGOAL] = [TOTALREVENUEGOAL],
                [ORGANIZATIONAVERAGEREVENUEGOAL] = [AVERAGEREVENUEGOAL],
                [CHANGEDBYID] = @CHANGEAGENTID,
                [DATECHANGED] = @CURRENTDATE
              where [MARKETINGPLANID] = @ID;
            end
          else
            begin
              update dbo.[MKTMARKETINGPLANITEM] set
                [BASECURRENCYID] = @BASECURRENCYID,
                [CURRENCYEXCHANGERATEID] = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null),
                [ORGANIZATIONBUDGETAMOUNT] = dbo.[UFN_CURRENCY_CONVERT]([BUDGETAMOUNT], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
                [ORGANIZATIONTOTALREVENUEGOAL] = dbo.[UFN_CURRENCY_CONVERT]([TOTALREVENUEGOAL], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
                [CHANGEDBYID] = @CHANGEAGENTID,
                [DATECHANGED] = @CURRENTDATE
              where [MARKETINGPLANID] = @ID;

              update dbo.[MKTMARKETINGPLANITEMEXPENSE] set
                [BASECURRENCYID] = @BASECURRENCYID,
                [CURRENCYEXCHANGERATEID] = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null),
                [ORGANIZATIONAMOUNT] = dbo.[UFN_CURRENCY_CONVERT]([AMOUNT], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
                [ORGANIZATIONBUDGETAMOUNT] = dbo.[UFN_CURRENCY_CONVERT]([BUDGETAMOUNT], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
                [CHANGEDBYID] = @CHANGEAGENTID,
                [DATECHANGED] = @CURRENTDATE
              where [MARKETINGPLANITEMID] in (select [ID] from dbo.[MKTMARKETINGPLANITEM] where [MARKETINGPLANID] = @ID);

              update dbo.[MKTMARKETINGPLANBRIEF] set
                [BASECURRENCYID] = @BASECURRENCYID,
                [CURRENCYEXCHANGERATEID] = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null),
                [ORGANIZATIONUNITCOST] = dbo.[UFN_CURRENCY_CONVERT]([UNITCOST], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
                [ORGANIZATIONBUDGETAMOUNT] = dbo.[UFN_CURRENCY_CONVERT]([BUDGETAMOUNT], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
                [ORGANIZATIONTOTALREVENUEGOAL] = dbo.[UFN_CURRENCY_CONVERT]([TOTALREVENUEGOAL], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
                [ORGANIZATIONAVERAGEREVENUEGOAL] = dbo.[UFN_CURRENCY_CONVERT]([AVERAGEREVENUEGOAL], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
                [CHANGEDBYID] = @CHANGEAGENTID,
                [DATECHANGED] = @CURRENTDATE
              where [MARKETINGPLANID] = @ID;
            end
        end
    end try

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

    return 0;
  end