# 📚 Complete Technical Documentation of Custom Education Odoo Addons This document contains a comprehensive, field-level technical summary of all **10 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 Odoo `res.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 to `education.campus`. - `head_teacher_id` *(Many2one)*: Relates to `res.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 to `education.department`. - `level_id` *(Many2one)*: Academic level (`Undergraduate`, `Postgraduate`). - `duration` *(Integer)*: Number of duration units (e.g., `2`). - `duration_unit` *(Selection)*: `year`, `month`, or `semester`. - `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)*: Parent `education.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`)** ```yaml 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 to `education.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 Odoo `res.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`)** ```yaml 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 to `education.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`)** ```yaml 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 of `education.fee.structure.line` items. - **Fields (`education.fee.structure.line`)**: - `category_id` *(Many2one, Required)*: Relates to `education.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/0001` or `PAY/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`)** ```yaml 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`)** ```yaml 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 hidden `db` field 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`)** ```yaml 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. --- ## 8. 📝 `education_exam` (Education Examinations) ### **Module Overview** Complete College Examination Module featuring exam scheduling, grading systems, marks entry, and portal integration for students to view results and schedules. --- ### **Models** - **`education.exam`**: Examination - **`education.exam.line`**: Exam Schedule Line - **`education.exam.type`**: Examination Type - **`education.exam.result`**: Exam Result - **`education.exam.result.line`**: Exam Result Line - **`education.grading.system`**: Grading System - **`education.grade`**: Education Grade - **`education.subject`**: Education Subject --- ## 9. 🎓 `education_lms` (Learning Management System) ### **Module Overview** Learning Management System Foundation for Education managing courses, sections, lessons, materials, assignments, and student submissions. --- ### **Models** - **`education.lms.course`**: LMS Course - **`education.lms.section`**: LMS Section - **`education.lms.lesson`**: LMS Lesson - **`education.lms.material`**: LMS Material - **`education.lms.assignment`**: LMS Assignment - **`education.lms.submission`**: LMS Submission --- ## 10. ⏰ `education_timetable` (Academic Timetable) ### **Module Overview** Native Timetable module integrated with the education base architecture. Provides robust server-side validation for room, faculty, and student population conflicts. --- ### **Models** - **`education.room`**: Education Room/Venue - **`education.timetable.slot`**: Timetable Slot --- ## 11. 📚 `education_library` (Library Management System) ### **Module Overview** Provides comprehensive library management including book cataloging, physical copies, member management, issuing/returning of books, reservations, and automated fine calculations. --- ### **Models** - **`education.library`**: Library Branch - **`education.library.category`**: Book Category - **`education.library.book`**: Book Master - **`education.library.book.copy`**: Physical Book Copy - **`education.library.member`**: Library Member - **`education.library.issue`**: Book Issue / Return Record - **`education.library.reservation`**: Book Reservation - **`education.library.fine`**: Library Fine --- ## 📋 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 | | **`education_exam`** | Examination Management | `education.exam`, `education.exam.result`, `education.subject`, `education.grading.system` | Exam Schedule, Grading Views, Student Portal Results | | **`education_lms`** | Learning Management System | `education.lms.course`, `education.lms.assignment`, `education.lms.submission` | Course Views, Submissions, Portal LMS Templates | | **`education_timetable`** | Academic Timetable | `education.room`, `education.timetable.slot` | Room Management, Timetable Slots | | **`education_library`** | Library Management | `education.library.book`, `education.library.member`, `education.library.issue` | Book Catalog, Issues & Returns, Library Fine Ledger |