School Reference Public

Research & Evidence Base

The evidence base for the ERPat School user guide: the live module files this documentation was written from — the module manifest, controllers, the grade engine and LIS validator libraries, config (permissions, menu, routes, system logs), and migrations — with what each proves.

Guide version: r1 Module version: 0.2.0 Updated: 2026-07-22 Estimated time: 8 min 2 views
REFERENCE

Research & Evidence Base

This guide was written from the live School module source, not from imagination. Every page, route, permission, status word, setting and workflow in this documentation is traceable to a file under modules/School/. This page maps the evidence to what it establishes, so you can verify any claim yourself and keep the guide honest as the module changes.

????
The module is version 0.2.0, slug school, category Academics. It ships 42 school_* tables created per tenant and tracked in migrations_school, depends on the Learn module (courses) only for the optional LMS bridge, and reuses the rest of ERPat (customer accounts for portals, Helpdesk for tickets, core Announcements/Messages/Events for communication).

What lives in the module

21
Controllers
34
Models
3
Libraries (engine, validator, bridge)
7
Migrations (per-tenant)

Alongside these, the module carries the standard ERPat module sidecars — a manifest (module.json), six config/ files, a language/ pack, helpers/, seeders/, views/, tests/, and its own README.md / CHANGELOG.md.


Manifest & configuration

The manifest and config/ sidecars establish the module's identity, its menu, the routes, the RBAC surface, and the audit vocabulary.

FileWhat it establishes
module.jsonIdentity — slug school, enable setting module_school, version 0.2.0, category Academics, the graduation-cap icon, the 42-table database footprint, the dependency on courses (Learn), and the declared permission list.
config/module_config.phpRegistration in Settings → Manage Modules — the module_key (school), display name, icon, and category.
config/permissions.phpThe complete RBAC surface — the base school, the 14 per-page enablers, the CRUD children, and the segregation-of-duties / restricted permits (school_grade_release, school_grade_approve, school_health, school_child_protection, school_export). Proves the whole permission list and the SoD split.
config/menu.phpThe single School sidebar group and its 14 permission-gated children, including the extra gates — module_courses on LMS Bridge and school_visitor_pass_enabled on Visitor Pass.
config/default_menu.phpThe module's slice of the aggregated default left menu (the Left Menu Customization editor's default / "Restore to default").
config/routes.phpEvery route on the module's surface — the 14 staff pages, school/report_cards, school/safeguarding, and the portal routes school/parent, school/student, and the school/portal dispatcher.
config/system_logs.phpThe audited-action catalog — approve_enrollment, reject_enrollment, verify_guardian, view_health, release_grades, view_safeguarding, scan_visitor, export, update_settings — and each action's severity.

Controllers

The 21 controllers under controllers/ are the source of truth for what each screen does — its fields, the gating permissions, the status transitions, and the exact workflow steps documented in the operate pages.

ControllerWhat it establishes
School.phpThe Dashboard — permission-filtered quick-link cards to the pages a user can reach.
School_base.phpThe shared base controller other School controllers extend (module gate + common setup).
School_enrollment.phpThe admissions lifecycle — application create/submit, the auto-copied requirements checklist, the mandatory-requirements approval gate, roster materialisation, and the approve_enrollment / reject_enrollment audits. Backs Enrollment.
School_learners.phpThe learner master — list/filters, the add/edit field set (required first/last name, inline LRN), statuses, the profile modal, and student-portal provisioning. Backs Learners & Guardians.
School_guardians.phpThe guardian directory and the learner↔guardian link — link fields, the unverified-on-create rule, the verify_guardian gate, unlink, and parent-portal provisioning.
School_personnel.phpMarking staff users as school personnel — position, DepEd employee no., adviser-eligible flag; a staff user registers only once.
School_academics.phpThe academic-structure tabs — School Years (and is_current), Terms, Sections (adviser/room/capacity/strand), Subjects, Rooms, and the read-only Reference tab. Backs Academic Structure.
School_attendance.phpThe section register — pick section/date/session, mark present/absent/late/excused with reasons and time-in, bulk-save, and the records browser. Backs Learner Attendance.
School_grades.phpThe class record (section+subject+term), WW/PT/QA encoding, the draft-only edit lock, and the ordered release governance (submit_classapprove_classrelease_class) with the release_grades audit. Backs Grading Engine.
School_report_cards.phpSF9-style generation from released grades — per-subject finals, general average, Promoted/Retained remark, snapshot freeze. Backs Report Cards.
School_communication.phpThe launcher into core Announcements / Messages / Events, each tile gated by its own module setting.
School_support.phpSupport cases — case type, severity, assignment, the SC-yymmdd-XXXX number, progress notes, and the open→investigating→resolved/referred/closed flow, plus the guarded link to Safeguarding.
School_safeguarding.phpThe confidential child-protection / anti-bullying surface — segregated from Support, restricted notes, and the view_safeguarding audit on every read. Backs Data Privacy & Safeguarding.
School_visitors.phpVisitor passes — issue, the generated pass code, check-in (scan_visitor), check-out, revoke, and the issued/active/used/expired/revoked statuses. Backs the Gate playbook.
School_facilities.phpThe room summary and the fail-safe reuse of Helpdesk for facility/maintenance tickets.
School_reports.phpThe summary counts, the LIS/EBEIS validation run, and the SF1-style masterlist export (export audit, internal-only). Backs Reports & Compliance.
School_settings.phpThe School Settings page — portal toggles, visitor-pass toggle, default grading policy; saving audited as update_settings.
School_lms.phpThe LMS Bridge — link a section to a Learn course, push the roster, the fail-safe notice when Learn is off, and the enrolled/skipped sync result.
School_parent_portal.phpThe parent portal — verified-children-only, released-grades-only visibility, attendance summary, active enrollment, and the IDOR-proof child resolution from the session user.
School_student_portal.phpThe student portal — learner resolved from school_learners.user_id, own released grades / attendance / enrollment, and the "no record" page for unlinked accounts.
School_portal.phpThe portal dispatcher behind school/portal that routes to the parent/student surfaces.

