UFN_REVENUE_VSEPLEDGEBALANCE
Returns the unpaid balance for a given pledge as of a given date by a given vse category set
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN | |
@EXCLUDEUSAGETYPECODE | tinyint | IN | |
@PURPOSETYPECODE | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUE_VSEPLEDGEBALANCE
(
@REVENUEID uniqueidentifier,
@ASOFDATE datetime = null,
@EXCLUDEUSAGETYPECODE tinyint = 0,
@PURPOSETYPECODE tinyint = 0
)
returns money
with execute as caller
as begin
declare @PLEDGEBALANCE money;
select
@PLEDGEBALANCE = sum(REVENUESPLIT.AMOUNT)
-
(
coalesce((
select
sum(INSTALLMENTSPLITPAYMENT.AMOUNT)
from
dbo.REVENUE
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.PLEDGEID = REVENUE.ID
inner join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
inner join dbo.DESIGNATION on INSTALLMENTSPLIT.DESIGNATIONID = DESIGNATION.ID
inner join dbo.VSECATEGORY on DESIGNATION.VSECATEGORYID = VSECATEGORY.ID
where
REVENUE.ID = @REVENUEID
and REVENUE.DATE <= @ASOFDATE
and VSECATEGORY.PURPOSETYPECODE = @PURPOSETYPECODE
and VSECATEGORY.USAGETYPECODE <> @EXCLUDEUSAGETYPECODE), 0)
)
-
(
coalesce((
select
sum(INSTALLMENTSPLITWRITEOFF.AMOUNT)
from
dbo.REVENUE
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.PLEDGEID = REVENUE.ID
inner join dbo.INSTALLMENTSPLITWRITEOFF on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID
inner join dbo.DESIGNATION on INSTALLMENTSPLIT.DESIGNATIONID = DESIGNATION.ID
inner join dbo.VSECATEGORY on DESIGNATION.VSECATEGORYID = VSECATEGORY.ID
where
REVENUE.ID = @REVENUEID
and REVENUE.DATE <= @ASOFDATE
and VSECATEGORY.PURPOSETYPECODE = @PURPOSETYPECODE
and VSECATEGORY.USAGETYPECODE <> @EXCLUDEUSAGETYPECODE), 0)
)
from
dbo.REVENUE
inner join REVENUESPLIT on REVENUE.ID = REVENUESPLIT.REVENUEID
inner join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
inner join dbo.VSECATEGORY on DESIGNATION.VSECATEGORYID = VSECATEGORY.ID
where
REVENUE.ID = @REVENUEID
and VSECATEGORY.USAGETYPECODE <> @EXCLUDEUSAGETYPECODE
and VSECATEGORY.PURPOSETYPECODE = @PURPOSETYPECODE
return coalesce(@PLEDGEBALANCE, 0);
end