fix: academic term and year date validations

This commit is contained in:
Rucha Mahabal
2020-09-15 17:52:47 +05:30
parent f5eb45bf23
commit 42d7acf522
2 changed files with 54 additions and 22 deletions

View File

@@ -2,16 +2,24 @@
// For license information, please see license.txt // For license information, please see license.txt
frappe.ui.form.on("Program Enrollment", { frappe.ui.form.on('Program Enrollment', {
setup: function(frm) { setup: function(frm) {
frm.add_fetch('fee_structure', 'total_amount', 'amount'); frm.add_fetch('fee_structure', 'total_amount', 'amount');
}, },
onload: function(frm, cdt, cdn){ onload: function(frm) {
frm.set_query("academic_term", "fees", function(){ frm.set_query('academic_term', function() {
return{ return {
"filters":{ 'filters':{
"academic_year": (frm.doc.academic_year) 'academic_year': (frm.doc.academic_year)
}
};
});
frm.set_query('academic_term', 'fees', function() {
return {
'filters':{
'academic_year': (frm.doc.academic_year)
} }
}; };
}); });
@@ -24,9 +32,9 @@ frappe.ui.form.on("Program Enrollment", {
}; };
if (frm.doc.program) { if (frm.doc.program) {
frm.set_query("course", "courses", function(doc, cdt, cdn) { frm.set_query('course', 'courses', function(doc, cdt, cdn) {
return{ return {
query: "erpnext.education.doctype.program_enrollment.program_enrollment.get_program_courses", query: 'erpnext.education.doctype.program_enrollment.program_enrollment.get_program_courses',
filters: { filters: {
'program': frm.doc.program 'program': frm.doc.program
} }
@@ -34,9 +42,9 @@ frappe.ui.form.on("Program Enrollment", {
}); });
} }
frm.set_query("student", function() { frm.set_query('student', function() {
return{ return{
query: "erpnext.education.doctype.program_enrollment.program_enrollment.get_students", query: 'erpnext.education.doctype.program_enrollment.program_enrollment.get_students',
filters: { filters: {
'academic_year': frm.doc.academic_year, 'academic_year': frm.doc.academic_year,
'academic_term': frm.doc.academic_term 'academic_term': frm.doc.academic_term
@@ -49,14 +57,14 @@ frappe.ui.form.on("Program Enrollment", {
frm.events.get_courses(frm); frm.events.get_courses(frm);
if (frm.doc.program) { if (frm.doc.program) {
frappe.call({ frappe.call({
method: "erpnext.education.api.get_fee_schedule", method: 'erpnext.education.api.get_fee_schedule',
args: { args: {
"program": frm.doc.program, 'program': frm.doc.program,
"student_category": frm.doc.student_category 'student_category': frm.doc.student_category
}, },
callback: function(r) { callback: function(r) {
if(r.message) { if(r.message) {
frm.set_value("fees" ,r.message); frm.set_value('fees' ,r.message);
frm.events.get_courses(frm); frm.events.get_courses(frm);
} }
} }
@@ -65,17 +73,17 @@ frappe.ui.form.on("Program Enrollment", {
}, },
student_category: function() { student_category: function() {
frappe.ui.form.trigger("Program Enrollment", "program"); frappe.ui.form.trigger('Program Enrollment', 'program');
}, },
get_courses: function(frm) { get_courses: function(frm) {
frm.set_value("courses",[]); frm.set_value('courses',[]);
frappe.call({ frappe.call({
method: "get_courses", method: 'get_courses',
doc:frm.doc, doc:frm.doc,
callback: function(r) { callback: function(r) {
if(r.message) { if(r.message) {
frm.set_value("courses", r.message); frm.set_value('courses', r.message);
} }
} }
}) })
@@ -84,10 +92,10 @@ frappe.ui.form.on("Program Enrollment", {
frappe.ui.form.on('Program Enrollment Course', { frappe.ui.form.on('Program Enrollment Course', {
courses_add: function(frm){ courses_add: function(frm){
frm.fields_dict['courses'].grid.get_field('course').get_query = function(doc){ frm.fields_dict['courses'].grid.get_field('course').get_query = function(doc) {
var course_list = []; var course_list = [];
if(!doc.__islocal) course_list.push(doc.name); if(!doc.__islocal) course_list.push(doc.name);
$.each(doc.courses, function(idx, val){ $.each(doc.courses, function(_idx, val) {
if (val.course) course_list.push(val.course); if (val.course) course_list.push(val.course);
}); });
return { filters: [['Course', 'name', 'not in', course_list]] }; return { filters: [['Course', 'name', 'not in', course_list]] };

View File

@@ -7,12 +7,14 @@ import frappe
from frappe import msgprint, _ from frappe import msgprint, _
from frappe.model.document import Document from frappe.model.document import Document
from frappe.desk.reportview import get_match_cond, get_filters_cond from frappe.desk.reportview import get_match_cond, get_filters_cond
from frappe.utils import comma_and from frappe.utils import comma_and, get_link_to_form, getdate
import erpnext.www.lms as lms import erpnext.www.lms as lms
class ProgramEnrollment(Document): class ProgramEnrollment(Document):
def validate(self): def validate(self):
self.validate_duplication() self.validate_duplication()
self.validate_academic_year()
self.validate_academic_term()
if not self.student_name: if not self.student_name:
self.student_name = frappe.db.get_value("Student", self.student, "title") self.student_name = frappe.db.get_value("Student", self.student, "title")
if not self.courses: if not self.courses:
@@ -23,6 +25,28 @@ class ProgramEnrollment(Document):
self.make_fee_records() self.make_fee_records()
self.create_course_enrollments() self.create_course_enrollments()
def validate_academic_year(self):
start_date, end_date = frappe.db.get_value("Academic Year", self.academic_year, ["year_start_date", "year_end_date"])
if self.enrollment_date:
if start_date and getdate(self.enrollment_date) < getdate(start_date):
frappe.throw(_("Enrollment Date cannot be before the Start Date of the Academic Year {0}").format(
get_link_to_form("Academic Year", self.academic_year)))
if end_date and getdate(self.enrollment_date) > getdate(end_date):
frappe.throw(_("Enrollment Date cannot be after the End Date of the Academic Term {0}").format(
get_link_to_form("Academic Year", self.academic_year)))
def validate_academic_term(self):
start_date, end_date = frappe.db.get_value("Academic Term", self.academic_term, ["term_start_date", "term_end_date"])
if self.enrollment_date:
if start_date and getdate(self.enrollment_date) < getdate(start_date):
frappe.throw(_("Enrollment Date cannot be before the Start Date of the Academic Term {0}").format(
get_link_to_form("Academic Term", self.academic_term)))
if end_date and getdate(self.enrollment_date) > getdate(end_date):
frappe.throw(_("Enrollment Date cannot be after the End Date of the Academic Term {0}").format(
get_link_to_form("Academic Term", self.academic_term)))
def validate_duplication(self): def validate_duplication(self):
enrollment = frappe.get_all("Program Enrollment", filters={ enrollment = frappe.get_all("Program Enrollment", filters={
"student": self.student, "student": self.student,