Merge branch 'hotfix'
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 2218006..eb69d19 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
import frappe
-__version__ = '8.0.33'
+__version__ = '8.0.34'
def get_default_company(user=None):
diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index 8c695ed..eebf464 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -75,7 +75,7 @@
self.lead = lead_name
def declare_enquiry_lost(self,arg):
- if not self.has_lost_quotation():
+ if not self.has_active_quotation():
frappe.db.set(self, 'status', 'Lost')
frappe.db.set(self, 'order_lost_reason', arg)
else:
diff --git a/erpnext/patches/v8_0/merge_student_batch_and_student_group.py b/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
index 742457f..3eb8e80 100644
--- a/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
+++ b/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
@@ -11,43 +11,55 @@
# for converting student batch into student group
frappe.reload_doctype("Student Group")
- student_batches = frappe.db.sql('''select name as student_group_name, student_batch_name as batch,
- program, academic_year, academic_term from `tabStudent Batch`''', as_dict=1)
- for student_batch in student_batches:
- # create student batch name if does not exists !!
- if student_batch.get("batch") and not frappe.db.exists("Student Batch Name", student_batch.get("batch")):
- frappe.get_doc({
- "doctype": "Student Batch Name",
- "batch_name": student_batch.get("batch")
- }).insert(ignore_permissions=True)
+ if frappe.db.table_exists("Student Batch"):
+ student_batches = frappe.db.sql('''select name as student_group_name, student_batch_name as batch,
+ program, academic_year, academic_term from `tabStudent Batch`''', as_dict=1)
- student_batch.update({"doctype":"Student Group", "group_based_on": "Batch"})
- doc = frappe.get_doc(student_batch)
- student_list = frappe.db.sql('''select student, student_name, active from `tabStudent Batch Student`
- where parent=%s''', (doc.name), as_dict=1)
- for i, student in enumerate(student_list):
- student.update({"group_roll_number": i+1})
+ for student_batch in student_batches:
+ # create student batch name if does not exists !!
+ if student_batch.get("batch") and not frappe.db.exists("Student Batch Name", student_batch.get("batch")):
+ frappe.get_doc({
+ "doctype": "Student Batch Name",
+ "batch_name": student_batch.get("batch")
+ }).insert(ignore_permissions=True)
- if student_list:
- doc.extend("students", student_list)
+ student_batch.update({"doctype":"Student Group", "group_based_on": "Batch"})
+ doc = frappe.get_doc(student_batch)
- instructor_list = frappe.db.sql('''select instructor, instructor_name from `tabStudent Batch Instructor`
- where parent=%s''', (doc.name), as_dict=1)
- if instructor_list:
- doc.extend("instructors", instructor_list)
- doc.save()
+ if frappe.db.sql("SHOW COLUMNS FROM `tabStudent Batch Student` LIKE 'active'"):
+ cond = ", active"
+ else:
+ cond = " "
+ student_list = frappe.db.sql('''select student, student_name {cond} from `tabStudent Batch Student`
+ where parent=%s'''.format(cond=cond), (doc.name), as_dict=1)
+
+ if student_list:
+ for i, student in enumerate(student_list):
+ student.update({"group_roll_number": i+1})
+ doc.extend("students", student_list)
+
+ instructor_list = frappe.db.sql('''select instructor, instructor_name from `tabStudent Batch Instructor`
+ where parent=%s''', (doc.name), as_dict=1)
+ if instructor_list:
+ doc.extend("instructors", instructor_list)
+ doc.save()
# delete the student batch and child-table
- frappe.delete_doc("DocType", "Student Batch", force=1)
- frappe.delete_doc("DocType", "Student Batch Student", force=1)
- frappe.delete_doc("DocType", "Student Batch Instructor", force=1)
+ if frappe.db.table_exists("Student Batch"):
+ frappe.delete_doc("DocType", "Student Batch", force=1)
+ if frappe.db.table_exists("Student Batch Student"):
+ frappe.delete_doc("DocType", "Student Batch Student", force=1)
+ if frappe.db.table_exists("Student Batch Instructor"):
+ frappe.delete_doc("DocType", "Student Batch Instructor", force=1)
# delete the student batch creation tool
- frappe.delete_doc("DocType", "Student Batch Creation Tool", force=1)
+ if frappe.db.table_exists("Student Batch Creation Tool"):
+ frappe.delete_doc("DocType", "Student Batch Creation Tool", force=1)
# delete the student batch creation tool
- frappe.delete_doc("DocType", "Attendance Tool Student", force=1)
+ if frappe.db.table_exists("Attendance Tool Student"):
+ frappe.delete_doc("DocType", "Attendance Tool Student", force=1)
# change the student batch to student group in the student attendance
frappe.reload_doctype("Student Attendance")
diff --git a/erpnext/schools/doctype/student_group/student_group.py b/erpnext/schools/doctype/student_group/student_group.py
index 81e0ed9..e861421 100644
--- a/erpnext/schools/doctype/student_group/student_group.py
+++ b/erpnext/schools/doctype/student_group/student_group.py
@@ -33,7 +33,7 @@
program_enrollment = get_program_enrollment(self.academic_year, self.academic_term, self.program, self.batch, self.course)
students = [d.student for d in program_enrollment] if program_enrollment else None
for d in self.students:
- if self.group_based_on != "Activity" and d.student not in students and d.active == 1:
+ if self.group_based_on != "Activity" and students and d.student not in students and d.active == 1:
frappe.throw(_("{0} - {1} is not enrolled in the given {2}".format(d.group_roll_number, d.student_name, self.group_based_on)))
if not frappe.db.get_value("Student", d.student, "enabled") and d.active:
frappe.throw(_("{0} - {1} is inactive student".format(d.group_roll_number, d.student_name)))
diff --git a/erpnext/templates/generators/item_group.html b/erpnext/templates/generators/item_group.html
index d710cb0..a2368a4 100644
--- a/erpnext/templates/generators/item_group.html
+++ b/erpnext/templates/generators/item_group.html
@@ -33,14 +33,14 @@
</div>
<div class="text-center item-group-nav-buttons">
{% if frappe.form_dict.start|int > 0 %}
- <a class="btn btn-default" href="/{{ pathname }}?start={{ frappe.form_dict.start|int - page_length }}">{{ __("Prev") }}</a>
+ <a class="btn btn-default" href="/{{ pathname }}?start={{ frappe.form_dict.start|int - page_length }}">{{ _("Prev") }}</a>
{% endif %}
{% if items|length > page_length %}
- <a class="btn btn-default" href="/{{ pathname }}?start={{ frappe.form_dict.start|int + page_length }}">{{ __("Next") }}</a>
+ <a class="btn btn-default" href="/{{ pathname }}?start={{ frappe.form_dict.start|int + page_length }}">{{ _("Next") }}</a>
{% endif %}
</div>
{% else %}
- <div class="text-muted">{{ __("No items listed") }}.</div>
+ <div class="text-muted">{{ _("No items listed") }}.</div>
{% endif %}
</div>
</div>