# Fieldnote Learning Centre: fee schedule, bursary invoice, enrolment and gradebook documents

The administration pack a small training centre produces for one term: the fee schedule, the enrolment export in three formats, the bursary register and the invoices it reduces, the payment plans, the gradebook in long and wide shapes, the attendance register and its summary, capacity and certificate eligibility, and learner-facing transcript and statement documents.

All parties, amounts and identifiers are fictional. Fixed snapshot: 2026-09-08. Every record is derived from the shared operating model `education-training`, so identifiers join across this set and across the business-kit fixtures that use the same model.

## Reconciliation identities this set asserts

- tuition plus materials_fee plus registration_fee equals gross_fee on all 18 invoices, 5250.00 in total.
- gross_fee less bursary_amount equals net_payable on every invoice, 4442.50 in total, and no net is negative because a fixed award is capped at the fee.
- passed is completed AND score at or above the pass mark, giving 9 passes; 2 enrolments score above the mark and still do not pass.
- A certificate needs completion, a pass and both sessions, so 7 are eligible rather than the 9 that passed.
- Unpivoting gradebook-wide.csv reproduces the 18 rows of gradebook-export.csv exactly.
- Payment plan instalments sum to the net payable of the 8 invoices they cover, 2600.00.

## Files

| File | Format | Validity | What it is |
| --- | --- | --- | --- |
| `fee-schedule.csv` | csv | reference | Course fee schedule |
| `fee-schedule.pdf` | pdf | reference | Course fee schedule PDF |
| `enrolment-export.csv` | csv | valid | Enrolment export |
| `enrolment-export.json` | json | valid | Enrolment export JSON |
| `enrolment-export.xlsx` | xlsx | valid | Enrolment workbook |
| `bursary-register.csv` | csv | reference | Bursary award register |
| `invoice-register.csv` | csv | valid | Invoice register with bursaries |
| `invoice-register.json` | json | valid | Invoice register JSON |
| `invoice-register-bursary-exceeds-fee.csv` | csv | invalid | Invoice register where a bursary exceeds the fee it is set against |
| `payment-plan-schedule.csv` | csv | valid | Fee payment plan schedule |
| `gradebook-export.csv` | csv | valid | Gradebook export, one row per result |
| `gradebook-export.xlsx` | xlsx | valid | Gradebook workbook, one sheet per course |
| `gradebook-wide.csv` | csv | valid | Gradebook in wide format |
| `gradebook-export-score-out-of-range.csv` | csv | invalid | Gradebook with an impossible score and a missing one |
| `attendance-register.csv` | csv | valid | Session attendance register |
| `attendance-summary.csv` | csv | valid | Attendance summary by course |
| `course-capacity-report.csv` | csv | valid | Course capacity and outcome report |
| `certificate-eligibility.csv` | csv | valid | Certificate eligibility with three conditions |
| `learner-export.csv` | csv | valid | Learner summary export |
| `course-catalogue.csv` | csv | reference | Course catalogue with materials |
| `transcript-LEARN-05.pdf` | pdf | valid | Learner transcript PDF |
| `statement-of-account-LEARN-03.pdf` | pdf | valid | Learner statement of account PDF |
| `education-reconciliation.json` | json | reference | Education reconciliation assertions |

## Deliberate defects

These files are broken on purpose. Each one is a single named mutation of a correct file in the same directory, so a parser under test can be checked against both.

- **`invoice-register-bursary-exceeds-fee.csv`** 17 rows pass. ENR-03 fails: its bursary of 350.00 exceeds its 225.00 fee by 125.00, producing a net_payable of -125.00. A ledger that accepts it books a credit the learner never paid for, and the register total falls 125.00 short at 4205.00.
- **`gradebook-export-score-out-of-range.csv`** ENR-06 fails the range check by 4 points against its own declared maximum of 100. ENR-12 fails the derivation: an empty score coerced to 0 gives a fail, which contradicts the passed and grade_band columns on the same row. A reader that coerces blanks to zero silently turns a distinction into a fail and reports 8 passes instead of 9.

## Notes and limits

- An empty score cell in gradebook-wide.csv means the learner is not enrolled on that course. It is not a zero, and coercing it to one changes both the best score and the pass count.
- The pass rate is quoted against completions, not against enrolments. The two differ here because three enrolments are still open.
- A percentage bursary applies to every enrolment the learner holds; a fixed award applies once, to the earliest enrolment, and is capped at that fee. The invoice register depends on both rules and states them.
- Registration is charged once per enrolment, so a learner on two courses pays it twice. That is deliberate and is why the fee components are shown separately.
- Learners, scores and awards are fictional. Nothing here is a qualification record or evidence of training.
