UFN_PLEDGE_GETREVALUEDORGANIZATIONBALANCEASOF
Returns the unpaid balance, as a revalued organization currency amount, for a given pledge as of a given date.
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PLEDGEID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN | |
@USEORIGINALRATE | bit | IN |
Definition
Copy
CREATE function dbo.UFN_PLEDGE_GETREVALUEDORGANIZATIONBALANCEASOF
(
@PLEDGEID uniqueidentifier,
@ASOFDATE datetime,
@USEORIGINALRATE bit = 0
)
returns money
with execute as caller
as begin
declare @RESULT money;
declare @REVALUATIONID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
select
@BASEEXCHANGERATEID = FINANCIALTRANSACTION.BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = FINANCIALTRANSACTION.ORGEXCHANGERATEID,
@BASECURRENCYID = CURRENCYSET.BASECURRENCYID,
@TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID
from dbo.FINANCIALTRANSACTION
inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
where FINANCIALTRANSACTION.ID = @PLEDGEID;
if @USEORIGINALRATE = 0
begin
set @REVALUATIONID = dbo.UFN_REVENUE_GETREVALUATIONASOF(@PLEDGEID, @ASOFDATE);
end
-- If we looked for and found a revaluation for the given date, get its rate.
-- Otherwise, we want to use the original rate, or didn't find a revaluation
-- for the given date, so we just use the rate off the revenue.
if @REVALUATIONID is not null
begin
select
@BASEEXCHANGERATEID = BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
from dbo.COMMITMENTREVALUATION
where ID = @REVALUATIONID;
end
declare @TRANSACTIONBALANCE money;
declare @BASEBALANCE money;
set @TRANSACTIONBALANCE = dbo.UFN_PLEDGE_GETBALANCEASOF(@PLEDGEID, @ASOFDATE);
if @TRANSACTIONCURRENCYID = @BASECURRENCYID
set @BASEBALANCE = @TRANSACTIONBALANCE;
else
set @BASEBALANCE = dbo.UFN_CURRENCY_CONVERT(@TRANSACTIONBALANCE, @BASEEXCHANGERATEID);
-- Convert base or transaction to org.
declare @ORGANIZATIONAMOUNTORIGINCODE tinyint;
select top 1
@ORGANIZATIONAMOUNTORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE
from
dbo.MULTICURRENCYCONFIGURATION;
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if (@BASECURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 0)
set @RESULT = @BASEBALANCE;
else if (@TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 1)
set @RESULT = @TRANSACTIONBALANCE;
else
begin
set @RESULT = dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(@BASEBALANCE, @ORGANIZATIONEXCHANGERATEID, @TRANSACTIONBALANCE);
end
return @RESULT;
end