1. fees_assess - stores fee assessments so they can be applied to particular students or student groups.
id - int, autoincrementing type
name - short descriptor (ie. uniforms) - char(12)?
description - longer description of product or service with details ( char(255) ).
amount - numeric value of the product/service. (double precision)
discount - percentage discount, if applicable. (double precision)
tax1_flag - boolean flag (0/1 value) to indicate if this tax applies to this product/service.
tax2_flag - second flag.
tax3_flag - third flag.
tax4_flag - etc. etc.
tax5_flag - The names and percentages stored in the fees.conf configuration file.
tax6_flag -
Then additional grouping fields such as: grade(?), homeroom(?), subjsec(?). These stored 'groupers' would speed up the Add Fee process by providing defaults.
2. fees_jrl - stores both assessments (charges) and payments.
id - int, autoincrement
studnum - student number; unique to each student.
tdate (or trans_date) - transaction date.
type (or trans_type) - payment or assessment - type of transaction.
description - (from assessment description above for charge and list id's for payments)
amount - amount of the transaction
tax1 - amount of first tax (% of amount; percent and name stored in fees.conf)
tax2 - second tax value
tax3 - third tax value (if any)
Unlikely to have more than 3 taxes applied per item. (though more
could exist, as per fees_assess.
total - sum of amount + taxes.
paid_flag - 0 or 1 value signalling if this transaction has been paid
in full (or not)
paid_amount - amount less than total that _has_ been paid. paid_flag
would be zero when this field has a value.