Added Student Batch-Wise Attendance report
diff --git a/erpnext/config/schools.py b/erpnext/config/schools.py
index 2299305..80e3274 100644
--- a/erpnext/config/schools.py
+++ b/erpnext/config/schools.py
@@ -79,6 +79,12 @@
{
"type": "report",
"is_query_report": True,
+ "name": "Student Batch Wise Attendance",
+ "doctype": "Attendance"
+ },
+ {
+ "type": "report",
+ "is_query_report": True,
"name": "Student Monthly Attendance Sheet",
"doctype": "Attendance"
}
diff --git a/erpnext/schools/report/student_batch_wise_attendance/__init__.py b/erpnext/schools/report/student_batch_wise_attendance/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/schools/report/student_batch_wise_attendance/__init__.py
diff --git a/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.js b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.js
new file mode 100644
index 0000000..51f7346
--- /dev/null
+++ b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.js
@@ -0,0 +1,12 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.query_reports["Student Batch-Wise Attendance"] = {
+ "filters": [{
+ "fieldname": "date",
+ "label": __("Date"),
+ "fieldtype": "Date",
+ "default": get_today(),
+ "reqd": 1
+ }]
+}
\ No newline at end of file
diff --git a/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.json b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.json
new file mode 100644
index 0000000..f9c9e55
--- /dev/null
+++ b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.json
@@ -0,0 +1,18 @@
+{
+ "add_total_row": 0,
+ "apply_user_permissions": 1,
+ "creation": "2016-11-28 22:07:03.859124",
+ "disabled": 0,
+ "docstatus": 0,
+ "doctype": "Report",
+ "idx": 0,
+ "is_standard": "Yes",
+ "modified": "2016-12-01 10:48:23.380837",
+ "modified_by": "Administrator",
+ "module": "Schools",
+ "name": "Student Batch-Wise Attendance",
+ "owner": "Administrator",
+ "ref_doctype": "Student Attendance",
+ "report_name": "Student Batch-Wise Attendance",
+ "report_type": "Script Report"
+}
\ No newline at end of file
diff --git a/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.py b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.py
new file mode 100644
index 0000000..eaf090e
--- /dev/null
+++ b/erpnext/schools/report/student_batch_wise_attendance/student_batch_wise_attendance.py
@@ -0,0 +1,64 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.utils import cstr, cint, getdate
+from frappe import msgprint, _
+
+def execute(filters=None):
+ if not filters: filters = {}
+
+ if not filters.get("date"):
+ msgprint(_("Please select date"), raise_exception=1)
+
+ columns = get_columns(filters)
+
+ active_student_batch = get_active_student_batch()
+
+ data = []
+ for student_batch in active_student_batch:
+ row = [student_batch.name]
+ present_students = 0
+ absent_students = 0
+ student_batch_strength = get_student_batch_strength(student_batch.name)
+ student_attendance = get_student_attendance(student_batch.name, filters.get("date"))
+ if student_attendance:
+ for attendance in student_attendance:
+ if attendance.status== "Present":
+ present_students = attendance.count
+ elif attendance.status== "Absent":
+ absent_students = attendance.count
+
+ unmarked_students = student_batch_strength - (present_students + absent_students)
+ row+= [student_batch_strength, present_students, absent_students, unmarked_students]
+ data.append(row)
+
+ return columns, data
+
+def get_columns(filters):
+ columns = [
+ _("Student batch") + ":Link/Student Batch:250",
+ _("Student batch Strength") + "::170",
+ _("Present") + "::90",
+ _("Absent") + "::90",
+ _("Not Marked") + "::90"
+ ]
+ return columns
+
+def get_active_student_batch():
+ active_student_batch = frappe.db.sql("""select name from `tabStudent Batch`
+ where active = 1 order by name""", as_dict=1)
+ return active_student_batch
+
+def get_student_batch_strength(student_batch):
+ student_batch_strength = frappe.db.sql("""select count(*) from `tabStudent Batch Student`
+ where parent = %s""", student_batch)[0][0]
+ return student_batch_strength
+
+def get_student_attendance(student_batch, date):
+ student_attendance = frappe.db.sql("""select count(*) as count, status from `tabStudent Attendance` where \
+ student_batch= %s and date= %s and docstatus=1 and\
+ (course_schedule is Null or course_schedule='') group by status""",
+ (student_batch, date), as_dict=1)
+ return student_attendance
\ No newline at end of file