From 54c4240d9c96daa9666083785a263e9e084ceb2b Mon Sep 17 00:00:00 2001 From: Manas Solanki Date: Wed, 12 Apr 2017 19:24:12 +0530 Subject: [PATCH] Changes in the program enrollment --- erpnext/schools/doctype/course/course.json | 76 ++++---- .../course_schedule/test_course_schedule.py | 10 +- erpnext/schools/doctype/program/program.json | 84 ++++----- .../schools/doctype/program/test_records.json | 4 +- .../program_enrollment/program_enrollment.js | 66 +++++-- .../program_enrollment.json | 162 +++++++++++++++--- .../program_enrollment/program_enrollment.py | 25 ++- .../program_enrollment_course/__init__.py | 0 .../program_enrollment_course.json | 101 +++++++++++ .../program_enrollment_course.py | 10 ++ .../school_settings/school_settings.py | 18 +- .../schools/doctype/student/test_records.json | 6 +- .../doctype/student_group/test_records.json | 8 +- erpnext/schools/utils.py | 8 +- 14 files changed, 440 insertions(+), 138 deletions(-) create mode 100644 erpnext/schools/doctype/program_enrollment_course/__init__.py create mode 100644 erpnext/schools/doctype/program_enrollment_course/program_enrollment_course.json create mode 100644 erpnext/schools/doctype/program_enrollment_course/program_enrollment_course.py diff --git a/erpnext/schools/doctype/course/course.json b/erpnext/schools/doctype/course/course.json index ad4c60ee9a3..b6eda12e80b 100644 --- a/erpnext/schools/doctype/course/course.json +++ b/erpnext/schools/doctype/course/course.json @@ -47,18 +47,19 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "course_code", - "fieldtype": "Data", + "fieldname": "department", + "fieldtype": "Link", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Course Code", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Department", "length": 0, "no_copy": 0, + "options": "Department", "permlevel": 0, "precision": "", "print_hide": 0, @@ -66,7 +67,7 @@ "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 1, + "reqd": 0, "search_index": 0, "set_only_once": 0, "unique": 0 @@ -128,6 +129,35 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "course_code", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Course Code", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -157,36 +187,6 @@ "set_only_once": 0, "unique": 0 }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "department", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 1, - "label": "Department", - "length": 0, - "no_copy": 0, - "options": "Department", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, { "allow_on_submit": 0, "bold": 0, @@ -345,7 +345,7 @@ "istable": 0, "max_attachments": 0, "menu_index": 0, - "modified": "2017-04-10 14:54:59.943676", + "modified": "2017-04-12 20:44:42.048564", "modified_by": "Administrator", "module": "Schools", "name": "Course", @@ -396,7 +396,7 @@ "quick_entry": 0, "read_only": 0, "read_only_onload": 0, - "search_fields": "department", + "search_fields": "course_name", "show_name_in_global_search": 1, "sort_field": "modified", "sort_order": "DESC", diff --git a/erpnext/schools/doctype/course_schedule/test_course_schedule.py b/erpnext/schools/doctype/course_schedule/test_course_schedule.py index e9fce4b45f1..795486a8884 100644 --- a/erpnext/schools/doctype/course_schedule/test_course_schedule.py +++ b/erpnext/schools/doctype/course_schedule/test_course_schedule.py @@ -24,28 +24,28 @@ class TestCourseSchedule(unittest.TestCase): cs1 = make_course_schedule_test_record(simulate= True) cs2 = make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time, - student_group="TC2-TP-2014-2015-2014-2015 (_Test Academic Term)", room="RM0002", do_not_save= 1) + student_group="TC1-TP2--2014-2015-2014-2015 (_Test Academic Term)", room="RM0002", do_not_save= 1) self.assertRaises(OverlapError, cs2.save) def test_room_conflict(self): cs1 = make_course_schedule_test_record(simulate= True) cs2 = make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time, - student_group="TC2-TP-2014-2015-2014-2015 (_Test Academic Term)", instructor="_T-Instructor-00002", do_not_save= 1) + student_group="TC1-TP2--2014-2015-2014-2015 (_Test Academic Term)", instructor="_T-Instructor-00002", do_not_save= 1) self.assertRaises(OverlapError, cs2.save) def test_no_conflict(self): cs1 = make_course_schedule_test_record(simulate= True) make_course_schedule_test_record(from_time= cs1.from_time, to_time= cs1.to_time, - student_group="TC2-TP-2014-2015-2014-2015 (_Test Academic Term)", instructor="_T-Instructor-00002", room="RM0002") + student_group="TC1-TP2-2014-2015-2014-2015 (_Test Academic Term)", instructor="_T-Instructor-00002", room="RM0002") def make_course_schedule_test_record(**args): args = frappe._dict(args) course_schedule = frappe.new_doc("Course Schedule") - course_schedule.student_group = args.student_group or "TC-TP-2014-2015-2014-2015 (_Test Academic Term)" - course_schedule.course = args.course or "_Test Course" + course_schedule.student_group = args.student_group or "TC-TP1-2014-2015-2014-2015 (_Test Academic Term)" + course_schedule.course = args.course or "TC100" course_schedule.instructor = args.instructor or "_T-Instructor-00001" course_schedule.room = args.room or "RM0001" diff --git a/erpnext/schools/doctype/program/program.json b/erpnext/schools/doctype/program/program.json index 3b0a92e9330..9d6ba1ccbbb 100644 --- a/erpnext/schools/doctype/program/program.json +++ b/erpnext/schools/doctype/program/program.json @@ -3,7 +3,7 @@ "allow_guest_to_view": 0, "allow_import": 1, "allow_rename": 1, - "autoname": "field:program_name", + "autoname": "field:program_code", "beta": 0, "creation": "2015-09-07 12:54:03.609282", "custom": 0, @@ -25,7 +25,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_standard_filter": 0, "label": "Program Name", "length": 0, @@ -47,47 +47,19 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "program_code", - "fieldtype": "Data", + "fieldname": "department", + "fieldtype": "Link", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, "in_list_view": 1, - "in_standard_filter": 0, - "label": "Program Code", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "program_abbreviation", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Program Abbreviation", + "in_standard_filter": 1, + "label": "Department", "length": 0, "no_copy": 0, + "options": "Department", "permlevel": 0, "precision": "", "print_hide": 0, @@ -133,19 +105,47 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "department", - "fieldtype": "Link", + "fieldname": "program_code", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Program Code", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "program_abbreviation", + "fieldtype": "Data", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, "in_list_view": 1, - "in_standard_filter": 1, - "label": "Department", + "in_standard_filter": 0, + "label": "Program Abbreviation", "length": 0, "no_copy": 0, - "options": "Department", "permlevel": 0, "precision": "", "print_hide": 0, @@ -288,7 +288,7 @@ "istable": 0, "max_attachments": 0, "menu_index": 0, - "modified": "2017-04-07 17:57:37.392266", + "modified": "2017-04-12 20:40:53.542488", "modified_by": "Administrator", "module": "Schools", "name": "Program", @@ -319,7 +319,7 @@ "quick_entry": 0, "read_only": 0, "read_only_onload": 0, - "search_fields": "department", + "search_fields": "program_name", "show_name_in_global_search": 1, "sort_field": "modified", "sort_order": "DESC", diff --git a/erpnext/schools/doctype/program/test_records.json b/erpnext/schools/doctype/program/test_records.json index b2374d6c1f3..e5eda70982f 100644 --- a/erpnext/schools/doctype/program/test_records.json +++ b/erpnext/schools/doctype/program/test_records.json @@ -1,10 +1,12 @@ [ { "program_name": "_Test Program", - "program_abbreviation": "TP" + "program_code": "_TP1", + "program_abbreviation": "TP1" }, { "program_name": "_Test Program 2", + "program_code": "_TP2", "program_abbreviation": "TP2" } ] diff --git a/erpnext/schools/doctype/program_enrollment/program_enrollment.js b/erpnext/schools/doctype/program_enrollment/program_enrollment.js index 96c8f96dc61..f117ee2f49f 100644 --- a/erpnext/schools/doctype/program_enrollment/program_enrollment.js +++ b/erpnext/schools/doctype/program_enrollment/program_enrollment.js @@ -3,7 +3,35 @@ cur_frm.add_fetch('fee_structure', 'total_amount', 'amount'); -frappe.ui.form.on("Program Enrollment", { +frappe.ui.form.on("Program Enrollment", { + onload: function(frm, cdt, cdn){ + frm.set_query("academic_term", "fees", function(){ + return{ + "filters":{ + "academic_year": (frm.doc.academic_year) + } + }; + }); + + frm.fields_dict['fees'].grid.get_field('fee_structure').get_query = function(doc, cdt, cdn) { + var d = locals[cdt][cdn]; + return { + filters: {'academic_term': d.academic_term} + } + }; + + if (frm.doc.program) { + frm.set_query("course", "courses", function(doc, cdt, cdn) { + return{ + query: "erpnext.schools.doctype.program_enrollment.program_enrollment.get_program_courses", + filters: { + 'program': frm.doc.program + } + } + }); + } + }, + program: function(frm) { if (frm.doc.program) { frappe.call({ @@ -18,28 +46,32 @@ frappe.ui.form.on("Program Enrollment", { } } }); + frm.trigger.onload() } }, student_category: function() { frappe.ui.form.trigger("Program Enrollment", "program"); }, - - onload: function(frm, cdt, cdn){ - cur_frm.set_query("academic_term", "fees", function(){ - return{ - "filters":{ - "academic_year": (frm.doc.academic_year) + + get_courses: function(frm) { + if (frm.doc.program) { + frm.set_value("courses",[]); + frappe.call({ + method: "get_courses", + doc:frm.doc, + callback: function(r) { + if(r.message) { + frm.set_value("courses", r.message); + } + else { + frappe.msgprint(__("There is no mandatory course for the program {0}",[frm.doc.program])); + } } - }; - }); - - cur_frm.fields_dict['fees'].grid.get_field('fee_structure').get_query = function(doc, cdt, cdn) { - var d = locals[cdt][cdn]; - return { - filters: {'academic_term': d.academic_term} - } - }; - + }) + } + else { + frappe.throw(__("Select the Program to fetch mandatory courses.")) + } } }); diff --git a/erpnext/schools/doctype/program_enrollment/program_enrollment.json b/erpnext/schools/doctype/program_enrollment/program_enrollment.json index ae604723113..988af050916 100644 --- a/erpnext/schools/doctype/program_enrollment/program_enrollment.json +++ b/erpnext/schools/doctype/program_enrollment/program_enrollment.json @@ -78,7 +78,37 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "student_category", + "fieldname": "academic_year", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Academic Year", + "length": 0, + "no_copy": 0, + "options": "Academic Year", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "academic_term", "fieldtype": "Link", "hidden": 0, "ignore_user_permissions": 0, @@ -87,10 +117,10 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Student Category", + "label": "Academic Term", "length": 0, "no_copy": 0, - "options": "Student Category", + "options": "Academic Term", "permlevel": 0, "precision": "", "print_hide": 0, @@ -108,8 +138,9 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "school_house", - "fieldtype": "Link", + "default": "Today", + "fieldname": "enrollment_date", + "fieldtype": "Date", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -117,10 +148,9 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "School House", + "label": "Enrollment Date", "length": 0, "no_copy": 0, - "options": "School House", "permlevel": 0, "precision": "", "print_hide": 0, @@ -128,7 +158,7 @@ "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 0, + "reqd": 1, "search_index": 0, "set_only_once": 0, "unique": 0 @@ -192,7 +222,7 @@ "unique": 0 }, { - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -226,19 +256,19 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "academic_year", + "fieldname": "student_category", "fieldtype": "Link", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 1, - "label": "Academic Year", + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Student Category", "length": 0, "no_copy": 0, - "options": "Academic Year", + "options": "Student Category", "permlevel": 0, "precision": "", "print_hide": 0, @@ -246,7 +276,37 @@ "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "school_house", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "School House", + "length": 0, + "no_copy": 0, + "options": "School House", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, "search_index": 0, "set_only_once": 0, "unique": 0 @@ -256,9 +316,8 @@ "bold": 0, "collapsible": 0, "columns": 0, - "default": "Today", - "fieldname": "enrollment_date", - "fieldtype": "Date", + "fieldname": "enrolled_courses", + "fieldtype": "Section Break", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -266,7 +325,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Enrollment Date", + "label": "Enrolled courses", "length": 0, "no_copy": 0, "permlevel": 0, @@ -276,7 +335,66 @@ "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 1, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "get_courses", + "fieldtype": "Button", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Get Courses", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "courses", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Courses", + "length": 0, + "no_copy": 0, + "options": "Program Enrollment Course", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, "search_index": 0, "set_only_once": 0, "unique": 0 @@ -295,7 +413,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "", + "label": "Fees", "length": 0, "no_copy": 0, "permlevel": 0, @@ -412,7 +530,7 @@ "istable": 0, "max_attachments": 0, "menu_index": 0, - "modified": "2017-04-06 15:21:43.137852", + "modified": "2017-04-12 12:12:10.148274", "modified_by": "Administrator", "module": "Schools", "name": "Program Enrollment", diff --git a/erpnext/schools/doctype/program_enrollment/program_enrollment.py b/erpnext/schools/doctype/program_enrollment/program_enrollment.py index 02c6fe71b60..feb4c2f60ed 100644 --- a/erpnext/schools/doctype/program_enrollment/program_enrollment.py +++ b/erpnext/schools/doctype/program_enrollment/program_enrollment.py @@ -6,6 +6,7 @@ from __future__ import unicode_literals import frappe from frappe import msgprint, _ from frappe.model.document import Document +from frappe.desk.reportview import get_match_cond, get_filters_cond from frappe.utils import comma_and class ProgramEnrollment(Document): @@ -53,4 +54,26 @@ class ProgramEnrollment(Document): if fee_list: fee_list = ["""%s""" % \ (fee, fee) for fee in fee_list] - msgprint(_("Fee Records Created - {0}").format(comma_and(fee_list))) \ No newline at end of file + msgprint(_("Fee Records Created - {0}").format(comma_and(fee_list))) + + def get_courses(self): + return frappe.db.sql('''select course, course_name from `tabProgram Course` where parent = %s and required = 1''', (self.program), as_dict=1) + + +@frappe.whitelist() +def get_program_courses(doctype, txt, searchfield, start, page_len, filters): + if filters.get('program'): + return frappe.db.sql("""select course, course_name from `tabProgram Course` + where parent = %(program)s and course like %(txt)s {match_cond} + order by + if(locate(%(_txt)s, course), locate(%(_txt)s, course), 99999), + idx desc, + `tabProgram Course`.course asc + limit {start}, {page_len}""".format( + match_cond=get_match_cond(doctype), + start=start, + page_len=page_len), { + "txt": "%{0}%".format(txt), + "_txt": txt.replace('%', ''), + "program": filters['program'] + }) diff --git a/erpnext/schools/doctype/program_enrollment_course/__init__.py b/erpnext/schools/doctype/program_enrollment_course/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/schools/doctype/program_enrollment_course/program_enrollment_course.json b/erpnext/schools/doctype/program_enrollment_course/program_enrollment_course.json new file mode 100644 index 00000000000..5c5e220f263 --- /dev/null +++ b/erpnext/schools/doctype/program_enrollment_course/program_enrollment_course.json @@ -0,0 +1,101 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 0, + "creation": "2017-04-10 19:28:19.616308", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", + "fields": [ + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "course", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Course", + "length": 0, + "no_copy": 0, + "options": "Course", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "course_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Course Name", + "length": 0, + "no_copy": 0, + "options": "course.course_name", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + } + ], + "has_web_view": 0, + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 1, + "max_attachments": 0, + "modified": "2017-04-12 11:49:50.433280", + "modified_by": "Administrator", + "module": "Schools", + "name": "Program Enrollment Course", + "name_case": "", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1, + "track_seen": 0 +} \ No newline at end of file diff --git a/erpnext/schools/doctype/program_enrollment_course/program_enrollment_course.py b/erpnext/schools/doctype/program_enrollment_course/program_enrollment_course.py new file mode 100644 index 00000000000..e1f564eff0f --- /dev/null +++ b/erpnext/schools/doctype/program_enrollment_course/program_enrollment_course.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document + +class ProgramEnrollmentCourse(Document): + pass diff --git a/erpnext/schools/doctype/school_settings/school_settings.py b/erpnext/schools/doctype/school_settings/school_settings.py index a5f68e87dad..5a1c6fe4a69 100644 --- a/erpnext/schools/doctype/school_settings/school_settings.py +++ b/erpnext/schools/doctype/school_settings/school_settings.py @@ -4,7 +4,23 @@ from __future__ import unicode_literals import frappe +import frappe.defaults from frappe.model.document import Document +school_keydict = { + # "key in defaults": "key in Global Defaults" + "academic_year": "current_academic_year", + "academic_term": "current_academic_term", +} + class SchoolSettings(Document): - pass + def on_update(self): + """update defaults""" + for key in school_keydict: + frappe.db.set_default(key, self.get(school_keydict[key], '')) + + # clear cache + frappe.clear_cache() + + def get_defaults(self): + return frappe.defaults.get_defaults() diff --git a/erpnext/schools/doctype/student/test_records.json b/erpnext/schools/doctype/student/test_records.json index e280794ce67..36da06f02d6 100644 --- a/erpnext/schools/doctype/student/test_records.json +++ b/erpnext/schools/doctype/student/test_records.json @@ -3,7 +3,7 @@ "first_name": "_Test", "middle_name": "Student", "last_name": "Name", - "program": "_Test Program", + "program": "TC101", "date_of_birth": "2000-01-01", "gender": "Male", "blood_group": "A+" @@ -13,7 +13,7 @@ "first_name": "_Test", "middle_name": "Student", "last_name": "Name 1", - "program": "_Test Program", + "program": "TC101", "date_of_birth": "2000-01-01", "gender": "Male", "blood_group": "A+" @@ -23,7 +23,7 @@ "first_name": "_Test", "middle_name": "Student", "last_name": "Name 2", - "program": "_Test Program", + "program": "TC101", "date_of_birth": "2000-01-01", "gender": "Male", "blood_group": "A+" diff --git a/erpnext/schools/doctype/student_group/test_records.json b/erpnext/schools/doctype/student_group/test_records.json index 27cd181bd10..06cb086c201 100644 --- a/erpnext/schools/doctype/student_group/test_records.json +++ b/erpnext/schools/doctype/student_group/test_records.json @@ -1,13 +1,13 @@ [ { - "program": "_Test Program", - "course": "_Test Course", + "program": "_TP1", + "course": "TC100", "academic_year": "2014-2015", "academic_term": "2014-2015 (_Test Academic Term)" }, { - "program": "_Test Program", - "course": "_Test Course 2", + "program": "_TP2", + "course": "TC101", "academic_year": "2014-2015", "academic_term": "2014-2015 (_Test Academic Term)" } diff --git a/erpnext/schools/utils.py b/erpnext/schools/utils.py index 3adbae4b5ef..2ca46d5542b 100644 --- a/erpnext/schools/utils.py +++ b/erpnext/schools/utils.py @@ -9,9 +9,9 @@ from frappe import _ class OverlapError(frappe.ValidationError): pass def validate_overlap_for(doc, doctype, fieldname, value=None): - """Checks overlap for specified feild. + """Checks overlap for specified field. - :param fieldname: Checks Overlap for this feild + :param fieldname: Checks Overlap for this field """ existing = get_overlap_for(doc, doctype, fieldname, value) @@ -20,9 +20,9 @@ def validate_overlap_for(doc, doctype, fieldname, value=None): doc.meta.get_label(fieldname) if not value else fieldname , value or doc.get(fieldname)), OverlapError) def get_overlap_for(doc, doctype, fieldname, value=None): - """Returns overlaping document for specified feild. + """Returns overlaping document for specified field. - :param fieldname: Checks Overlap for this feild + :param fieldname: Checks Overlap for this field """ existing = frappe.db.sql("""select name, from_time, to_time from `tab{0}`