USP_TRANSACTIONTOGROUP_GETSTUDENTENTRIES
Returns student entries.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@IDSETREGISTERID | uniqueidentifier | IN | |
@CHARGEDATE | date | IN | |
@BILLINGITEMID | uniqueidentifier | IN | |
@SCHOOLS | xml | IN | |
@AMOUNT | money | IN |
Definition
Copy
CREATE procedure dbo.USP_TRANSACTIONTOGROUP_GETSTUDENTENTRIES
(
@IDSETREGISTERID uniqueidentifier,
@CHARGEDATE date,
@BILLINGITEMID uniqueidentifier,
@SCHOOLS xml,
@AMOUNT money
)
as
begin
set nocount on
declare @INCLUDEDSTUDENT table
(
STUDENTID uniqueidentifier not null
)
-- limit to selection, if chosen
if @IDSETREGISTERID is null or @IDSETREGISTERID='00000000-0000-0000-0000-000000000000'
insert into @INCLUDEDSTUDENT (STUDENTID)
select ID from dbo.STUDENT
else
insert into @INCLUDEDSTUDENT (STUDENTID)
select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@IDSETREGISTERID)
declare @STUDENT table
(
STUDENTID uniqueidentifier not null,
STUDENTNAME nvarchar(210) null,
SCHOOLID uniqueidentifier null,
SCHOOL nvarchar(100) null,
GRADELEVELID uniqueidentifier null,
GRADELEVEL nvarchar(10) null,
STUDENTPROGRESSIONID uniqueidentifier null,
ENROLLMENTID uniqueidentifier null,
AMOUNT money null,
MESSAGE nvarchar(100) null,
LASTNAME nvarchar(50) null,
FIRSTNAME nvarchar(50) null,
HASMESSAGE bit null
)
declare @PRICETYPECODE integer
select @PRICETYPECODE =PRICETYPECODE FROM DBO.BILLINGITEM WHERE ID=@BILLINGITEMID
if @PRICETYPECODE =1
begin
insert into @STUDENT
(
STUDENTID,
STUDENTNAME,
AMOUNT,
LASTNAME,
FIRSTNAME
)
select S.STUDENTID,
C.NAME + case when LEN(C.NICKNAME) > 0 then ' (' + C.NICKNAME + ')' else '' end as STUDENTNAME,
@AMOUNT, C.KEYNAME, C.FIRSTNAME
from @INCLUDEDSTUDENT S inner join dbo.CONSTITUENT C on S.STUDENTID=C.ID
update @STUDENT
set SCHOOLID = SCHOOLGRADELEVEL.SCHOOLID,
SCHOOL = CONSTITUENT.KEYNAME,
GRADELEVELID = GRADELEVEL.ID,
GRADELEVEL = GRADELEVEL.ABBREVIATION
from @STUDENT ST inner join dbo.EDUCATIONALHISTORY on ST.STUDENTID = EDUCATIONALHISTORY.CONSTITUENTID
inner join dbo.STUDENTPROGRESSION on dbo.STUDENTPROGRESSION.[ENROLLMENTID] = dbo.EDUCATIONALHISTORY.[ID]
inner join dbo.SCHOOLGRADELEVEL on dbo.STUDENTPROGRESSION.[SCHOOLGRADELEVELID] = dbo.SCHOOLGRADELEVEL.[ID]
inner join dbo.CONSTITUENT on dbo.CONSTITUENT.ID=SCHOOLGRADELEVEL.SCHOOLID
inner join dbo.GRADELEVEL on dbo.SCHOOLGRADELEVEL.GRADELEVELID=dbo.GRADELEVEL.ID
where dbo.STUDENTPROGRESSION.ID=dbo.UFN_STUDENT_GETSTUDENTPROGRESSIONBYDATE(@CHARGEDATE, ST.STUDENTID, NULL)
update @STUDENT
set SCHOOLID = CONSTITUENT.ID,
SCHOOL = CONSTITUENT.KEYNAME
from @STUDENT ST inner join dbo.EDUCATIONALHISTORY on ST.STUDENTID = EDUCATIONALHISTORY.CONSTITUENTID
inner join dbo.CONSTITUENT on dbo.EDUCATIONALHISTORY.EDUCATIONALINSTITUTIONID = CONSTITUENT.ID
where dbo.EDUCATIONALHISTORY.ID=dbo.UFN_STUDENT_GETENROLLMENTBYDATE(ST.STUDENTID, NULL, @CHARGEDATE)
AND ST.SCHOOLID is null
end
if @PRICETYPECODE <>1
begin
declare @SCHOOL table
(
SCHOOLID uniqueidentifier not null,
SCHOOL nvarchar(100) null
)
insert into @SCHOOL (SCHOOLID, SCHOOL)
SELECT T.C.value('(SCHOOLID)[1]','uniqueidentifier') AS 'SCHOOLID',
T.C.value('(NAME)[1]','nvarchar(100)') AS 'NAME'
FROM @SCHOOLS.nodes('/SCHOOLS/ITEM') T(C)
insert into @STUDENT
(
STUDENTID,
STUDENTNAME,
SCHOOLID,
SCHOOL,
GRADELEVELID,
GRADELEVEL,
STUDENTPROGRESSIONID,
LASTNAME,
FIRSTNAME
)
select S.STUDENTID,
C.NAME + case when LEN(C.NICKNAME) > 0 then ' (' + C.NICKNAME + ')' else '' end as STUDENTNAME,
SCHOOLGRADELEVEL.SCHOOLID, CONSTITUENT.KEYNAME, GRADELEVEL.ID, GRADELEVEL.ABBREVIATION, STUDENTPROGRESSION.ID, C.KEYNAME, C.FIRSTNAME
from @INCLUDEDSTUDENT S inner join dbo.CONSTITUENT C on S.STUDENTID=C.ID
inner join dbo.EDUCATIONALHISTORY on S.STUDENTID = EDUCATIONALHISTORY.CONSTITUENTID
inner join dbo.STUDENTPROGRESSION on dbo.STUDENTPROGRESSION.[ENROLLMENTID] = dbo.EDUCATIONALHISTORY.[ID]
inner join dbo.SCHOOLGRADELEVEL on dbo.STUDENTPROGRESSION.[SCHOOLGRADELEVELID] = dbo.SCHOOLGRADELEVEL.[ID]
inner join dbo.CONSTITUENT on dbo.CONSTITUENT.ID=SCHOOLGRADELEVEL.SCHOOLID
inner join dbo.GRADELEVEL on dbo.SCHOOLGRADELEVEL.GRADELEVELID=dbo.GRADELEVEL.ID
inner join @SCHOOL sch on sch.SCHOOLID = dbo.SCHOOLGRADELEVEL.SCHOOLID
where dbo.STUDENTPROGRESSION.ID=dbo.UFN_STUDENT_GETSTUDENTPROGRESSIONBYDATE(@CHARGEDATE, S.STUDENTID, sch.SCHOOLID)
insert into @STUDENT
(
STUDENTID,
STUDENTNAME,
SCHOOLID,
SCHOOL,
ENROLLMENTID,
LASTNAME,
FIRSTNAME
)
select S.STUDENTID,
C.NAME + case when LEN(C.NICKNAME) > 0 then ' (' + C.NICKNAME + ')' else '' end as STUDENTNAME,
CONSTITUENT.ID, CONSTITUENT.KEYNAME, EDUCATIONALHISTORY.ID, C.KEYNAME, C.FIRSTNAME
from @INCLUDEDSTUDENT S inner join dbo.EDUCATIONALHISTORY on S.STUDENTID = EDUCATIONALHISTORY.CONSTITUENTID
inner join dbo.CONSTITUENT C on S.STUDENTID=C.ID
inner join dbo.CONSTITUENT on dbo.EDUCATIONALHISTORY.EDUCATIONALINSTITUTIONID = CONSTITUENT.ID
inner join @SCHOOL sch on sch.SCHOOLID = CONSTITUENT.ID
where S.STUDENTID not in (select STUDENTID from @STUDENT) AND dbo.EDUCATIONALHISTORY.ID=dbo.UFN_STUDENT_GETENROLLMENTBYDATE(S.STUDENTID, sch.SCHOOLID, @CHARGEDATE)
update @STUDENT
set AMOUNT=dbo.UFN_BILLINGITEM_GETBILLINGITEMPRICE(@BILLINGITEMID, @CHARGEDATE, s.STUDENTID, s.SCHOOLID, s.GRADELEVELID)
from @STUDENT s where MESSAGE is null
end
if @PRICETYPECODE =2
update @STUDENT set HASMESSAGE=1, MESSAGE='The student has no student progression record defined for the charge date.' from @STUDENT where GRADELEVELID is null
-- For vary by grade level charges, use the student progression and billing item IDs to match.
update S
set HASMESSAGE=1, MESSAGE= 'Duplicate with charge ' + FINANCIALTRANSACTION.USERDEFINEDID
from @STUDENT S
inner join dbo.STUDENTCHARGE
on S.STUDENTPROGRESSIONID = STUDENTCHARGE.STUDENTPROGRESSIONID
inner join dbo.FINANCIALTRANSACTION
on STUDENTCHARGE.ID = FINANCIALTRANSACTION.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM
on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.CHARGELINEITEM
on FINANCIALTRANSACTIONLINEITEM.ID = CHARGELINEITEM.ID
and CHARGELINEITEM.BILLINGITEMID = @BILLINGITEMID
-- For vary by school charges, use the student enrollment, academic year (by billing dates) and billing item IDs to match.
if (@PRICETYPECODE = 3)
begin
update S
set HASMESSAGE =1 ,MESSAGE= 'Duplicate with charge ' + FINANCIALTRANSACTION.USERDEFINEDID
from @STUDENT S
inner join dbo.STUDENTCHARGE
on S.ENROLLMENTID = STUDENTCHARGE.EDUCATIONALHISTORYID
inner join dbo.ACADEMICYEAR
on S.SCHOOLID = ACADEMICYEAR.SCHOOLID
and @CHARGEDATE between ACADEMICYEAR.BILLINGSTARTDATE and ACADEMICYEAR.BILLINGENDDATE
inner join dbo.FINANCIALTRANSACTION
on STUDENTCHARGE.ID = FINANCIALTRANSACTION.ID
and FINANCIALTRANSACTION.DATE between ACADEMICYEAR.BILLINGSTARTDATE and ACADEMICYEAR.BILLINGENDDATE
inner join dbo.FINANCIALTRANSACTIONLINEITEM
on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.CHARGELINEITEM
on FINANCIALTRANSACTIONLINEITEM.ID = CHARGELINEITEM.ID
and CHARGELINEITEM.BILLINGITEMID = @BILLINGITEMID
end
if @PRICETYPECODE =2
update S
set HASMESSAGE=1, MESSAGE= 'No amount defined for calculated grade level'
from @STUDENT S
where AMOUNT=0 AND GRADELEVELID is not null
if @PRICETYPECODE =3
update S
set HASMESSAGE=1, MESSAGE= 'No amount defined for school'
from @STUDENT S
where AMOUNT=0 AND SCHOOLID is not null
select STUDENTID,
STUDENTNAME,
SCHOOLID,
SCHOOL,
GRADELEVELID,
GRADELEVEL,
STUDENTPROGRESSIONID,
ENROLLMENTID,
AMOUNT,
MESSAGE
from @STUDENT
order by HASMESSAGE, LASTNAME, FIRSTNAME
end