USP_REVENUE_UPDATERECOGNITION

Updates recognition credit based on changes to revenue.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@OLDSPLITSXML xml IN
@UPDATETYPE tinyint IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@OLDRECOGNITIONSXML xml IN
@APPLICATIONTYPE tinyint IN
@APPLICATIONID uniqueidentifier IN
@TRANSACTIONTYPE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_REVENUE_UPDATERECOGNITION
(
  @REVENUEID uniqueidentifier,
  @OLDSPLITSXML xml,
  @UPDATETYPE tinyint, -- 0 = no update, 1 = update proportionally, 2 = update based on defaults

  @CHANGEAGENTID uniqueidentifier,
  @CHANGEDATE datetime,
  @OLDRECOGNITIONSXML xml,
  @APPLICATIONTYPE tinyint = null,
  @APPLICATIONID uniqueidentifier = null,
  @TRANSACTIONTYPE tinyint = null
)
as
begin
set nocount on;
  declare @REVENUEGIVENANONYMOUSLY bit
  declare @CONSTITUENTID uniqueidentifier
  declare @DATE datetime
  declare @ORGANIZATIONCURRENCYID uniqueidentifier;
  declare @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier;
  declare @BASECURRENCYID uniqueidentifier;
  declare @ORGEXCHANGERATEID uniqueidentifier;
  declare @DEFAULTANONYMOUSRECOGNITION bit = 0;

  declare @NEWSPLITS table (
    ID uniqueidentifier,
    AMOUNT money,
    BASECURRENCYID uniqueidentifier,
    ORGANIZATIONAMOUNT money,
    ORGANIZATIONEXCHANGERATEID uniqueidentifier);

  declare @OLDRECOGNITIONS table (
    ID uniqueidentifier,
    CONSTITUENTID uniqueidentifier,
    AMOUNT money,
    EFFECTIVEDATE datetime,
    REVENUERECOGNITIONTYPECODEID uniqueidentifier,
    REVENUESPLITID uniqueidentifier);

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

  if @CHANGEDATE is null
    set @CHANGEDATE = getdate()

  begin try
    -- Get currency settings

    select
      @REVENUEGIVENANONYMOUSLY = REVENUE_EXT.GIVENANONYMOUSLY,
      @CONSTITUENTID = R.CONSTITUENTID,
      @DATE = R.DATE,
      @BASECURRENCYID = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID),
      @ORGEXCHANGERATEID = R.ORGEXCHANGERATEID
    from dbo.FINANCIALTRANSACTION R inner join dbo.PDACCOUNTSYSTEM on R.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
    inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
    inner join dbo.REVENUE_EXT on R.ID = REVENUE_EXT.ID
    where R.ID = @REVENUEID

    insert @NEWSPLITS(ID, AMOUNT, BASECURRENCYID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
    select FINANCIALTRANSACTIONLINEITEM.ID, FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT, @BASECURRENCYID, FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT, @ORGEXCHANGERATEID
    from dbo.FINANCIALTRANSACTIONLINEITEM 
    inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = FINANCIALTRANSACTIONLINEITEM.ID
    where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID  
    and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
    and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null

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

    --Read the default anonymous recognition setting value

    select @DEFAULTANONYMOUSRECOGNITION = DEFAULTANONYMOUSRECOGNITION
    from dbo.RECOGNITIONDEFAULT

    -- In case old recognitions have been deleted, use the XML to determine old amounts.

    if @OLDRECOGNITIONSXML is not null
      insert @OLDRECOGNITIONS (ID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID, REVENUESPLITID)
      select
        ID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID, REVENUESPLITID
      from
        dbo.UFN_REVENUE_GETRECOGNITIONS_FORREVENUE_FROMITEMLISTXML(@OLDRECOGNITIONSXML)
    else
      insert @OLDRECOGNITIONS (ID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID, REVENUESPLITID)
      select
        ID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID, REVENUESPLITID
      from
        dbo.UFN_REVENUE_GETRECOGNITIONS_FORREVENUE(@REVENUEID)

    -- Delete old recognitions, if they exist

    declare @CONTEXTCACHE varbinary(128);
    set @CONTEXTCACHE = CONTEXT_INFO();
    set context_info @changeagentid;

    declare @ACTUALDATESFORRECOGNITONS table
    (
      REVENUERECOGNITIONID uniqueidentifier,
      REVENUESPLITID uniqueidentifier,
      DATEADDED datetime,
      DATECHANGED datetime
    );

    insert into @ACTUALDATESFORRECOGNITONS (REVENUERECOGNITIONID,REVENUESPLITID,DATEADDED,DATECHANGED)
    select RR.ID, RR.REVENUESPLITID, RR.DATEADDED, RR.DATECHANGED from REVENUERECOGNITION RR
    inner join dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@OLDSPLITSXML) SPLITS on RR.REVENUESPLITID = SPLITS.ID;

    if @UPDATETYPE <> 0
    begin
     delete from dbo.REVENUERECOGNITION
     where REVENUESPLITID in (select ID from dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@OLDSPLITSXML))
    end

    --Remove other recognition credits

    delete dbo.RECOGNITIONCREDIT
    from dbo.RECOGNITIONCREDIT
    inner join dbo.DONORCHALLENGEENCUMBERED on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
    where RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1
    and DONORCHALLENGEENCUMBERED.REVENUESPLITID in (select ID from dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@OLDSPLITSXML))
    and @UPDATETYPE <> 0;

    --Remove credits on the donor challenge claim to match edit form

    delete dbo.REVENUERECOGNITION
    from dbo.REVENUERECOGNITION
    inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUERECOGNITION.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
    inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
    inner join dbo.DONORCHALLENGEENCUMBERED on FINANCIALTRANSACTION.ID = DONORCHALLENGEENCUMBERED.MATCHEDREVENUEID
    where DONORCHALLENGEENCUMBERED.REVENUESPLITID in (select ID from dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@OLDSPLITSXML))
    and FINANCIALTRANSACTION.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID
    and REVENUESPLIT_EXT.DESIGNATIONID = DONORCHALLENGEENCUMBERED.DESIGNATIONID
    and @UPDATETYPE <> 0;

    if @CONTEXTCACHE is not null
      set context_info @CONTEXTCACHE

      if @UPDATETYPE = 0 -- No update, restore the original recognitions

    begin
      merge dbo.REVENUERECOGNITION as target
      using (select OLDREC.ID
          ,REVENUESPLIT.ID [REVENUESPLITID]
          ,OLDREC.CONSTITUENTID
          ,OLDREC.AMOUNT
          ,OLDREC.REVENUERECOGNITIONTYPECODEID
          ,OLDREC.EFFECTIVEDATE
        from @NEWSPLITS REVENUESPLIT
        inner join @OLDRECOGNITIONS OLDREC on REVENUESPLIT.ID = OLDREC.REVENUESPLITID) as source
      on source.ID = target.ID
      when matched then
        update set
          REVENUESPLITID = source.REVENUESPLITID
          ,CONSTITUENTID = source.CONSTITUENTID
          ,AMOUNT = source.AMOUNT
          ,EFFECTIVEDATE = source.EFFECTIVEDATE
          ,REVENUERECOGNITIONTYPECODEID = source.REVENUERECOGNITIONTYPECODEID
          ,CHANGEDBYID = @CHANGEAGENTID
          ,DATECHANGED = coalesce((select DATECHANGED from @ACTUALDATESFORRECOGNITONS where REVENUERECOGNITIONID = source.id), @CHANGEDATE)
          ,ORGANIZATIONAMOUNT = 
            case
            when @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
            then dbo.UFN_CURRENCY_CONVERT(source.AMOUNT, @BASETOORGANIZATIONEXCHANGERATEID)
            else source.AMOUNT
            end
          ,ORGANIZATIONEXCHANGERATEID = @BASETOORGANIZATIONEXCHANGERATEID
      when not matched by target then
        insert
        (
          ID,
          REVENUESPLITID, 
          CONSTITUENTID, 
          AMOUNT,
          EFFECTIVEDATE,
          REVENUERECOGNITIONTYPECODEID,
          ADDEDBYID, 
          CHANGEDBYID, 
          DATEADDED, 
          DATECHANGED,
          BASECURRENCYID,
          ORGANIZATIONAMOUNT,
          ORGANIZATIONEXCHANGERATEID
        )
        values(
          source.ID,
          source.REVENUESPLITID,
          source.CONSTITUENTID,
          source.AMOUNT,
          source.EFFECTIVEDATE,
          source.REVENUERECOGNITIONTYPECODEID,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          coalesce((select DATEADDED from @ACTUALDATESFORRECOGNITONS where REVENUERECOGNITIONID = source.id), @CHANGEDATE),
          coalesce((select DATECHANGED from @ACTUALDATESFORRECOGNITONS where REVENUERECOGNITIONID = source.id), @CHANGEDATE),
          @BASECURRENCYID,
          case
            when @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
              then dbo.UFN_CURRENCY_CONVERT(source.AMOUNT, @BASETOORGANIZATIONEXCHANGERATEID)
            else source.AMOUNT
          end,
          @BASETOORGANIZATIONEXCHANGERATEID);
    end
   else if @UPDATETYPE = 1 -- Update proportionally

    begin
      merge dbo.REVENUERECOGNITION as target
      using (select isnull(OLDREC.ID, NEWID()) ID
          ,RS.ID [REVENUESPLITID]
          ,OLDREC.CONSTITUENTID
          ,dbo.UFN_CURRENCY_ROUND((RS.AMOUNT*(OLDREC.AMOUNT/OLDSPLIT.AMOUNT)),BC.DECIMALDIGITS, BC.ROUNDINGTYPECODE) AMOUNT
          ,OLDREC.REVENUERECOGNITIONTYPECODEID
        from @NEWSPLITS RS
        inner join dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@OLDSPLITSXML) OLDSPLIT on RS.ID = OLDSPLIT.ID
        inner join @OLDRECOGNITIONS OLDREC on OLDSPLIT.ID = OLDREC.REVENUESPLITID
        inner join dbo.CURRENCY BC on RS.BASECURRENCYID = BC.ID
        where OLDSPLIT.AMOUNT > 0) as source
      on source.ID = target.ID
      when matched then
        update set
          REVENUESPLITID = source.REVENUESPLITID
          ,CONSTITUENTID = source.CONSTITUENTID
          ,AMOUNT = source.AMOUNT
          ,EFFECTIVEDATE = @DATE
          ,REVENUERECOGNITIONTYPECODEID = source.REVENUERECOGNITIONTYPECODEID
          ,CHANGEDBYID = @CHANGEAGENTID
          ,DATECHANGED = @CHANGEDATE
          ,ORGANIZATIONAMOUNT = case
            when @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
              then dbo.UFN_CURRENCY_CONVERT(source.AMOUNT, @BASETOORGANIZATIONEXCHANGERATEID)
            else source.AMOUNT
          end
          ,ORGANIZATIONEXCHANGERATEID = @BASETOORGANIZATIONEXCHANGERATEID
      when not matched by target then
        insert
        (
          ID,
          REVENUESPLITID, 
          CONSTITUENTID, 
          AMOUNT,
          EFFECTIVEDATE,
          REVENUERECOGNITIONTYPECODEID,
          ADDEDBYID, 
          CHANGEDBYID, 
          DATEADDED, 
          DATECHANGED,
          BASECURRENCYID,
          ORGANIZATIONAMOUNT,
          ORGANIZATIONEXCHANGERATEID
        )
        values(
          source.ID,
          source.REVENUESPLITID,
          source.CONSTITUENTID,
          source.AMOUNT,
          @DATE,
          source.REVENUERECOGNITIONTYPECODEID,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CHANGEDATE
          @CHANGEDATE,
          @BASECURRENCYID,
          case
          when @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
          then dbo.UFN_CURRENCY_CONVERT(source.AMOUNT, @BASETOORGANIZATIONEXCHANGERATEID)
          else source.AMOUNT
          end,
          @BASETOORGANIZATIONEXCHANGERATEID);
      end
    else if @UPDATETYPE = 2 -- Update using defaults

    begin
      declare @ORIGINALDONORID uniqueidentifier;
      declare @ORIGINALDONATIONDATE datetime;
      declare @ORIGINALGIFTID uniqueidentifier;

      if @APPLICATIONTYPE = 7
      begin
        declare @AUTOADDMGPAYMENTCREDIT bit
        declare @PAYMENTDEFAULTCREDITTYPEID uniqueidentifier
        select @AUTOADDMGPAYMENTCREDIT = ADDRECOGNITIONCREDITSONMGPAYMENTAPPLY,
            @PAYMENTDEFAULTCREDITTYPEID = 
            case MGPAYMENTAPPLYRECOGNITIONTYPECODE
          when 0 then PAYMENTREVENUERECOGNITIONTYPECODEID
            when 1 then null 
            end
        from MATCHINGGIFTPREFERENCEINFO;

        if @AUTOADDMGPAYMENTCREDIT = 1
        begin
          select 
          @ORIGINALDONORID=FINANCIALTRANSACTION.CONSTITUENTID,
          @ORIGINALDONATIONDATE=FINANCIALTRANSACTION.DATE,
          @ORIGINALGIFTID = FINANCIALTRANSACTION.ID
          from FINANCIALTRANSACTION
          inner join REVENUEMATCHINGGIFT on REVENUEMATCHINGGIFT.MGSOURCEREVENUEID = FINANCIALTRANSACTION.ID
          inner join REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
          where REVENUEMATCHINGGIFT.ID=@APPLICATIONID and (REVENUE_EXT.GIVENANONYMOUSLY = 0 or @DEFAULTANONYMOUSRECOGNITION = 1)

          if @ORIGINALDONORID is not null
          begin
            declare @CREATEDSPLITS xml
            set @CREATEDSPLITS =    (select
                FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT as AMOUNT,
                REVENUESPLIT_EXT.DESIGNATIONID,
                FINANCIALTRANSACTIONLINEITEM.ID,
                FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID,
                REVENUESPLIT_EXT.APPLICATIONCODE,
                REVENUESPLIT_EXT.TYPECODE,
                FINANCIALTRANSACTION.TRANSACTIONCURRENCYID
                from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                where FINANCIALTRANSACTIONLINEITEM.ID in (select ID from @NEWSPLITS)
                for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64
            )
            set @CREATEDSPLITS = dbo.UFN_REVENUESPLIT_CONVERTAMOUNTSINXML(@CREATEDSPLITS, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), null, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), null)

            if (select count(*) from dbo.MATCHINGGIFTPREFERENCEINFO where MGPAYMENTAPPLYRECOGNITIONTYPECODE = 0) > 0
                exec dbo.USP_RECOGNITIONCREDIT_ADDDEFAULTSFORMGSPLITS @CREATEDSPLITS, @ORIGINALDONORID, @ORIGINALDONATIONDATE, @PAYMENTDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CHANGEDATE;

            if (select count(*) from dbo.MATCHINGGIFTPREFERENCEINFO where MGPAYMENTAPPLYRECOGNITIONTYPECODE = 1) > 0
                exec dbo.USP_RECOGNITIONCREDIT_ADDTOGROUPMEMBERS @CREATEDSPLITS, @ORIGINALDONORID, @ORIGINALDONATIONDATE, @ORIGINALGIFTID, @PAYMENTDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CHANGEDATE;
            end
        end
      end
      else if @TRANSACTIONTYPE = 3 -- Matching gift claim

      begin
        --If recognition credits should be added automatically when a MG claim is created, add them.

        declare @AUTOADDMGCLAIMCREDIT bit;
        declare @CLAIMDEFAULTCREDITTYPEID uniqueidentifier;
        declare @AUTOADDMGCLAIMCREDITFORORG bit;
        declare @CLAIMDEFAULTCREDITTYPEIDFORORG uniqueidentifier;
        select 
        @AUTOADDMGCLAIMCREDIT = ADDRECOGNITIONCREDITSONMGCLAIMADD,
        @CLAIMDEFAULTCREDITTYPEID = 
            case MGCLAIMADDRECOGNITIONTYPECODE
            when 0 then CLAIMREVENUERECOGNITIONTYPECODEID
            when 1 then null
            end,
        @AUTOADDMGCLAIMCREDITFORORG = ADDRECOGNITIONCREDITSTOMATCHINGORGONMGCLAIMADD,
        @CLAIMDEFAULTCREDITTYPEIDFORORG = MATCHINGORGCLAIMREVENUERECOGNITIONTYPECODEID
        from MATCHINGGIFTPREFERENCEINFO;

        declare @MGSPLITS xml;
        if @AUTOADDMGCLAIMCREDIT = 1 or @AUTOADDMGCLAIMCREDITFORORG = 1
        set @MGSPLITS = dbo.UFN_REVENUE_GETSPLITS_2_TOITEMLISTXML(@REVENUEID);

        if @AUTOADDMGCLAIMCREDIT = 1
        begin
        select @ORIGINALDONORID=FINANCIALTRANSACTION.CONSTITUENTID,
          @ORIGINALDONATIONDATE=FINANCIALTRANSACTION.DATE,
          @ORIGINALGIFTID = FINANCIALTRANSACTION.ID
        from dbo.FINANCIALTRANSACTION inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
        inner join REVENUEMATCHINGGIFT on REVENUEMATCHINGGIFT.MGSOURCEREVENUEID = FINANCIALTRANSACTION.ID
        where REVENUEMATCHINGGIFT.ID=@REVENUEID and (REVENUE_EXT.GIVENANONYMOUSLY = 0 or @DEFAULTANONYMOUSRECOGNITION = 1)

        if @ORIGINALDONORID is not null
        begin                        
          if (select count(*) from dbo.MATCHINGGIFTPREFERENCEINFO where MGCLAIMADDRECOGNITIONTYPECODE = 0) > 0
          begin                    
            exec dbo.USP_RECOGNITIONCREDIT_ADDDEFAULTSFORMGSPLITS @MGSPLITS, @ORIGINALDONORID, @ORIGINALDONATIONDATE, @CLAIMDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CHANGEDATE;
          end

          if (select count(*) from dbo.MATCHINGGIFTPREFERENCEINFO where MGCLAIMADDRECOGNITIONTYPECODE = 1) > 0
          begin
            exec dbo.USP_RECOGNITIONCREDIT_ADDTOGROUPMEMBERS @MGSPLITS, @ORIGINALDONORID, @ORIGINALDONATIONDATE, @ORIGINALGIFTID, @CLAIMDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CHANGEDATE, 1;
          end
        end
      end

      declare @GIFTISANONYMOUS bit = 0;
      select @GIFTISANONYMOUS = GIVENANONYMOUSLY from dbo.REVENUE_EXT where ID = @REVENUEID
      if @AUTOADDMGCLAIMCREDITFORORG = 1 and (@GIFTISANONYMOUS = 0 or @DEFAULTANONYMOUSRECOGNITION = 1)
      exec dbo.USP_RECOGNITIONCREDIT_ADDDEFAULTSFORMGSPLITS @MGSPLITS, @CONSTITUENTID, @DATE, @CLAIMDEFAULTCREDITTYPEIDFORORG, @CHANGEAGENTID, @CHANGEDATE;
    end
    else
    begin
      insert into dbo.REVENUERECOGNITION
      (
          ID,
          REVENUESPLITID, 
          CONSTITUENTID, 
          AMOUNT,
          EFFECTIVEDATE,
          REVENUERECOGNITIONTYPECODEID,
          ADDEDBYID, 
          CHANGEDBYID, 
          DATEADDED, 
          DATECHANGED,
          BASECURRENCYID,
          ORGANIZATIONAMOUNT,
          ORGANIZATIONEXCHANGERATEID
      )
      select
          NEWID(),
          FINANCIALTRANSACTIONLINEITEM.ID,
          RECOGNITIONS.CONSTITUENTID,
          RECOGNITIONS.AMOUNT,
          @DATE,
          RECOGNITIONS.REVENUERECOGNITIONTYPECODEID,
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CHANGEDATE
          @CHANGEDATE,
          @BASECURRENCYID,
          case
          when @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
          then dbo.UFN_CURRENCY_CONVERT(RECOGNITIONS.AMOUNT, @BASETOORGANIZATIONEXCHANGERATEID)
          else RECOGNITIONS.AMOUNT
          end,
          @BASETOORGANIZATIONEXCHANGERATEID ORGANIZATIONEXCHANGERATEID
      from dbo.FINANCIALTRANSACTIONLINEITEM
          cross apply dbo.UFN_REVENUEDETAIL_GETDEFAULTRECOGNITIONS(@REVENUEGIVENANONYMOUSLY, @CONSTITUENTID, FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT, @DATE, null) as RECOGNITIONS
      where
          FINANCIALTRANSACTIONLINEITEM.ID in (select ID from @NEWSPLITS)
      end
    end

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