20 KiB
📚 Complete Technical Documentation of Custom Education Odoo Addons
This document contains a comprehensive, field-level technical summary of all 7 custom education modules built for the Odoo Education & Student Portal ecosystem.
1. 🏛️ education_base (Base Academic Setup & Hierarchy)
Module Overview
The education_base module establishes the core structural hierarchy of the educational institution. It defines campuses, departments, degree programs, academic levels, and academic calendar timelines (years and terms).
Models & Detailed Field Definitions
1.1 education.campus (Campus Master)
- Functionality: Represents physical or virtual university campuses.
- Fields:
name(Char, Required): The official name of the campus.code(Char, Required): Unique abbreviation code.street/street2/city/zip/state_id/country_id(Location fields): Physical address details.phone/email(Char): Contact details for campus administration.company_id(Many2one): Associated Odoores.company.active(Boolean): Soft-delete toggle (default:True).
1.2 education.department (Department Master)
- Functionality: Academic departments within a campus (e.g., Computer Science, Mechanical).
- Fields:
name(Char, Required): Department name.code(Char, Required): Short code.campus_id(Many2one, Required): Relates toeducation.campus.head_teacher_id(Many2one): Relates tores.partner(Department Chair / Dean).program_ids(One2many): List of programs offered under this department.company_id(Many2one): Multi-company reference.
1.3 education.program (Academic Program)
- Functionality: Degree or diploma courses (e.g., MCA, B.Tech, MBA).
- Fields:
name(Char, Required): Program name.code(Char, Required): Program short code.department_id(Many2one, Required): Relates toeducation.department.level_id(Many2one): Academic level (Undergraduate,Postgraduate).duration(Integer): Number of duration units (e.g.,2).duration_unit(Selection):year,month, orsemester.description(Text): Overview of course curriculum.
1.4 education.academic.year (Academic Session)
- Functionality: Defines full academic years and tracks current active session.
- Fields:
name(Char, Required): Name of the academic year (e.g.,"2026 - 2027").code(Char, Required): Unique code.start_date(Date, Required): Start date of session.end_date(Date, Required): End date of session.current_year(Boolean): Indicates if this is the active operational year.state(Selection):draft,active,closed.term_ids(One2many): Semesters/Terms within this year.
1.5 education.academic.term (Academic Semester / Term)
- Functionality: Sub-divisions of an academic year (e.g., Semester 1, Semester 2).
- Fields:
name(Char, Required): Term name.code(Char, Required): Term code (e.g.,"SEM1").academic_year_id(Many2one, Required): Parenteducation.academic.year.sequence(Integer): Term ordering (1, 2, 3...).start_date/end_date(Date): Start and end dates of term.state(Selection):draft,active,completed.
1.6 education.configuration (Education Configuration)
- Functionality: Global institution-level settings and defaults.
- Fields:
school_name/school_code(Char, Required): Institution name and code.default_campus_id/default_academic_year_id/default_term_id(Many2one): Default hierarchical selections for the institution.logo(Binary): Institution logo.contact_email/contact_phone(Char): Global contact information.
1.7 education.academic.level (Academic Level)
- Functionality: Classification of education levels (e.g., Undergraduate, Postgraduate).
- Fields:
name(Char, Required): Level name.code(Char, Required): Level code.sequence(Integer): Ordering priority.description(Text): Additional details about the level.
Record Examples (student_db)
Campus Record:
ID: 1 | Name: "Main Campus" | Code: "MC" | City: "Thanjavur"
Department Record:
ID: 1 | Name: "School of Computing" | Code: "SCS" | Campus: "Main Campus"
Program Record:
ID: 1 | Name: "Master of Computer Applications - Lateral Entry" | Code: "MCA-L" | Duration: 2 Years
Academic Year Record:
ID: 1 | Name: "2026 - 2027" | Code: "053" | Start: 2026-07-03 | End: 2027-07-03 | Current: True
Academic Term Record:
ID: 1 | Name: "Semester 1" | Code: "SEM1" | Sequence: 1 | Year: "2026 - 2027"
2. 👨🎓 education_student (Student Lifecycle & Profile Management)
Module Overview
Central student registry handling personal profiles, academic placement, guardian information, document attachments, portal user links, and automated financial/attendance computations.
Models & Detailed Field Definitions
2.1 education.student (Student Profile)
- Personal Details:
first_name/middle_name/last_name(Char): Individual name components.full_name(Char, Computed): Concatenated name ("Aadhav S").gender(Selection):male,female,other.date_of_birth(Date): Date of birth.age(Integer, Computed): Calculated age in years.email/phone/mobile(Char): Contact info.image_1920(Image): Student profile photo.
- Academic Identification & Placement:
admission_number(Char): Auto-generated admission ID ("ADM/2026/001").roll_number(Char): Roll number ("ROLL/0003").registration_number(Char): University registration number.campus_id/department_id/program_id/academic_year_id/academic_term_id(Many2one): Relates student to institutional hierarchy.status(Selection):draft,applied,admitted,enrolled,graduated,withdrawn.
- Parents & Guardian Information:
father_name/father_phone/father_occupation(Char): Father's details.mother_name/mother_phone/mother_occupation(Char): Mother's details.guardian_name/guardian_phone/guardian_email/guardian_address(Char/Text): Guardian details.
- Document Storage:
doc_passport,doc_aadhaar,doc_birth_cert,doc_transfer_cert,doc_community_cert,doc_mark_sheets(Binary & Char): Stores uploaded compliance documents and filenames.
- Computed Financial Summary:
total_fees(Monetary, Computed): Total assigned fees (₹34,000.00).total_paid(Monetary, Computed): Sum of all posted payments (₹34,000.00).outstanding_amount(Monetary, Computed): Total due balance (₹0.00).payment_status(Selection, Computed):no_fees,unpaid,partial,fully_paid.ledger_line_ids(One2many): Inverse relation toeducation.student.ledger.
- Computed Attendance Summary:
attendance_pct(Float, Computed): Overall attendance percentage (e.g.,92.5).present_count/absent_count/late_count/medical_leave_count(Integer, Computed): Session counts.
- Portal User Linkage:
portal_user_id(Many2one): Relates to Odoores.users(Portal Account).portal_status(Selection):draft,active,deactivated.
2.2 education.batch (Academic Batch)
- Functionality: Represents a specific student batch/cohort.
- Fields:
name(Char, Required): Batch name.code(Char, Required): Unique batch code.
2.3 education.semester (Academic Semester)
- Functionality: Specific academic semesters decoupled from global terms.
- Fields:
name(Char, Required): Semester name.code(Char, Required): Unique semester code.
2.4 education.section (Academic Section)
- Functionality: Classroom sections or groups for students.
- Fields:
name(Char, Required): Section name.code(Char, Required): Unique section code.
Record Examples (student_db)
Student Record #284:
Admission No: "ADM/2026/001" | Roll No: "ROLL/0003"
Name: "Aadhav S" | Email: "aadhav@gmail.com" | Phone: "9876543210"
Program: "Master of Computer Applications - Lateral Entry"
Total Fees: ₹34,000.00 | Total Paid: ₹34,000.00 | Outstanding: ₹0.00
Payment Status: fully_paid
Attendance %: 92.5% (Present: 37, Absent: 3)
Portal User: aadhav@gmail.com (Status: Active)
3. 📅 education_attendance (Attendance & Absence Tracking)
Module Overview
Provides session-level attendance recording for students, automated calculation of attendance percentages, and historical session logs.
Models & Detailed Field Definitions
3.1 education.attendance (Student Attendance Record)
- Fields:
student_id(Many2one, Required): Relates toeducation.student.date(Date, Required): Attendance session date.state(Selection, Required):present,absent,late,medical_leave.remarks(Text): Optional notes or justification for leave.academic_year_id/academic_term_id(Many2one): Timeline reference.company_id(Many2one): Multi-company lock.
3.2 education.attendance.session (Attendance Session)
- Functionality: Organizes attendance taking by combining date, location, and hierarchy.
- Fields:
name(Char, Required): Session title.campus_id/department_id/program_id/academic_year_id(Many2one, Required): Targeting fields.
3.3 education.attendance.line (Attendance Line Detail)
- Functionality: Individual student attendance state for a session.
- Fields:
session_id(Many2one, Required): Parent session.student_id(Many2one, Required): Target student.status(Selection):present,absent,late.
Record Examples (student_db)
Attendance Entry #101:
Student: "Aadhav S"
Date: 2026-08-10
State: Present
Academic Term: Semester 1
Attendance Entry #102:
Student: "Hareish S"
Date: 2026-08-10
State: Absent
Remarks: "Sick leave - Doctor note submitted"
4. 💳 education_finance (Fees, Payments & Double-Entry Ledger)
Module Overview
Complete financial accounting engine for student fee assessment, payment posting, fee structures, discounts, scholarships, refunds, and real-time double-entry student financial ledgers.
Models & Detailed Field Definitions
4.1 education.fee.category (Fee Head)
- Fields:
name(Char, Required): Name of fee type ("Tuition","Hostel","Library").code(Char, Required): Code (TUI,HOS,LIB,EXM,TRN).
4.2 education.fee.structure & education.fee.structure.line (Fee Template)
- Fields (
education.fee.structure):name(Char, Required): Name of structure (e.g.,"MCA Semester 1 2026 Regular").program_id/academic_year_id/academic_term_id(Many2one): Applicable target.line_ids(One2many): List ofeducation.fee.structure.lineitems.
- Fields (
education.fee.structure.line):category_id(Many2one, Required): Relates toeducation.fee.category.amount(Monetary, Required): Line fee amount.
4.3 education.fee.assignment (Student Fee Assessment)
- Fields:
name(Char): Sequence ("ASSIGN/2026/00001").student_id(Many2one, Required): Target student.fee_structure_id(Many2one): Fee structure applied.total_amount(Monetary): Gross fee amount (₹34,000.00).discount_amount(Monetary): Discount concession applied.net_amount(Monetary): Net due after discounts.amount_paid(Monetary, Computed): Total payments posted against this assignment.state(Selection):draft,assigned,paid,cancelled.
4.4 education.student.payment (Payment Receipt)
- Fields:
name(Char): Sequence number ("PAY/2026/00012").student_id(Many2one, Required): Paying student.fee_assignment_id(Many2one): Associated fee assignment.amount(Monetary, Required): Amount paid (₹34,000.00).payment_date(Date, Required): Date of transaction.payment_method(Selection):cash,bank,online.transaction_id(Char): Payment gateway transaction ref ("pay_Px92kL10z").state(Selection):draft,posted,cancelled.
4.5 education.student.ledger (Double-Entry Financial Ledger)
- Fields:
student_id(Many2one, Required): Target student.date(Date, Required): Transaction date.description(Char, Required): Details (e.g.,"Fee Assessment: MCA Sem 1").reference(Char): Document source (ASSIGN/0001orPAY/0012).debit(Monetary): Increase in student financial liability.credit(Monetary): Decrease in student financial liability (Payment).balance(Monetary, Computed): Cumulative balance due after this entry.
4.6 education.student.discount & education.student.scholarship & education.student.refund
- Models for concession processing, merit scholarship credits, and fee refund disbursements.
4.7 education.fee.type (Fee Type)
- Functionality: Granular categorization of fee categories.
- Fields:
name(Char, Required): Fee type name.category_id(Many2one, Required): Parent category.currency_id(Many2one, Required): Currency for fee.
Record Examples (student_db)
Fee Categories:
- Tuition (Code: TUI)
- Examination (Code: EXM)
- Library (Code: LIB)
Fee Structure: "MCA Semester 1 2026 Regular"
- Line 1: Tuition Fee = ₹30,000.00
- Line 2: Examination & Library Fee = ₹4,000.00
Total: ₹34,000.00
Fee Assignment: ASSIGN/2026/00001
Student: "Aadhav S" | Net Amount: ₹34,000.00 | Amount Paid: ₹34,000.00 | State: Paid
Payment Record: PAY/2026/00012
Student: "Aadhav S" | Amount: ₹34,000.00 | Method: Online Razorpay | State: Posted
Ledger Statement for Aadhav S:
1. 2026-07-05 | Fee Assessment: MCA Sem 1 | Debit: ₹34,000.00 | Credit: ₹0.00 | Balance: ₹34,000.00
2. 2026-07-10 | Payment Received: PAY/0012 | Debit: ₹0.00 | Credit: ₹34,000.00 | Balance: ₹0.00
5. 📊 education_dashboard (Analytics & Management KPIs)
Module Overview
Aggregates metrics across the institution to present real-time key performance indicators (KPIs) for administration.
Models & Detailed Field Definitions
5.1 education.dashboard (Dashboard Helper Model)
- Fields:
total_students(Integer, Computed): Total active enrolled students.total_fees_collected(Monetary, Computed): Cumulative fee revenue.total_outstanding_dues(Monetary, Computed): Aggregate unpaid student balance.average_attendance(Float, Computed): Average student attendance across institution.
Record Examples (student_db)
Dashboard KPI Snapshot:
Total Students: 3
Total Fees Collected: ₹102,000.00
Total Dues Pending: ₹0.00
Average Campus Attendance: 94.2%
6. 🖥️ education_portal (Student Self-Service Portal & Login)
Module Overview
Delivers the student-facing online portal (/my/education), online Razorpay payment integration, announcement notices, profile updates, and the customized 50/50 split-screen login page (/web/login).
Models & Detailed Overrides
6.1 Custom 50/50 Split-Screen Login Page (web.login & web.login_layout)
- Left Panel (Branding & Features):
- Glassmorphism tint over campus background image.
- Dynamic company logo (
/web/image?model=res.company&id=1&field=logo). - Generalized Welcome Headers & Institutional Description text.
- 2x2 Feature Highlights Grid:
- 🔐 Secure Authentication
- ⚡ Fast & Reliable Access
- 📊 Real-Time Information
- ☁️ Cloud-Based Platform
- Right Panel (Form & Authentication):
- Welcome Card with database selector.
- Input field with icon (
Enter your Email). - Password input with interactive eye icon toggle.
- Remember Me & Forgot Password links.
- Google & Microsoft SSO buttons.
- Form action URL preserving parameters (
t-attf-action="/web/login?#{keep_query('*')}") and hiddendbfield to ensure CSRF validation never expires.
6.2 education.announcement (Notice Board)
- Fields:
title(Char, Required): Notice title.content(Html, Required): Formatted announcement content.category(Selection):academic,finance,event,general.target_audience(Selection):all,students,staff.date_published(Datetime): Timestamp of publication.
6.3 education.payment.transaction (Payment Transaction)
- Functionality: Tracks specific payment transactions triggered from the portal.
- Fields:
name(Char, Required): Transaction Reference.
Record Examples (student_db)
Announcement Record #1:
Title: "Semester 1 Examinations Schedule"
Category: Academic
Target Audience: Students
Published Date: 2026-08-20
Content: "The end-semester examinations for Semester 1 will commence from December 5th, 2026."
7. 📄 education_reports (QWeb PDF & Excel Analytics)
Module Overview
Generates formal printable PDF documents and analytical export files for identity cards, payment receipts, attendance rosters, and ledgers.
Reports & Wizards
7.1 Student Fee Receipt (report_student_fee_receipt)
- Printable PDF generated when a payment is posted. Includes transaction reference, student roll number, breakdown of fee items, amount paid, and signature line.
7.2 Student Identity Card (report_student_id_card)
- Printable student badge with student photo, barcode/QR code, roll number, department, blood group, and emergency contact details.
7.3 education.report.wizard (Custom Report Exporter)
- Filter wizard allowing administrators to select date ranges, programs, and fee categories to generate custom PDF/Excel reports.
📋 Comprehensive Summary Matrix of Custom Addons
| Module | Core Purpose | Models Defined | Key Output / UI View |
|---|---|---|---|
education_base |
Institutional Hierarchy | education.campus, education.department, education.program, education.academic.year, education.academic.term, education.configuration, education.academic.level |
Academic Setup Form & Tree Views |
education_student |
Student Registry & Profiles | education.student, education.batch, education.semester, education.section |
Student Master Form, Kanban & Portal User Action |
education_attendance |
Attendance Log & Metrics | education.attendance, education.attendance.session, education.attendance.line |
Daily Attendance Grid & % Computation |
education_finance |
Financials, Fees & Ledgers | education.fee.category, education.fee.type, education.fee.structure, education.fee.assignment, education.student.payment, education.student.ledger, education.student.discount, education.student.scholarship, education.student.refund |
Student Ledger Statement, Fee Structure Form, Payment Receipts |
education_dashboard |
Admin KPIs & Analytics | education.dashboard |
Management KPI Cards & Metrics Summary |
education_portal |
Self-Service Web & Login | education.announcement, education.payment.transaction |
Student Portal /my/education, Razorpay Payment & Split-Screen Login Page |
education_reports |
PDF & Excel Exports | education.report.wizard |
PDF Student ID Cards, Fee Receipts & Ledger Exports |