Merge pull request #6900 from rohitwaghchaure/account_receivable_summary_report_issue

[Report] Company not found in the filter for making auto email report
diff --git a/erpnext/crm/doctype/opportunity/opportunity.js b/erpnext/crm/doctype/opportunity/opportunity.js
index 2f1169d..b6346f8 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.js
+++ b/erpnext/crm/doctype/opportunity/opportunity.js
@@ -23,20 +23,19 @@
 	refresh: function(frm) {
 		var doc = frm.doc;
 		frm.events.enquiry_from(frm);
-
 		if(doc.status!=="Lost") {
 			if(doc.with_items){
 				frm.add_custom_button(__('Supplier Quotation'),
 					function() {
 						frm.trigger("make_supplier_quotation")
 					}, __("Make"));
-
-				frm.add_custom_button(__('Quotation'),
-					cur_frm.cscript.create_quotation, __("Make"));
-
-				frm.page.set_inner_btn_group_as_primary(__("Make"));
 			}
 
+			frm.add_custom_button(__('Quotation'),
+				cur_frm.cscript.create_quotation, __("Make"));
+
+			frm.page.set_inner_btn_group_as_primary(__("Make"));
+		
 			if(doc.status!=="Quotation") {
 				frm.add_custom_button(__('Lost'),
 					cur_frm.cscript['Declare Opportunity Lost']);
diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index 8bd3a23..6be0768 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -39,6 +39,9 @@
 
 		if not self.title:
 			self.title = self.customer_name
+			
+		if not self.with_items:
+			self.items = []
 
 
 	def make_new_lead_if_required(self):
diff --git a/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json b/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json
index 3d2b251..4749800 100644
--- a/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json
+++ b/erpnext/hr/doctype/expense_claim_type/expense_claim_type.json
@@ -1,7 +1,7 @@
 {
  "allow_copy": 0, 
  "allow_import": 1, 
- "allow_rename": 0, 
+ "allow_rename": 1, 
  "autoname": "field:expense_type", 
  "beta": 0, 
  "creation": "2012-03-27 14:35:55", 
@@ -10,11 +10,13 @@
  "doctype": "DocType", 
  "document_type": "Setup", 
  "editable_grid": 0, 
+ "engine": "InnoDB", 
  "fields": [
   {
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "expense_type", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -41,6 +43,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "description", 
    "fieldtype": "Small Text", 
    "hidden": 0, 
@@ -68,6 +71,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "columns": 0, 
    "fieldname": "accounts", 
    "fieldtype": "Table", 
    "hidden": 0, 
@@ -102,7 +106,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-07-18 12:36:10.096252", 
+ "modified": "2016-11-07 11:54:10.936716", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Expense Claim Type", 
@@ -118,6 +122,7 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
+   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -138,6 +143,7 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
+   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
diff --git a/erpnext/patches/v7_1/set_prefered_contact_email.py b/erpnext/patches/v7_1/set_prefered_contact_email.py
index d662e0d..d083811 100644
--- a/erpnext/patches/v7_1/set_prefered_contact_email.py
+++ b/erpnext/patches/v7_1/set_prefered_contact_email.py
@@ -14,6 +14,4 @@
 			employee.prefered_contact_email = "User ID"
 			employee.prefered_email = employee.user_id
 		
-		employee.flags.ignore_mandatory = True
-		employee.flags.ignore_validate = True
-		employee.save()
\ No newline at end of file
+		employee.db_update()
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student/student_dashboard.py b/erpnext/schools/doctype/student/student_dashboard.py
index 6d95168..55faffb 100644
--- a/erpnext/schools/doctype/student/student_dashboard.py
+++ b/erpnext/schools/doctype/student/student_dashboard.py
@@ -10,7 +10,7 @@
 				'items': ['Student Log', 'Student Group', 'Student Attendance']
 			},
 			{
-				'items': ['Program Enrollment', 'Fees', 'Assessment', 'Guardian']
+				'items': ['Program Enrollment', 'Fees', 'Assessment']
 			}
 		]
 	}
\ No newline at end of file
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 66000cd..646aef1 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -68,7 +68,7 @@
 				frappe.message_log.pop()
 
 			pass
- 
+
 def create_fiscal_year_and_company(args):
 	if (args.get('fy_start_date')):
 		curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
@@ -244,12 +244,12 @@
 	else:
 		fy = cstr(start_year) + '-' + cstr(start_year + 1)
 	return fy
-	
+
 def create_sales_tax(args):
 	country_wise_tax = get_country_wise_tax(args.get("country"))
 	if country_wise_tax and len(country_wise_tax) > 0:
 		for sales_tax, tax_data in country_wise_tax.items():
-			make_tax_account_and_template(args.get("company_name").strip(), 
+			make_tax_account_and_template(args.get("company_name").strip(),
 				tax_data.get('account_name'), tax_data.get('tax_rate'), sales_tax)
 
 def get_country_wise_tax(country):
@@ -267,7 +267,7 @@
 			account_name = args.get("tax_" + str(i))
 
 			make_tax_account_and_template(args.get("company_name").strip(), account_name, tax_rate)
-			
+
 def make_tax_account_and_template(company, account_name, tax_rate, template_name=None):
 	try:
 		account = make_tax_account(company, account_name, tax_rate)
@@ -280,14 +280,14 @@
 			raise
 	except RootNotEditable, e:
 		pass
-				
+
 def get_tax_account_group(company):
-	tax_group = frappe.db.get_value("Account", 
+	tax_group = frappe.db.get_value("Account",
 		{"account_name": "Duties and Taxes", "is_group": 1, "company": company})
 	if not tax_group:
-		tax_group = frappe.db.get_value("Account", {"is_group": 1, "root_type": "Liability", 
+		tax_group = frappe.db.get_value("Account", {"is_group": 1, "root_type": "Liability",
 				"account_type": "Tax", "company": company})
-				
+
 	return tax_group
 
 def make_tax_account(company, account_name, tax_rate):
@@ -308,7 +308,7 @@
 def make_sales_and_purchase_tax_templates(account, template_name=None):
 	if not template_name:
 		template_name = account.name
-		
+
 	sales_tax_template = {
 		"doctype": "Sales Taxes and Charges Template",
 		"title": template_name,
@@ -548,35 +548,50 @@
 			academic_term = frappe.new_doc("Academic Term")
 			academic_term.academic_year = y
 			academic_term.term_name = t
-			academic_term.save()
+			try:
+				academic_term.save()
+			except frappe.DuplicateEntryError:
+				pass
 
 def create_academic_year():
 	ac = ["2013-14", "2014-15", "2015-16", "2016-17", "2017-18"]
 	for d in ac:
 		academic_year = frappe.new_doc("Academic Year")
 		academic_year.academic_year_name = d
-		academic_year.save()
+		try:
+			academic_year.save()
+		except frappe.DuplicateEntryError:
+			pass
 
 def create_program(args):
 	for i in xrange(1,6):
 		if args.get("program_" + str(i)):
 			program = frappe.new_doc("Program")
 			program.program_name = args.get("program_" + str(i))
-			program.save()
+			try:
+				program.save()
+			except frappe.DuplicateEntryError:
+				pass
 
 def create_course(args):
 	for i in xrange(1,6):
 		if args.get("course_" + str(i)):
 			course = frappe.new_doc("Course")
 			course.course_name = args.get("course_" + str(i))
-			course.save()
+			try:
+				course.save()
+			except frappe.DuplicateEntryError:
+				pass
 
 def create_instructor(args):
 	for i in xrange(1,6):
 		if args.get("instructor_" + str(i)):
 			instructor = frappe.new_doc("Instructor")
 			instructor.instructor_name = args.get("instructor_" + str(i))
-			instructor.save()
+			try:
+				instructor.save()
+			except frappe.DuplicateEntryError:
+				pass
 
 def create_room(args):
 	for i in xrange(1,6):
@@ -584,6 +599,9 @@
 			room = frappe.new_doc("Room")
 			room.room_name = args.get("room_" + str(i))
 			room.seating_capacity = args.get("room_capacity_" + str(i))
-			room.save()
+			try:
+				room.save()
+			except frappe.DuplicateEntryError:
+				pass
 
 
diff --git a/erpnext/utilities/doctype/contact/contact.py b/erpnext/utilities/doctype/contact/contact.py
index a687880..dd6aa10 100644
--- a/erpnext/utilities/doctype/contact/contact.py
+++ b/erpnext/utilities/doctype/contact/contact.py
@@ -103,4 +103,5 @@
 		for key in ("first_name", "last_name", "phone"):
 			if doc.get(key):
 				contact.set(key, doc.get(key))
+		contact.flags.ignore_mandatory = True
 		contact.save(ignore_permissions=True)