From 0602848caa3be112a1d34d60cf2fe85192674f0e Mon Sep 17 00:00:00 2001 From: Syed Mujeer Hashmi Date: Thu, 28 Jul 2022 11:00:39 +0400 Subject: [PATCH] fix: The Fee details are not fetched in Program Enrollment (#31153) --- erpnext/education/api.py | 30 ++++++++++++++----- .../program_enrollment/program_enrollment.js | 11 +++++-- .../program_enrollment/program_enrollment.py | 2 ++ 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/erpnext/education/api.py b/erpnext/education/api.py index 8fd1725b2de..5b564247ccb 100644 --- a/erpnext/education/api.py +++ b/erpnext/education/api.py @@ -199,16 +199,32 @@ def get_fee_components(fee_structure): @frappe.whitelist() -def get_fee_schedule(program, student_category=None): +def get_fee_schedule(program, student_category=None, academic_year=None): """Returns Fee Schedule. - :param program: Program. - :param student_category: Student Category + :param student_category: Student Category. + :param academic_year: Academic Year. """ - fs = frappe.get_all( - "Program Fee", - fields=["academic_term", "fee_structure", "due_date", "amount"], - filters={"parent": program, "student_category": student_category}, + filters = {} + if program: + filters = {"program": program} + + if student_category: + filters["student_category"] = student_category + + if academic_year: + filters["academic_year"] = academic_year + + fs = frappe.db.get_list( + "Fee Schedule", + filters=filters, + fields=[ + "academic_term", + "fee_structure", + "student_category", + "due_date", + "total_amount as amount", + ], order_by="idx", ) return fs diff --git a/erpnext/education/doctype/program_enrollment/program_enrollment.js b/erpnext/education/doctype/program_enrollment/program_enrollment.js index e92d063602d..621065e1925 100644 --- a/erpnext/education/doctype/program_enrollment/program_enrollment.js +++ b/erpnext/education/doctype/program_enrollment/program_enrollment.js @@ -60,12 +60,15 @@ frappe.ui.form.on('Program Enrollment', { method: 'erpnext.education.api.get_fee_schedule', args: { 'program': frm.doc.program, - 'student_category': frm.doc.student_category + 'student_category': frm.doc.student_category, + 'academic_year': frm.doc.academic_year }, callback: function(r) { if (r.message) { + cur_frm.clear_table("fees"); + frm.refresh_fields('fees'); frm.set_value('fees' ,r.message); - frm.events.get_courses(frm); + frm.refresh_fields('fees'); } } }); @@ -76,6 +79,10 @@ frappe.ui.form.on('Program Enrollment', { frappe.ui.form.trigger('Program Enrollment', 'program'); }, + academic_year: function() { + frappe.ui.form.trigger('Program Enrollment', 'program'); + }, + get_courses: function(frm) { frm.set_value('courses',[]); frappe.call({ diff --git a/erpnext/education/doctype/program_enrollment/program_enrollment.py b/erpnext/education/doctype/program_enrollment/program_enrollment.py index 69d281b9386..9f70dc8d316 100644 --- a/erpnext/education/doctype/program_enrollment/program_enrollment.py +++ b/erpnext/education/doctype/program_enrollment/program_enrollment.py @@ -105,6 +105,8 @@ class ProgramEnrollment(Document): "academic_term": d.academic_term, "fee_structure": d.fee_structure, "program": self.program, + "student_batch": self.student_batch_name, + "student_category": self.student_category, "due_date": d.due_date, "student_name": self.student_name, "program_enrollment": self.name,