diff --git a/erpnext/schools/api.py b/erpnext/schools/api.py index dea8515159..7cb02a3793 100644 --- a/erpnext/schools/api.py +++ b/erpnext/schools/api.py @@ -54,13 +54,13 @@ def mark_attendance(students_present, students_absent, course_schedule=None, stu """ present = json.loads(students_present) absent = json.loads(students_absent) - for d in present: make_attendance_records(d["student"], d["student_name"], "Present", course_schedule, student_batch, date) for d in absent: make_attendance_records(d["student"], d["student_name"], "Absent", course_schedule, student_batch, date) + frappe.db.commit() frappe.msgprint(_("Attendance has been marked successfully.")) def make_attendance_records(student, student_name, status, course_schedule=None, student_batch=None, date=None): @@ -79,7 +79,6 @@ def make_attendance_records(student, student_name, status, course_schedule=None, student_attendance.date = date student_attendance.status = status student_attendance.submit() - frappe.db.commit() @frappe.whitelist() def get_student_batch_students(student_batch): @@ -87,7 +86,7 @@ def get_student_batch_students(student_batch): :param student_batch: Student Batch. """ - students = frappe.get_list("Student Batch Student", fields=["student", "student_name"] , filters={"parent": student_batch}, order_by= "idx") + students = frappe.get_list("Student Batch Student", fields=["student", "student_name", "idx"] , filters={"parent": student_batch}, order_by= "idx") return students @frappe.whitelist() diff --git a/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js b/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js index 6dc9181460..2dc6a85d4a 100644 --- a/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js +++ b/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js @@ -88,16 +88,23 @@ schools.StudentsEditor = Class.extend({ }); }); + var get_student = function(idx) { + return students.filter(function(s) { + return s.idx === idx; + })[0] + } + student_toolbar.find(".btn-mark-att") .html(__('Mark Attendence')) .on("click", function() { var students_present = []; var students_absent = []; $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) { + var idx = $(check).data().idx; if ($(check).is(":checked")) { - students_present.push(students[i]); + students_present.push(get_student(idx)); } else { - students_absent.push(students[i]); + students_absent.push(get_student(idx)); } }); frappe.call({ @@ -118,9 +125,12 @@ schools.StudentsEditor = Class.extend({ $.each(students, function(i, m) { $(repl('
\
\ - \ -
', { student: m.student_name })).appendTo(me.wrapper); + \ + ', { + name: m.student_name, + idx: m.idx + })).appendTo(me.wrapper); }); } }); \ No newline at end of file diff --git a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py index 8c6006eae6..2f8ba52378 100644 --- a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py +++ b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py @@ -31,7 +31,7 @@ def execute(filters=None): total_p += 1 elif status == "Absent": total_a += 1 - + row += [total_p, total_a] data.append(row)