UFN_PLEDGE_GETPASTDUEAMOUNTINCURRENCY
Returns the past due amount in currency
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PLEDGEID | uniqueidentifier | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_PLEDGE_GETPASTDUEAMOUNTINCURRENCY
(
@PLEDGEID uniqueidentifier,
@CURRENCYID uniqueidentifier
)
returns money
with execute as caller
as
begin
declare @RESULT money;
declare @DUEDATE datetime;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @CURRENTDATE datetime = getdate();
set @DUEDATE = dbo.UFN_DATE_GETEARLIESTTIME(GetDate());
select @RESULT =
isnull(
(select
sum(dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID))
from dbo.INSTALLMENT
where INSTALLMENT.REVENUEID = @PLEDGEID
--The "GETLATESTTIME" date function has been inlined here for performance (the part with "dateadd(ms, -003...")...
and dateadd(ms, -003, dateadd(d, 1, cast(cast(INSTALLMENT.DATE as date) as datetime))) < @DUEDATE),
0);
select
@TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID
from dbo.INSTALLMENT
where INSTALLMENT.REVENUEID = @PLEDGEID;
set @CURRENCYID = isnull(@CURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY());
if @CURRENCYID is not null and @TRANSACTIONCURRENCYID is not null and @CURRENCYID <> @TRANSACTIONCURRENCYID
begin
declare @CURRENCYEXCHANGERATEID uniqueidentifier;
set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@TRANSACTIONCURRENCYID, @CURRENCYID, @CURRENTDATE, 1, null);
if (@CURRENCYEXCHANGERATEID is not null)
set @RESULT = dbo.UFN_CURRENCY_CONVERT(@RESULT, @CURRENCYEXCHANGERATEID);
else
set @RESULT = dbo.UFN_CURRENCY_CONVERTINVERSE(@RESULT, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, @TRANSACTIONCURRENCYID, @CURRENTDATE, 1, null));
end
return @RESULT;
end