USP_DATAFORMTEMPLATE_EDIT_OPPORTUNITYAMOUNTBRACKETSGROUPBASECURRENCY

The save procedure used by the edit dataform template "Opportunity Amount Brackets Group 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_OPPORTUNITYAMOUNTBRACKETSGROUPBASECURRENCY (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @BASECURRENCYID uniqueidentifier
)
as
    set nocount on;

    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
        declare @OLDBASECURRENCYID uniqueidentifier;
    select
      @OLDBASECURRENCYID = BASECURRENCYID
    from
      dbo.OPPORTUNITYAMOUNTBRACKETGROUP
    where
      ID = @ID
    order by
      DATEADDED desc;    

    update dbo.OPPORTUNITYAMOUNTBRACKETGROUP
    set
            BASECURRENCYID = @BASECURRENCYID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where 
      ID = @ID;

        update dbo.OPPORTUNITYAMOUNTBRACKET 
    set
            BASECURRENCYID = @BASECURRENCYID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where 
      OPPORTUNITYBRACKETGROUPID = @ID;

    --If the user saves without changing the base currency, don't update org amounts

    if @OLDBASECURRENCYID <> @BASECURRENCYID
    begin
      declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

      --If the new base currency is the org currency, org amount equals amount, so don't bother getting

            --    an exchange rate or doing a conversion.

      if @BASECURRENCYID = @ORGANIZATIONCURRENCYID
      begin
        update dbo.OPPORTUNITYAMOUNTBRACKET
          set
            ORGANIZATIONLOWERLIMIT = LOWERLIMIT,
            ORGANIZATIONEXCHANGERATEID = null,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
          where
            OPPORTUNITYBRACKETGROUPID = @ID;
      end
      else
      begin
        declare @DATEADDED datetime;
        declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;

        select
          @DATEADDED = DATEADDED
        from
          dbo.OPPORTUNITYAMOUNTBRACKETGROUP
        where
          ID = @ID;

        set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @DATEADDED, 0, null);

        update dbo.OPPORTUNITYAMOUNTBRACKET
        set
          ORGANIZATIONLOWERLIMIT = dbo.UFN_CURRENCY_CONVERT(LOWERLIMIT, @ORGANIZATIONEXCHANGERATEID),
          ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID,
          CHANGEDBYID = @CHANGEAGENTID,
          DATECHANGED = @CURRENTDATE
        where
          OPPORTUNITYBRACKETGROUPID = @ID;
      end
    end

    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;