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