mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-01 03:09:09 +00:00
fix: academic term and year date validations
This commit is contained in:
@@ -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]] };
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user