Libraries — the engines

Three libraries under libraries/ carry the module's specialised logic and are the authority for the grading, compliance, and integration claims in this guide.

LibraryWhat it establishes
School_grade_engine.phpThe pure, config-driven grade computation — DepEd Order 8 s.2015 (per-subject-group WW/PT/QA weights + transmutation table) and MATATAG DO10 s.2024 (uniform 25/50/25, floor-60 linear), whole-number final grades floored at 60 / capped at 100, and the descriptors. Proves that weights are data, not code.
School_lis_validator.phpThe LIS/EBEIS learner-data check — missing/malformed LRNs, incomplete demographics, duplicate LRNs. Proves the validator is output-only: it never submits to or replaces DepEd LIS/EBEIS.
School_lms_bridge.phpThe section↔course link and roster push, and the fail-safe behaviour when the Learn module is disabled — School grading and portals are unaffected.

Models

The 34 models under models/ define the tables and the queries behind every screen. They confirm table names, the soft-delete convention, and the relationships (for example, that the learner↔guardian link and its verified flag are their own record). Grouped by domain:

DomainModels
Academic structureSchool_campuses_model, School_years_model, School_terms_model, School_sections_model, School_subjects_model, School_subject_groups_model, School_rooms_model, School_grade_levels_model, School_tracks_model, School_strands_model
Learners & guardiansSchool_learners_model, School_learner_identifiers_model, School_learner_documents_model, School_learner_status_history_model, School_guardians_model, School_learner_guardians_model, School_personnel_model
EnrollmentSchool_enrollment_applications_model, School_enrollment_requirements_model, School_document_requirements_model, School_enrollment_decisions_model, School_learner_enrollments_model
AttendanceSchool_attendance_records_model, School_attendance_reasons_model
Grades & report cardsSchool_grade_schemes_model, School_grade_components_model, School_quarterly_grades_model, School_grade_approvals_model, School_report_cards_model
LMS bridgeSchool_lms_links_model
Support & visitorsSchool_support_cases_model, School_case_notes_model, School_visitor_passes_model, School_visitor_logs_model

Migrations

Seven timestamped migrations under migrations/ build the 42 school_* tables. They run per tenant (tracked in migrations_school) via php erpat migrate:modules, which is why the tables must be created and validated on every tenant DB before the module is used there.

MigrationEstablishes
…_create_school_foundation_tables.phpCampuses, school years/terms, sections, subjects/subject groups, rooms, and the seeded grade-level / track / strand reference data.
…_create_school_people_tables.phpLearners, learner identifiers (LRN), guardians, the learner↔guardian link, and personnel.
…_create_school_enrollment_tables.phpApplications, the document-requirement catalog and per-application checklist, decisions, and the materialised roster enrollments.
…_create_school_attendance_tables.phpThe attendance records and the attendance-reasons list.
…_create_school_grades_tables.phpGrade schemes, grade components, quarterly grades, the grade-approvals history, and report cards.
…_create_school_lms_tables.phpThe section↔Learn-course link records for the LMS bridge.
…_create_school_support_visitor_tables.phpSupport/safeguarding cases and case notes, and visitor passes and their gate logs.

Module metadata & statutory basis

Two more sources round out the evidence: the module's own metadata and the Philippine statutes and DepEd systems the design implements.

????
README.md & CHANGELOG.md

The module's own description and version history (rendered in Manage Modules). They confirm the 0.2.0 scope and the honesty caveats — the SF exports and LIS validator are internal aids, and the LMS bridge / facility tickets are fail-safe.

Statutory sources

RA 10533 (K to 12), DepEd Order 8 s.2015 and MATATAG DepEd Order 010 s.2024 (grading), RA 10173 (Data Privacy Act), RA 7610 & RA 10627 (child protection & anti-bullying). Forms/systems: LRN, SF1, SF9, LIS, EBEIS.


Keeping this guide honest

When the module changes, update the guide from the source — never the other way round.
  1. Verify against the file, not memory

    Any claim here should be checkable in the file named in these tables. If a screen behaves differently from the guide, the controller/library is right and the guide is stale.

  2. Bump the version when you edit a page

    Following the ERPat user-guide authoring discipline, changing a page's content means bumping its version and refreshing its "last reviewed" date so the docs portal tracks the change.

  3. Don't invent

    Every feature, permission, status, route and setting in this guide is drawn from the live module. If a needed detail isn't in the source, describe less rather than guess.

See also

Was this guide helpful?

Report a content problem