USP_DATAFORMTEMPLATE_EDIT_OPPORTUNITYAMOUNTBRACKETSGROUP

The save procedure used by the edit dataform template "Opportunity Amount Brackets Group Edit Data 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
@OPPORTUNITYAMOUNTBRACKETS xml IN Amount brackets
@SITES xml IN Sites

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_OPPORTUNITYAMOUNTBRACKETSGROUP (
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255),
  @OPPORTUNITYAMOUNTBRACKETS xml,
  @SITES xml
)
as

  set nocount on;

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

  declare @CURRENTDATE datetime
  set @CURRENTDATE = getdate()

  begin try        
    -- check if there's a default site

    declare @ISDEFAULTGROUP smallint;
    declare @SITECOUNT smallint;

    select @ISDEFAULTGROUP = COUNT(ID)
    from OPPORTUNITYAMOUNTBRACKETGROUP
    where ID not in (select distinct OPPORTUNITYAMOUNTBRACKETGROUPID from dbo.OPPORTUNITYAMOUNTBRACKETSITES)
    and ID <> @ID;

    declare @TempTbl table (
      SITEID uniqueidentifier
    );
    insert into @TempTbl
      select
        SITEID
      from 
        dbo.UFN_OPPORTUNITYAMOUNTBRACKETSITES_FROMITEMLISTXML(@SITES);
    select @SITECOUNT = count(SITEID) from @TempTbl

    if @ISDEFAULTGROUP > 0 and @SITECOUNT = 0 
    begin
       raiserror('DEFAULTGROUP_EXISTS', 13, 1);
    end

    --Check for duplicate lower limits  

    declare @TempTbl2 table (
      LOWERLIMIT money
    );
    insert into @TempTbl2
      select
        LOWERLIMIT
      from 
        dbo.UFN_OPPORTUNITYAMOUNTBRACKETS_FROMITEMLISTXML(@OPPORTUNITYAMOUNTBRACKETS);
    if exists(select LOWERLIMIT from @TempTbl2 group by LOWERLIMIT having COUNT(*) > 1)
      begin
         raiserror('LOWERLIMIT_DUPLICATES', 13, 1);
      end      

    update 
      dbo.OPPORTUNITYAMOUNTBRACKETGROUP
    set 
      NAME= @NAME,
      DESCRIPTION = @DESCRIPTION,        
      CHANGEDBYID = @CHANGEAGENTID,
      DATECHANGED = @CURRENTDATE
    where 
      ID = @ID    

    -- Process the brackets xml to calculate organization amounts.

    --Multicurrency - SlyyMu 8/19/10 - Get the updated exchange rate.    

    declare @BASECURRENCYID uniqueidentifier;
    declare @ORGANIZATIONCURRENCYID uniqueidentifier;    
    declare @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier;
    declare @DATE datetime;

    select
      @BASECURRENCYID = BASECURRENCYID,  
      @DATE = DATEADDED      
    from
      dbo.OPPORTUNITYAMOUNTBRACKETGROUP
    where
      ID = @ID;

    exec dbo.USP_CURRENCY_GETCURRENCYVALUES
        @AMOUNT=null,
        @DATE=@DATE,
        @BASECURRENCYID=@BASECURRENCYID,
        @BASEEXCHANGERATEID=null,
        @TRANSACTIONCURRENCYID=null,
        @BASEAMOUNT=null,
        @ORGANIZATIONCURRENCYID=@ORGANIZATIONCURRENCYID,
        @ORGANIZATIONAMOUNT=null,
        @ORGANIZATIONEXCHANGERATEID=null,
        @LOOKUPORGANIZATIONEXCHANGERATE=0,
        @BASETOORGANIZATIONEXCHANGERATEID=@BASETOORGANIZATIONEXCHANGERATEID output;

    set @OPPORTUNITYAMOUNTBRACKETS = dbo.UFN_OPPORTUNITYAMOUNTBRACKET_CONVERTAMOUNTSINXML(@OPPORTUNITYAMOUNTBRACKETS, @BASECURRENCYID, @BASETOORGANIZATIONEXCHANGERATEID); 

    -- update the values from the amount ranges grid 

    exec dbo.USP_OPPORTUNITYAMOUNTBRACKET_GETBRACKETS_2_UPDATEFROMXML @ID, @OPPORTUNITYAMOUNTBRACKETS, @CHANGEAGENTID

    -- update sites                 

    exec dbo.USP_OPPORTUNITYAMOUNTBRACKETSITE_GETSITES_UPDATEFROMXML @ID, @SITES, @CHANGEAGENTID;    

  end try

  begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
  end catch

return 0;