USP_BILLINGINDIVIDUALSUMMARYOVERVIEW
Returns billing summary information for a given billing individual.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@BILLINGCYCLEID | uniqueidentifier | INOUT | |
@BILLINGSTARTDATE | datetime | INOUT | |
@BILLINGENDDATE | datetime | INOUT | |
@TOTALBILLED | money | INOUT | |
@BALANCE | money | INOUT | |
@LASTPAYMENTID | uniqueidentifier | INOUT | |
@LASTPAYMENTAMOUNT | nvarchar(100) | INOUT | |
@LASTPAYMENTDATE | datetime | INOUT | |
@LASTPAYMENTPAYERID | uniqueidentifier | INOUT | |
@LASTPAYMENTPAYERNAME | nvarchar(200) | INOUT | |
@LASTPAYMENTPAYERNAMESTUDENT | nvarchar(200) | INOUT | |
@LASTPAYMENTMETHODCODE | tinyint | INOUT | |
@LASTPAYMENTMETHOD | nvarchar(50) | INOUT | |
@LASTPAYMENTMETHODINFO | nvarchar(50) | INOUT |
Definition
Copy
CREATE procedure dbo.USP_BILLINGINDIVIDUALSUMMARYOVERVIEW
(
@CONSTITUENTID uniqueidentifier,
@BILLINGCYCLEID uniqueidentifier output,
@BILLINGSTARTDATE datetime output,
@BILLINGENDDATE datetime output,
@TOTALBILLED money = null output,
@BALANCE money = null output,
@LASTPAYMENTID uniqueidentifier = null output,
@LASTPAYMENTAMOUNT nvarchar(100) = null output,
@LASTPAYMENTDATE datetime = null output,
@LASTPAYMENTPAYERID uniqueidentifier = null output,
@LASTPAYMENTPAYERNAME nvarchar(200) = null output,
@LASTPAYMENTPAYERNAMESTUDENT nvarchar(200) = null output,
@LASTPAYMENTMETHODCODE tinyint = null output,
@LASTPAYMENTMETHOD nvarchar(50) = null output,
@LASTPAYMENTMETHODINFO nvarchar(50) = null output
)
as
begin
set nocount on;
set @BILLINGSTARTDATE = null;
set @BILLINGENDDATE = null;
-- The empty guid or a null means find the billing cycle for me
if ((@BILLINGCYCLEID is null) or (@BILLINGCYCLEID = '00000000-0000-0000-0000-000000000000'))
begin
-- Get the current billing cycle ID
select top 1 @BILLINGCYCLEID = BILLINGCYCLES.ACADEMICYEARID
from dbo.UFN_GETBILLINGCYCLESBYINDIVIDUAL(@CONSTITUENTID) as BILLINGCYCLES
where (BILLINGCYCLES.BILLINGSTARTDATE <= dbo.UFN_DATE_GETEARLIESTTIME(getdate())) and
(BILLINGCYCLES.BILLINGENDDATE >= dbo.UFN_DATE_GETEARLIESTTIME(getdate()));
end
-- The ONE guid means all dates, an empty guid means find dates for me.
if (@BILLINGCYCLEID != '00000000-0000-0000-0000-000000000001')
begin
select @BILLINGSTARTDATE = BILLINGSTARTDATE,
@BILLINGENDDATE = BILLINGENDDATE
from dbo.ACADEMICYEAR
where ACADEMICYEAR.ID = @BILLINGCYCLEID;
end
-- Get summary information
select @TOTALBILLED = dbo.UFN_CHARGETOTALINDIVIDUAL(@CONSTITUENTID, @BILLINGSTARTDATE, @BILLINGENDDATE),
@BALANCE = dbo.UFN_BILLINGBALANCEINDIVIDUAL(@CONSTITUENTID, @BILLINGSTARTDATE, @BILLINGENDDATE);
-- Get last payment information
select top 1 @LASTPAYMENTID = FINANCIALTRANSACTION.ID,
@LASTPAYMENTAMOUNT = FINANCIALTRANSACTION.TRANSACTIONAMOUNT,
@LASTPAYMENTDATE = FINANCIALTRANSACTION.DATE,
@LASTPAYMENTPAYERID = RECEIVABLEPAYMENT.CONSTITUENTID,
@LASTPAYMENTPAYERNAME = case when dbo.UFN_CONSTITUENT_ISSTUDENT(CONSTITUENT.ID) = 1 then
''
else
CONSTITUENT.NAME
end,
@LASTPAYMENTPAYERNAMESTUDENT = case when dbo.UFN_CONSTITUENT_ISSTUDENT(CONSTITUENT.ID) = 1 then
CONSTITUENT.NAME
else
''
end,
@LASTPAYMENTMETHODCODE = RECEIVABLEPAYMENT.PAYMENTMETHODCODE,
@LASTPAYMENTMETHOD = RECEIVABLEPAYMENT.PAYMENTMETHOD,
@LASTPAYMENTMETHODINFO = case when RECEIVABLEPAYMENT.PAYMENTMETHODCODE = 1 then
RECEIVABLEPAYMENTCHECK.CHECKNUMBER
else
''
end
from dbo.FINANCIALTRANSACTION
inner join dbo.RECEIVABLEPAYMENT
on FINANCIALTRANSACTION.ID = RECEIVABLEPAYMENT.ID
inner join dbo.CONSTITUENT
on RECEIVABLEPAYMENT.CONSTITUENTID = CONSTITUENT.ID
left outer join dbo.RECEIVABLEPAYMENTCHECK
on RECEIVABLEPAYMENTCHECK.ID = RECEIVABLEPAYMENT.ID
where (FINANCIALTRANSACTION.CONSTITUENTID = @CONSTITUENTID) and
((@BILLINGENDDATE is null) or (FINANCIALTRANSACTION.DATE <= @BILLINGENDDATE)) and
((@BILLINGSTARTDATE is null) or (FINANCIALTRANSACTION.DATE >= @BILLINGSTARTDATE)) and
(FINANCIALTRANSACTION.DELETEDON IS NULL)
order by FINANCIALTRANSACTION.DATE desc,
FINANCIALTRANSACTION.DATEADDED desc;
return 0;
end