HandbookAcademics30

Field trips & excursions.

A field trip is one of the busiest workflows a school runs: a teacher proposes it, a head approves it, a budget is split between the school and the families, parents sign a consent slip, the bursar bills the net, the transport office finds a bus, and the class register has to follow the students out of the gate and back again. YESS threads all of it — request to consent to bus to attendance — through one spine, so the trip that leaves on Friday is the same trip the books, the timetable, and the parent portal already know about.

  • 6trip kinds
  • 11trip states
  • 4consent states
  • ≈13 minto read

Prologue

A note on this book and the excursion#

A trip out of school touches more of the platform than almost anything else a teacher does. It is an academic activity (it has learning objectives and a subject), a money event (someone pays for the coach and the entry tickets), a logistics job (a vehicle, a route, a driver), a safeguarding exercise (consent, a register, an emergency contact), and a timetable disruption (the lead teacher's own lessons still need covering). YESS was built so that one record — the field trip — carries every one of those concerns and fans them out to the modules that own them.

One thing to set straight up front: there is no standalone “Field trips” menu item. Trips are an activity of a department, so they are planned, approved, and rostered from inside the department mini-world, with two satellite surfaces — an approval queue for managers and a consent screen in the parent portal. This handbook walks you through every one of those surfaces in the order a real trip moves through them.

The trip that leaves on Friday is the same trip the books, the timetable, and the parent portal already know about.

Chapter one

Where field trips live#

Open the departments hub at /dashboard/departments and step into a department — Sciences, say. Each department is a mini-world, and one of its rooms is the field-trip catalogue: upcoming trips, recent trips, and (for managers) the controls to plan a new one. A trip belongs to a department, but it is also tagged to a programme, so the same Sciences department can keep three distinct activity catalogues side by side: an IB CAS activity, a GCE field trip, and a BAC sortie scolaire, each under its own programme's banner.

That programme-flavoured variant is the trip kind. YESS ships six: field trip, CAS activity, sortie scolaire, practical excursion, cultural visit, and other. A trip can also be school-wide rather than departmental — leave the department, subject, and section tags empty and it becomes a whole-school activity.

The field-trip catalogue lives inside each department's mini-world — upcoming trips, recent trips, and the plan-a-trip controls for managers.

What a trip carries

  1. 1

    Identity & scope

    Name, description, learning objectives, destination and address, a start and end timestamp, and the scope tags — department, programme, subject IDs, section IDs. All scope tags empty = a school-wide activity.

  2. 2

    Staff

    A lead staff member plus an array of accompanying staff. The lead's own timetable periods during the trip window are surfaced for cover (see the timetable-impact chapter).

  3. 3

    Money

    Cost per student, the school's per-student subsidy, and a total school budget — the three numbers that decide who pays for what. More on these in the budgets chapter.

  4. 4

    Consent & safety

    A parent-consent-required flag (on by default), a consent deadline, a risk-assessment document URL, an insurance acknowledgement timestamp, and an emergency-contact record.

  5. 5

    Transport

    A transport-required flag and a transport status that hands the trip off to the transport office when the school needs to lay on a bus.

  6. 6

    Status

    The lifecycle state — eleven of them, from requested all the way to completed (or rejected / cancelled / postponed). The status is the engine that fires every downstream effect.

Chapter two

The request and the approval#

Field trips support two origin paths, and which one you get depends on your permission. A manager — anyone with field_trips.manage (school admin, principal, vice-principal, head of department) — plans a trip directly, and it starts life in planned. A classroom teacher with only field_trips.create can file a request: the database pins their new trip to status requested and stamps them as the requesting teacher. A teacher cannot self-approve — the rule is enforced at the database, not just in the screen.

The moment a request is filed, every manager in the school is notified and deep-linked to the review queue at /dashboard/departments/trip-requests. That page lists every pending request school-wide with the cost breakdown — net charge to the family, the subsidy, the school budget — right where the decision is made. One click approves; one click rejects with a reason. Either way, the requesting teacher is notified back of the decision.

The eleven states

A trip moves through a deliberate lifecycle: requestedapproved planned / consent_open / consent_closed / confirmed in progresscompleted. Two terminal branches sit off to the side — rejected (a declined request) and cancelled — plus postponed for a trip that slips. Several of these states are not just labels: crossing into an active state opens consent, bills consented families, and writes the attendance register, as the next chapters show.

Chapter three

Who pays — the budget split#

Every trip answers one question before consent opens: who pays? YESS models it with three figures on the trip. The cost per student is the full price. The school subsidy per student is the slice the school absorbs. The net charge to a family is the cost minus the subsidy, floored at zero. The total school budget is the lump the school sets aside for the trip overall — coach hire, entry tickets, staff per-diem.

From those three numbers, YESS supports every funding shape a real school uses, and routes each to finance automatically:

Four funding shapes

  1. 1

    Family pays in full

    Cost per student set, subsidy zero. When a parent consents, YESS emits an invoice to that family for the full amount.

  2. 2

    School subsidises part

    Cost and subsidy both set. The family is billed only the net (cost minus subsidy); the parent letter shows the breakdown so they see what the school absorbed.

  3. 3

    Free for students

    Net charge is zero, but the school still spends real money. Set the total school budget and YESS raises a school expense instead — the founder's 'free for students, an expense for the school' case.

  4. 4

    Both, or neither

    A trip can emit a family invoice and a school expense, just one, or none. The funding shape is whatever the three numbers describe — nothing is hard-wired.

When a trip is approved or confirmed with a positive school budget, YESS raises a finance expense automatically — a pending approval row in a “Field Trips” category, scoped to the trip's department, waiting for the bursar at /dashboard/expenses. The emission is idempotent: a re-approval never doubles the expense.

Chapter five

Laying on the bus#

A trip might walk to the local museum, or the families might drop their children at the destination — in which case the school arranges nothing. But when the school needs to lay on a coach, the roster's transport panel is the handoff. Mark the trip transport required and its transport status flips to requested.

That requested flag is the boundary between academics and the transport office. The transport team picks up requested trips at /dashboard/transport/requests, materialises a real transport request from the trip's details — destination, departure and return times, supervising staff, an estimated headcount from the consented roster — and once a vehicle, route, and driver are assigned, the trip's transport status flips to confirmed. The whole transport network — vehicles, routes, drivers, incidents — has its own handbook at the Transport module.

Chapter six

The register that travels#

Here is the safeguarding heart of the module. When a trip crosses into an active state — approved, consent open or closed, in progress, or completed — YESS writes the attendance register on the students' behalf. For every consented (or waiver) attendee, for every day of the trip, for every period they would have sat in their own section, it marks an attendance entry with the status field trip.

The effect on the classroom is immediate and important: the teacher who would otherwise be looking at an empty seat sees the student shaded out as on a field trip, so nobody is ever wrongly marked absent. The auto-mark is idempotent (a unique key per trip, student, period, and date means replays and late-joiners never duplicate a mark), and if a student is added to the roster after the trip is already active, just that student's periods are auto-marked. Cancel the trip and every auto-mark it wrote is reversed.

Covering the lead teacher

The students are not the only ones leaving the timetable — the lead teacher is too. The roster surfaces the lead's own teaching periods that fall inside the trip window and lets the manager assign a substitute for each one, in place, with a single pick. The substitution flows into the timetable's cover engine like any other, so the school is never short a teacher because a colleague took a class to the botanical garden.

Chapter seven

What makes the field-trip module elite#

Six things that make this elite

  1. 1

    Request → approval, enforced at the row

    A teacher files; a manager decides. The rule that a teacher cannot self-approve is a database guard, not a UI check, and the approval is stamped server-side. The request can't be lost — every manager is notified and deep-linked to the queue the moment it lands.

  2. 2

    Every funding shape, routed automatically

    Family-pays, school-subsidises, free-to-student, both, or neither — the three budget numbers describe the shape, and YESS emits the family invoice and/or the school expense to finance on its own, idempotently.

  3. 3

    Consent that bills itself

    A parent tapping Consent in the portal raises that family's invoice for the net amount in the same chain — no second step, no manual reconciliation between who said yes and who got billed.

  4. 4

    The register leaves with the class

    Active trips auto-mark every traveller as on a field trip across all their periods, so a student on an excursion can never be marked absent in a classroom they were never going to be in. Cancel and it all reverses.

  5. 5

    No teacher left uncovered

    The lead teacher's own lessons during the trip are surfaced with an inline substitute picker, so taking a class out never quietly leaves another class unattended.

  6. 6

    Programme-aware activity catalogues

    One Sciences department keeps an IB CAS activity, a GCE field trip, and a BAC sortie scolaire as distinct catalogues via the trip-kind tag — the curriculum's own vocabulary, not a flattened generic list.

Planned features

What comes next#

The pieces below are modelled or partly wired today and are being finished in upcoming releases. They are listed here so you can plan around them honestly.

Four honest gaps

  1. 1

    On-the-day check-in

    Each attendee carries an attendance status field — checked-in, no-show, left-early, medical-emergency — for the head-count at the gate. The data model is in place; a dedicated day-of-trip check-in surface (ideally on mobile) is the next step.

  2. 2

    In-portal consent capture

    Parents consent and decline from the portal today. Capturing the risk-assessment acknowledgement and the emergency-contact confirmation inside the same flow — rather than as office-entered fields — is planned.

  3. 3

    A school-wide trips calendar

    Trips surface inside their department and the approval queue. A consolidated, school-wide field-trips view alongside the shared calendar — every excursion this term in one place — is on the roadmap.

  4. 4

    Consent-dispatch fan-out

    Opening consent leaves a trail the notifications cluster can pick up; the automatic email/SMS/WhatsApp dispatch to every affected parent on consent-open is being wired through the same dispatcher the rest of the platform uses.

The full lifecycle

A trip, request to safe return#

Week one. A Sciences teacher files a request for a botanical-garden trip — destination, dates, learning objectives, cost per student. Every manager is notified.

Approval. The deputy opens the trip-requests queue, sees the cost breakdown, and approves. The teacher is notified; the trip's school budget raises a pending expense for the bursar.

Consent. The teacher builds the roster from the section list. Consent opens; parents see the request in their portal. As each family consents, their invoice for the net charge is raised automatically. The office prints the parent letter for the few families who prefer paper.

Logistics. The trip is marked transport-required; the transport office picks up the request, assigns a coach and a driver, and confirms. The manager assigns substitutes for the lead teacher's two lessons that fall on trip day.

Trip day. The trip is in progress. Every traveller's periods are already marked field trip, so no classroom teacher marks them absent. The class goes, learns, and comes home.

After. The trip is completed. The invoices sit on the families' accounts; the expense sits on the school's books; the register tells the true story of where every student was. Nothing was reconciled by hand.

Adjacent modules

Where field trips connect#

Tutorial

Do it step by step#

Run a field trip end to end, from the teacher's request to the register that comes home safe. Six steps, in the order the school actually works.

  1. 1

    File or plan the trip

    From a department mini-world at /dashboard/departments, a teacher files a request (it lands in requested) or a manager plans one directly (planned). Set the name, dates, destination, learning objectives, and the cost per student.

    Pick the right trip kind — field trip, CAS activity, sortie scolaire — so the trip lands in its programme's own activity catalogue.

  2. 2

    Approve the request

    A manager opens the queue at /dashboard/departments/trip-requests, reads the cost breakdown, and approves or rejects with a reason. Approving stamps the approver server-side and — if there's a school budget — raises a pending expense for the bursar.
  3. 3

    Set the budget split

    Decide who pays: a cost per student the family covers, a school subsidy that lowers the net, or a total school budget that makes the trip free for students and an expense for the school. The net charge is the cost minus the subsidy, floored at zero.

    Free-to-student trips still cost money — set the total school budget so the coach and tickets land on the school's books, not nobody's.

  4. 4

    Build the roster, open consent

    In the roster dialog, pick a section and bulk-enrol students. Consent opens; parents see the request at /portal/field-trips and tap Consent or Decline. Each consent raises that family's invoice for the net automatically; print the parent letter for paper families.
  5. 5

    Request the bus, cover the teacher

    Mark the trip transport-required; the transport office picks it up at /dashboard/transport/requests and assigns a vehicle. Back in the roster, assign a substitute for each of the lead teacher's periods that fall on trip day.
  6. 6

    Travel — the register follows

    Once the trip is active, every traveller's periods are already marked field trip, so no classroom teacher marks them absent. The class goes and comes home; the invoices and the expense are already on the books. If a trip is called off, cancel it — never delete — and every auto-mark reverses.

Request to consent to bus to register — every concern a trip raises landed on the module that owns it, with no spreadsheet in between.