Version: education v16.0.1
Component: Fees doctype
Description
fees.json declares an income_account field with fetch_from: fee_structure.income_account:
// education/education/doctype/fees/fees.json
{
"fetch_from": "fee_structure.income_account",
"fieldname": "income_account",
"fieldtype": "Link",
"label": "Income Account",
"options": "Account",
"print_hide": 1
}
However, fee_structure.json has no income_account field. Its only account-related fields are receivable_account and an accounts child table:
// education/education/doctype/fee_structure/fee_structure.json
// Fields: naming_series, program, student_category, academic_term, academic_year,
// components, total_amount, accounts, receivable_account, cost_center, company, ...
// → no income_account field anywhere
Because the DB column for income_account is never created on tabFee Structure, any attempt to create a Fees record fails with:
OperationalError: (1054, "Unknown column 'income_account' in 'SELECT'")
This makes the Fees doctype completely unusable.
Steps to Reproduce
Install education v16.0.1 on a fresh ERPNext site
Create a Fee Structure (fills in successfully, no income_account field visible)
Create a Fees record linking to that Fee Structure
→ OperationalError(1054, "Unknown column 'income_account' in 'SELECT'") is raised
Root Cause
fees.json was updated to add income_account with a fetch_from pointing to fee_structure.income_account, but the corresponding field was never added to fee_structure.json. The DB column therefore doesn't exist on tabFee Structure.
Additionally, fees.py references self.income_account in the validate() method and in the GL entry construction, so the field is load-bearing — not cosmetic.
Expected Behavior
Either:
Option A: Add income_account (Link → Account) to Fee Structure so the fetch works, or
Option B: Remove the fetch_from from fees.json and let income_account be set manually on the Fees record (as fees.py already has a fallback to default_income_account from Company settings)
Environment
Education app: v16.0.1
Frappe/ERPNext: v16 branch
Repository: https://github.com/frappe/education
Version: education v16.0.1
Component: Fees doctype
Description
fees.json declares an income_account field with fetch_from: fee_structure.income_account:
However, fee_structure.json has no income_account field. Its only account-related fields are receivable_account and an accounts child table:
Because the DB column for income_account is never created on tabFee Structure, any attempt to create a Fees record fails with:
This makes the Fees doctype completely unusable.
Steps to Reproduce
Install education v16.0.1 on a fresh ERPNext site
Create a Fee Structure (fills in successfully, no income_account field visible)
Create a Fees record linking to that Fee Structure
→ OperationalError(1054, "Unknown column 'income_account' in 'SELECT'") is raised
Root Cause
fees.json was updated to add income_account with a fetch_from pointing to fee_structure.income_account, but the corresponding field was never added to fee_structure.json. The DB column therefore doesn't exist on tabFee Structure.
Additionally, fees.py references self.income_account in the validate() method and in the GL entry construction, so the field is load-bearing — not cosmetic.
Expected Behavior
Either:
Option A: Add income_account (Link → Account) to Fee Structure so the fetch works, or
Option B: Remove the fetch_from from fees.json and let income_account be set manually on the Fees record (as fees.py already has a fallback to default_income_account from Company settings)
Environment
Education app: v16.0.1
Frappe/ERPNext: v16 branch