School Management module

A complete school-management system inside the ERP: from the online admissions portal to the report card, covering enrolment, attendance, timetables and grades — with fees posted straight to receivables and the ledger, no separate accounting package and no exported files. Its services ride the platform's own modules: buses on Fleet, the canteen on point of sale, payroll on the posting engine.

Before you start: what is configured once

Purpose: before the first fee invoice or journal entry, the module is linked to the chart of accounts from Settings → Accounts. Without these accounts the system refuses to post and names the missing setting.

SettingUsed for
Student receivablesThe debit side of every fee invoice — what guardians owe.
Tuition revenueThe credit side of fee items when the invoice is issued.
Unearned tuitionA liability when payment covers a term that has not begun; recognised as revenue as the term progresses.
Student wallet balancesThe canteen liability: credited on top-up, debited on purchase.
Library finesRevenue from late and lost-item fines.
Admission application feesRevenue from application fees (collected in cash with no invoice).
Teacher salaries / salaries payablePayroll expense and its liability when a run is posted.
ℹ️ The «Schools» tab in Settings holds library settings (loan days, daily fine, maximum open loans) and the admissions portal (open/closed, application fee, welcome text) — settings live in the settings screen, not in the working screen.

Academic structure

Path: Schools → Academic years / Grades / Sections / Subjects / Teachers/school/years

Academic years
Academic years
Sections
Sections
Teaching assignments
Teaching assignments

Purpose: the structure built once before the year starts; every later record belongs to it. The logical order is: academic year → grades → sections → subjects → teachers → assignments → timetable.

ScreenDescription
Academic yearsA year with its code and terms, and a state (planned / active / closed). A closed year blocks marking and edits.
GradesGrade one through the final secondary year, with stage and sort order.
SectionsA section belongs to a grade within a year, with capacity, form tutor and room. Exceeding capacity is refused at enrolment.
SubjectsThe subject with its code and prescribed weekly periods, and whether it is core (counts toward the total) or an activity.
TeachersThe teacher card with a maximum weekly load, and a link to a system user that enables "a teacher sees only their sections".
Teaching assignmentsSection × subject × teacher × weekly periods — the input to both the timetable and mark entry.
⚠️ Common error: assigning periods beyond a teacher's ceiling is refused on save with a message naming the ceiling and the total — review the load distribution rather than removing the limit.

Timetable and the automatic generator

Path: Schools → Timetable/school/timetable

Timetable
Timetable

Purpose: a days × periods grid per section. A cell is filled by picking an assignment (subject and its teacher together), so scheduling a subject with no assignment is impossible. The server refuses three clashes: a section with two subjects in one period, a teacher in two sections, and a room booked twice.

Automatic generation: the "Auto-generate" button builds the timetable from assignments: it spreads a subject across days, caps consecutive periods, and balances the daily load. The preview writes nothing — it reports how many periods were placed out of how many required, the constraints it could not solve with a written reason, and load-ceiling warnings.

FieldDescription
Working daysThe days the grid is built on (Sunday–Thursday by default).
Max consecutive periods per subjectTwo are sometimes useful (a lab), four are a disaster — the limit is yours.
All sectionsGenerate for every section or only the selected one, while respecting what is already scheduled elsewhere.
Apply a partial timetableAn explicit acknowledgement that you accept an incomplete timetable. Without it the system refuses to write one.
💡 Read the result like this: "140/140 placed" is a complete timetable. "132/140" comes with a list saying where and why — such as "3 maths periods remain in 1/A because the teacher is busy in every available slot".
ℹ️ Manual editing afterwards is essential: no generator knows that the grade-two teacher must not be scheduled on Wednesday. Adjust cells after applying; clash protection stays active.

Students and admissions

Path: Schools → Admissions / Guardians / Students / Enrolments/school/admissions

Admission applications and funnel
Admission applications and funnel
Students
Students

