UFN_RECURRINGGIFT_GETPASTDUEAMOUNTINCURRENCY_2
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@ASOFDATE | date | IN | |
@CURRENCYID | uniqueidentifier | IN | |
@IGNORESTATUS | bit | IN |
Definition
Copy
create function dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNTINCURRENCY_2(
@REVENUEID uniqueidentifier,
@ASOFDATE date = null,
@CURRENCYID uniqueidentifier,
@IGNORESTATUS bit = 0
)
returns money
with execute as caller
as begin
declare @PASTDUE money;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @CURRENTDATE datetime = getdate();
declare @RGSTATUS tinyint;
select @RGSTATUS = STATUSCODE
from dbo.REVENUESCHEDULE
where ID = @REVENUEID;
if @RGSTATUS in(0,1,5)
begin
if @ASOFDATE is null
set @ASOFDATE = getdate();
declare @INSTALLMENTS table (BALANCE money);
insert into @INSTALLMENTS
select dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCE(ID)
from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @REVENUEID
and DATE < @ASOFDATE
and (@IGNORESTATUS = 1 or STATUSCODE = 1)
and dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCE(ID) > 0;
insert into @INSTALLMENTS
select R.TRANSACTIONAMOUNT
from REVENUE R
cross apply dbo.UFN_RECURRINGGIFT_GETMISSINGINSTALLMENTS(R.ID) I
where R.ID = @REVENUEID
and I.DATE < @ASOFDATE
and @IGNORESTATUS = 1;
select @PASTDUE = isnull(sum(BALANCE),0)
from @INSTALLMENTS;
select @TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID from dbo.RECURRINGGIFTINSTALLMENT where REVENUEID = @REVENUEID;
set @CURRENCYID = coalesce(@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 @PASTDUE = dbo.UFN_CURRENCY_CONVERT(@PASTDUE, @CURRENCYEXCHANGERATEID)
else
set @PASTDUE = dbo.UFN_CURRENCY_CONVERTINVERSE(@PASTDUE, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, @TRANSACTIONCURRENCYID, @CURRENTDATE, 1, null))
end
end
else
set @PASTDUE = 0;
return @PASTDUE;
end