Skip to end of metadata
Go to start of metadata

Rate Types

These rate type are copied from the document "Fee Management" and that list if update takes precedence. It is included here for reference only.

Tuition – AO connected Tuition Rates

KSA Name

Name at SI if know.

Rate Type

Description

Fixed Credit Tuition

 

tuition.credits.fixed

Tuition that is billed per credit hour. This may be subject to a limit rate (cap, or cap between unit ranges) which is discussed later.

Flexible Credit Tuition

 

tutition.credits.flexible

Tuition that is billed per credit hour. This may be subject to a maximum cap. The rate is not done as a multiplier, rather as a discrete but different amount per credit.

Fixed Course Tuition

 

tuition.course

Tuition that is billed once per course (activity offering).

Flat Tuition

 

tuition.flat

Tuition that is billed once per semester for a certain group of courses – for example, no matter how many courses from an MBA program are taken, a certain amount will be billed. This might also vary by cohort. This tends to be limited to a certain group of courses.

Flag Tuition

 

tuition.flag

A flag rate is one that has no inherent value, other than to instruct the rules engine that the rate must be chosen by the engine. For example, standard tuition flags might all be converted to resident, graduate rates for students in that situation.

Flag Rates – General Note

Note that if KS-ENR needs to have actual rates attached to each AO/PO in order to surface these to the student in the course catalog, it will be necessary for them to attach all possible course rates, not just the flag rate. The selection of the correct flag rate would be done then by the rules, using some agreed way to identify the groups of rates.

AO Fees

KSA Name

Name at SI if know.

Rate Type

Description

Period Fee

 

fee.ao.term

A fee that is charged once per time period, regardless of the number of AOs it is attached to. This can be used to charge a fee if a student registers for one, or several of a group of courses. It is implicitly a "fixed" fee – i.e. one charge, regardless of the number of credit hours.

Hourly Fee (Fixed rates)

 

fee.ao.credits.fixed

A fee that is charged by the number of credit hours for each AO it is attached to. It is implicitly either a flat or flexible fee, due to the relation to credit hours.
Note, per SB-2, the TransactionType can change per rate.

Hourly Fee (Flexible rates)

 

fee.ao.credits.flexible

 

Course Fee

 

fee.ao.course

A fee that is charged once for each AO it is attached to. This is implicitly a "fixed" fee.

Annual Fee

 

fee.ao.annual

A fee that is only ever charged once to a student, per year. This is implicitly a fixed fee.

One-time Fee

 

fee.ao.once

A fee that is only ever charged once to a student, during their academic lifetime. This is implicitly a fixed fee.

Flag Fee

 

fee.ao.flag

A fee that doesn't implicitly have a value, but can be replaced with a non-flag fee by the rules engine.

Hourly Fee (Fixed rates)
(Grouped)

 

fee.ao.credits.grouped.fixed

 Identical to the same type without the grouping, however, the fee is charged as a single unit, with the number of credits being derived from the collective of courses with this fee. This is essentially a fee that works in the same way as tuition.

Hourly Fee (Flexible rates)
(Grouped)

 

fee.ao.credits.grouped.flexible

 

PO Fees – Attached to the program offering / major/ etc.?

KSA Name

Name at SI if know.

Rate Type

Description

Program Fee

 

fee.po.term

A fee that is charged once per time period, regardless of the number of AOs it is attached to. This can be used to charge a fee if a student registers for one, or several of a group of courses. It is implicitly a "fixed" fee – i.e. one charge, regardless of the number of credit hours.

Program Enrollment Fee

 

fee.po.once

A fee that is only ever charged once to a student, during their academic lifetime. This is implicitly a fixed fee.

Flag Fee

 

fee.po.flag

A fee that doesn't implicitly have a value, but can be replaced with a non-flag fee by the rules engine.

Non-AO Fees – Generated within the rules system.

KSA Name

Name at SI if know.

Rate Type

Description

Late Fee

 

fee.late

A fee that is charged for late registration, etc.

General Fee

 

fee.general

A fee that is charged to a student if a certain number of circumstances are met – not specifically attached to an AO.