Purpose: the student lifecycle from application to enrolment. A guardian is an independent record linked to several students with a stated relationship — which is what makes sibling discounts, a family invoice and the family portal possible in the first place.

ScreenDescription
Admission applicationsA seven-state path: received → under review → interview scheduled → accepted / rejected → enrolled / withdrawn. Every application has a number and a tracking key.
GuardiansName, phone and ID, links to students (relationship, primary contact, right to collect from the gate, notification recipient), and portal account creation.
StudentsThe student card with code, photo, section and the flattened guardian details the gate devices read.
EnrolmentsOne enrolment per student per year with a status (new / continuing / transferred / withdrawn / graduated) and dates — the basis for end-of-year promotion and transcripts years later.
ℹ️ Opening admissions: from Settings → Schools. The public form refuses applications while closed, and a duplicate submission on the same day returns the first application rather than creating a second.
  1. The guardian opens /apply/<school-code> and fills the form — no login.
  2. They receive an application number and a tracking key to check the status any time.
  3. The school moves it to "under review", then schedules an interview with a score and a written note.
  4. Collecting the application fee posts an automatic entry: debit cash / credit application-fee revenue.
  5. The decision: accept (a grade must be chosen) or reject with a written reason.
  6. The "Convert to student" button creates in one click the student, the guardian (or links to an existing one when the phone matches — an older sibling) and the enrolment. Conversion never happens twice.

Attendance and behaviour

Path: Schools → Period attendance / Attendance log / Absence excuses/school/period-attendance

Period attendance
Period attendance
Absence excuses
Absence excuses

Purpose: attendance from three sources in one record: a gate scan (the ESIS ATTEND app), the teacher's period roll call, and manual correction. There are five states, not two: present / late / absent / excused / left early.

ScreenDescription
Period attendanceThe section list opens with everyone present; the teacher taps only the absentees and saves — under two minutes.
Attendance logGate scans with their timestamps; the arrival notification to the guardian is sent from here.
Absence excusesSubmitted by the guardian from their portal with a medical attachment, reaching the deputy head as "pending"; approval flips the day from "absent" to "excused", recorded with who approved and when.
Behaviour types and logIncidents and merits with their point values; the student balance shows on the report card and in the portal.
Health fileVaccinations, allergies, chronic conditions and clinic visits — with a teacher alert where needed.
Gate devicesDevices with their keys; a device scans offline and syncs later without duplicating records.
💡 The attendance rate is computed over actual school days, not calendar days, so holidays are never counted as absence for everyone.

Teaching and assessment

Path: Schools → Homework / Assessment types / Mark entry / Results/school/assessments

Mark entry
Mark entry
Results and report card
Results and report card

Purpose: from daily homework to an approved report card. A final mark is a weighted composition: the subject percentage is the sum of (mark ÷ maximum × type weight) divided by the weights of the assessments actually entered — so a half-marked term still yields a correct percentage.

ScreenDescription
HomeworkPublish homework to a section with attachments and a due date; the student submits from their portal and the teacher grades it. Submission state is computed on the server from the due date, not from the browser's claim.
Assessment typesCoursework / midterm / final / practical… each with a percentage weight. The weights must total 100%.
Grading scalesScale bands: 90–100 excellent, 80–89 very good… and a scale per stage where needed.
Mark entryThe teacher's screen, restricted to their sections and subjects. "Absent" counts as zero while "not entered" is skipped.
ExamsExam schedules, committees, seating and invigilators, with result entry.
Results and report cardsTerm and year results with a promotion decision, a printable bilingual card, and a transcript across years.
⚠️ Approval freezes a snapshot: what was printed and handed to a parent does not change if a mark is corrected later. Un-approving makes the result live again so it can be approved anew.

Fees and finance

Path: Schools → Fee items / Fee plans / Fee invoices/school/fee-invoices

Fee invoices
Fee invoices

Purpose: a full accounting fee cycle rather than a collection log. The order is: item → plan per grade → invoice per student → receipt.

