UFN_RECOGNITIONCREDIT_GETAMOUNTINCURRENCY

Returns the amount of a given recognition credit in the given currency.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@RECOGNITIONCREDITID uniqueidentifier IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


create function dbo.UFN_RECOGNITIONCREDIT_GETAMOUNTINCURRENCY
(
  @RECOGNITIONCREDITID uniqueidentifier,
  @CURRENCYID uniqueidentifier
)
returns money
as
begin
  declare @AMOUNT money = 0;
  declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

  if (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
  begin
    select
      @AMOUNT = RECOGNITIONCREDIT.ORGANIZATIONAMOUNT
    from
      dbo.RECOGNITIONCREDIT
    where
      RECOGNITIONCREDIT.ID = @RECOGNITIONCREDITID;
  end
  else
  begin
    declare @RECORDBASECURRENCYID uniqueidentifier;
    declare @RECORDDATE datetime;
    declare @BASEAMOUNT money;
    declare @ORGANIZATIONAMOUNT money;

    select
      @RECORDBASECURRENCYID = RECOGNITIONCREDIT.BASECURRENCYID,
      @RECORDDATE = REVENUE.DATE,
      @BASEAMOUNT = RECOGNITIONCREDIT.AMOUNT,
      @ORGANIZATIONAMOUNT = RECOGNITIONCREDIT.ORGANIZATIONAMOUNT
    from
      dbo.RECOGNITIONCREDIT
    inner join
      dbo.DONORCHALLENGEENCUMBERED on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBEREDID
    inner join
      dbo.REVENUESPLIT on REVENUESPLIT.ID = DONORCHALLENGEENCUMBERED.REVENUESPLITID
    inner join
      dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
    where
      RECOGNITIONCREDIT.ID = @RECOGNITIONCREDITID and
      RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 0; --only donor challenge recognition credit has a REVENUE.DATE right now


    if @CURRENCYID = @RECORDBASECURRENCYID
      set @AMOUNT = @BASEAMOUNT;
    else
    begin
      declare @CURRENCYEXCHANGERATEID uniqueidentifier;

      set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@ORGANIZATIONCURRENCYID, @CURRENCYID, @RECORDDATE, 1, null);
      if (@CURRENCYEXCHANGERATEID is not null)
        set @AMOUNT = dbo.UFN_CURRENCY_CONVERT(@ORGANIZATIONAMOUNT, @CURRENCYEXCHANGERATEID);
      else
      begin
        set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, @ORGANIZATIONCURRENCYID, @RECORDDATE, 1, null);
        set @AMOUNT = dbo.UFN_CURRENCY_CONVERTINVERSE(@ORGANIZATIONAMOUNT, @CURRENCYEXCHANGERATEID);
      end
    end
  end 

  return @AMOUNT;
end