Skip to content

Custom Reports

Custom Reports

Build personalized reports tailored to your institution’s specific needs.

Time Required: 15-30 minutes per report Module: Reports (Enterprise) User Role: Report Manager, Admin


Prerequisites

  • Enterprise edition installed
  • Report builder module enabled
  • Understanding of data models

Overview

Custom reports allow you to:

  • Select specific data fields
  • Apply custom filters
  • Define groupings and subtotals
  • Create calculated fields
  • Save as reusable templates

Create Custom Report

Step 1: Navigate to Report Builder

  1. Go to OpenEduCat > Reports > Custom Reports
  2. Click Create to start new report

Step 2: Select Data Model

Choose the primary data source:

ModelData Available
StudentsStudent records, enrollments
AttendanceAttendance sheets, status
ExamsExam sessions, results
FeesFee structures, payments
LibraryBooks, issues, returns
FacultyStaff records, workload

Step 3: Choose Fields

Add fields to include in report:

  1. Click Add Field
  2. Select from available fields:
Field TypeExamples
TextName, Code, Description
NumberMarks, Amount, Count
DateBirth Date, Enrollment Date
SelectionStatus, State
RelationCourse, Batch, Faculty
  1. Set field order by dragging
  2. Configure display options

Step 4: Define Filters

Add filter conditions:

FilterOperatorValue
Courseequals”B.Sc Computer Science”
StatusinActive, On Hold
DatebetweenStart and End

Step 5: Set Grouping

Group data for subtotals:

  1. Click Grouping tab
  2. Add group levels:
    • Level 1: Course
    • Level 2: Batch
    • Level 3: Subject
  3. Configure subtotals

Step 6: Configure Layout

OptionDescription
OrientationPortrait/Landscape
Page SizeA4, Letter, Legal
HeadersColumn headers
FootersPage numbers, totals
StylingColors, fonts

Step 7: Save Report

  1. Enter report name
  2. Set category
  3. Define permissions
  4. Click Save

Report Elements

Calculated Fields

Create computed values:

CalculationFormula Example
Sumsum(marks)
Averageavg(attendance_pct)
Countcount(student_id)
Percentage(present/total)*100
Concatenatefirst_name + ' ' + last_name

Conditional Formatting

Apply formatting rules:

ConditionFormat
Marks < 40Red, Bold
Attendance < 75Orange
Status = ‘Active’Green

Charts and Graphs

Add visual elements:

Chart TypeUse For
BarComparisons
LineTrends over time
PieDistribution
TableDetailed data

Save and Reuse

Save as Template

  1. Configure report
  2. Click Save as Template
  3. Enter template name
  4. Set sharing options

Run Saved Report

  1. Go to Custom Reports
  2. Find your report
  3. Click to run
  4. Modify filters if needed
  5. Generate output

Field Reference

Report Configuration

Technical FieldUI LabelTypeNotes
nameNameCharReport name
model_idModelMany2oneData source
field_idsFieldsMany2manySelected fields
filter_idsFiltersOne2manyFilter conditions
group_byGroup ByMany2manyGrouping fields
is_templateTemplateBooleanSaved template

Example Reports

Student Fee Status

Fields: Student Name, Course, Total Due, Paid, Balance Filter: Balance > 0 Group By: Course, Batch Output: Outstanding dues list

Attendance Summary

Fields: Student, Subject, Present %, Absent Count Filter: Date Range, Course Group By: Subject Calculation: Attendance percentage

Faculty Workload

Fields: Faculty, Subject, Hours, Student Count Filter: Academic Year Group By: Department Total: Weekly teaching hours


Troubleshooting

Cannot select field

Problem: Desired field not in list.

Solutions:

  1. Check you selected correct model
  2. Field may be from related model
  3. Add relation first, then access field
  4. Some fields may be restricted

Report runs slowly

Problem: Large report takes long time.

Solutions:

  1. Add more specific filters
  2. Limit date range
  3. Reduce number of fields
  4. Remove complex calculations
  5. Export to Excel for local processing

Grouping not working

Problem: Subtotals not calculating.

Solutions:

  1. Verify aggregation function set
  2. Check field type supports grouping
  3. Ensure proper group order
  4. Test with simpler grouping first


Last updated: January 2026