StepWhat happens
Fee itemsTuition, registration, books, transport, activities… each with its own revenue account — which is what makes "does transport cover its cost?" answerable.
Fee plansA plan per grade per year, with instalments and due dates. Exceptions (scholarship, sibling, staff discount) sit at student level.
Generating invoicesIn one batch from student enrolments: an invoice per student with its lines and instalments.
PostingDebit student receivables / credit each item's revenue, with the discount distributed across the lines.
CollectionA receipt settles instalments oldest-due first: debit cash / credit student receivables.
CancellationReverses the entry with a counter entry rather than erasing it — the accounting trail stays visible.
💡 Collection reports: "fee collection" and "instalment ageing" in the report centre turn random chasing into a process: under 30 days needs a reminder, over 90 needs a management decision.

School services: transport, canteen and library

Path: Schools → Transport / Canteen wallets / Library/school/transport

School transport
School transport
Canteen wallets
Canteen wallets
Library
Library

Purpose: the services that exhaust the office when run as separate systems — here they all share one student identity and one set of books.

ServiceHow it works
School transportRoutes, stops, times and student subscriptions, with boarding and alighting scans that notify the guardian. The bus is a vehicle in the Fleet module with its maintenance, fuel and driver — so the true cost of a route is known.
CanteenA prepaid student wallet with a daily spending cap, purchased on the existing point of sale. A top-up is a liability, not revenue: debit cash / credit wallet balances, becoming revenue only on purchase.
LibraryA catalogue of copies, loans with a period and a late fine posted as revenue, and a maximum number of open loans per borrower.
Certificates and lettersEnrolment, conduct and clearance letters from templates with a serial number; the body is stored at issue so what was handed to an official body never changes.
Staff and payrollSchool staff by category, and a payroll run with states (draft → posted → paid): accrual is booked first and payment second, so no month shows a short expense and the next a doubled one.

Guardian and student portals, and teacher meetings

Path: Guardian portal / Student portal/portal

Parent meetings
Parent meetings

Purpose: two accounts created from the guardian or student card with narrow roles. A guardian switches between their children on one screen and sees only their own children.

TabWhat it shows
AttendanceA monthly summary and absence days, plus submitting an excuse with an attachment.
Timetable and homeworkThe section timetable, and homework with due dates, submission state and mark.
ResultsApproved cards only — a draft is deliberately refused by the server.
FeesPosted invoices, instalments, what is paid and what remains, and the statement.
Transport, canteen and libraryThe bus route, wallet balance and purchase statement, and open loans.
MeetingsBooking a slot with a teacher on the open day — one slot per teacher per student, with a reminder the day before.
ℹ️ Parent meetings (admin screen): create an open-day window with a time range and slot length, then "generate slots" for chosen teachers, then publish. Before publishing the guardian sees nothing. A booked slot is protected: it cannot be blocked and the window range cannot change afterwards.

Early warning and reports

Path: Schools → Early warning & analytics/school/analytics

Early warning and analytics
Early warning and analytics

Purpose: the system reads three signals together — attendance, marks and behaviour, plus financial strain — and produces the at-risk student list with written reasons rather than bare numbers.

IndicatorMeaning
Risk thresholdsSet by the counsellor on the same screen (85% attendance, 60% marks, −5 behaviour by default) — tune them until the list is actionable, typically 5–10% of students.
Teacher effectivenessComparing subject results across sections — read as a question, not a verdict, and shown with the number of results behind it.
School indicatorsAttendance rate, average mark, at-risk count, collection rate, retention rate.
School reportsIn the report centre: monthly attendance, chronic absence, attendance rate by section, transcripts, pass/fail, fee collection, instalment ageing, transport, canteen, library, certificates, payroll and the admissions funnel.
💡 The AI assistant: ask "how many absences today?" or "who is behind on instalments?" and it answers from your own school's data.