These are fees that might be incurred by a student that are not specifically attached to the AO. These fees would be referenced via the rules that are established in KSA-FM. There is an expectation that these are not attached to the AOs.
Technically the fees break down into these groups.

Grouping Charges

Grouping charges are those that create a single charge based on a number of existences of a rate. This breaks into two sub areas:
Fixed/Flexibles. This is done by calculating the number of credits being taken, and then using either the flat or flexible algorithm, the amount is calculated.

Examples are:

Tuition.credits.fixed
Tuition.credits.flexible
Fee.ao.credits.grouped.fixed
Fee.ao.credits.grouped.flexible
Flats. A flat grouping rate is one that is charged once no matter the number of occurrences.

Examples are:

Tuition.flat
Fee.ao.term
Fee.ao.annual (note the annual enforcement has to be done via rules and account keypairs)
Fee.ao.once (note the once enforcement has to be done via rules and account keypairs).
Fee.po.term
Fee.po.annual (note the annual enforcement has to be done via rules and account keypairs)
Fee.po.once (note the once enforcement has to be done via rules and account keypairs).
Fee.general and fee.late are both actually examples of fee.term and should be treated as such.

Non Grouping Charges

Non-grouping charges are those which are charged on each occurrence of the rate. That is, each occurrence of the rate will trigger a manifest line. These equally break into two groups. The fixed/flexible and the flat.
Fixed/flexibles. These will use the number of hours on EACH signup to charge the rate.

Examples are:

Fee.ao.credits.fixed
Fee.ao.credits.flexible
Flats. These will simply charge the default rate on each signup.

Examples are:

Fee.ao.course
Tuition.course

Grouping

Grouping

Non Grouping

Non Grouping

Credit Based

Non-credit Based

Credit Based

Non-Credit Based

Tuition.credits.fixed
Tuition.credits.flexible
Fee.ao.credits.grouped.fixed
Fee.ao.credits.grouped.flexible

Tuition.flat
Fee.ao.term
Fee.ao.annual Fee.ao.once
Fee.po.term
Fee.po.annual Fee.po.once Fee.general
fee.late

Fee.ao.credits.fixed
Fee.ao.credits.flexible

Fee.ao.course
Tuition.course



In order to create the line(s) in the manifest, we need to pass a pointer to the session and the rate code or rate code pattern.

Creating the Manifest Object

Rates are charged either by being present on the signup or by being passed as an incidental rate. They are treated in the same way in the initial part, when the amount, transaction types, and dates are calculated, unless the amount is passed (for an incidental rate), in which case amount calculation can be skipped.

Grouping Types

If the type is a grouping type, then a single manifest object will be created for all the signup lines that have the rate attached. The number of units for the all the signup lines with the rate should be calculated.
Then, the amount needs to be calculated.
For flat rates, it is simply the default amount (and transaction type) in the rate.
The logic for this is in getAmountFromRate(), getTransactionTypeFromRate()

Non-Grouping Types

If the type is non-grouping, then a manifest object will be created for each signup line with the rate. The number of units to pass will be the number of units on the given signup line.
The amount and transaction types have to be discerned, using the logic in getAmountFromRate() and getTransactionTypeFromRate()

Incidental Rates

If the amount is passed in the incidental rate construction, then this amount should be used. Otherwise it will be calculated from the rate as above. The transaction type will be discerned from the rate as above.

All Rates

The effectiveDate and recognitionDate should be calculated from the Rate using the logic in getEffectiveDateFromRate() and getRecognitionDateFromRate()
Then create the manifest item.
For all, these will be the same:
FeeManagementManifestType = CHARGE
FeeManagementManifestStatus = PENDING
rateId = the passed rateId
effectiveDate, recognitionDate, amount – per calculations in this routine.
For grouping charges, set the registrationId to null, the offeringId to null and the internalChargeId to the rate code.
For Non-grouping charges, set the registrationId and the offeringId to the registration and offering ids of the signup line, and set the internalId to null.
For Incidental charges, set the internalId to the passed internal id.

  • No labels