diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index da3786b..c97197d 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -4,7 +4,7 @@
 import frappe
 from erpnext.hooks import regional_overrides
 
-__version__ = '8.11.0'
+__version__ = '8.11.1'
 
 def get_default_company(user=None):
 	'''Get default company for user'''
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 8509d77..f6d9ca9 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -12,11 +12,11 @@
 			'Supplier Quotation': 'Supplier Quotation'
 		}
 
-		frm.fields_dict["suppliers"].grid.get_field("contact").get_query = function(doc, cdt, cdn){
-			var d =locals[cdt][cdn];
+		frm.fields_dict["suppliers"].grid.get_field("contact").get_query = function(doc, cdt, cdn) {
+			let d = locals[cdt][cdn];
 			return {
 				query: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_supplier_contacts",
-				filters: {'supplier': doc.supplier}
+				filters: {'supplier': d.supplier}
 			}
 		}
 	},
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index a775f5f..97c4438 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -204,9 +204,9 @@
 	return list_context
 
 def get_supplier_contacts(doctype, txt, searchfield, start, page_len, filters):
-	return frappe.db.sql(""" select `tabContact`.name from `tabContact`, `tabDynamic Link`
-		where `tabDynamic Link`.link_doctype = 'Supplier' and (`tabDynamic Link`.link_name = %(name)s
-		or `tabDynamic Link`.link_name like %(txt)s) and `tabContact`.name = `tabDynamic Link`.parent
+	return frappe.db.sql("""select `tabContact`.name from `tabContact`, `tabDynamic Link`
+		where `tabDynamic Link`.link_doctype = 'Supplier' and (`tabDynamic Link`.link_name=%(name)s
+		and `tabDynamic Link`.link_name like %(txt)s) and `tabContact`.name = `tabDynamic Link`.parent
 		limit %(start)s, %(page_len)s""", {"start": start, "page_len":page_len, "txt": "%%%s%%" % txt, "name": filters.get('supplier')})
 
 # This method is used to make supplier quotation from material request form.
diff --git a/erpnext/controllers/website_list_for_contact.py b/erpnext/controllers/website_list_for_contact.py
index 65360ec..ed48fd1 100644
--- a/erpnext/controllers/website_list_for_contact.py
+++ b/erpnext/controllers/website_list_for_contact.py
@@ -5,7 +5,7 @@
 import json
 import frappe
 from frappe import _
-from frappe.utils import flt
+from frappe.utils import flt, has_common
 from frappe.utils.user import is_website_user
 
 def get_list_context(context=None):
@@ -55,14 +55,16 @@
 	return post_process(doctype, get_list_for_transactions(doctype, txt, filters, limit_start, limit_page_length,
 		fields="name", order_by="modified desc"))
 
-def get_list_for_transactions(doctype, txt, filters, limit_start, limit_page_length=20, ignore_permissions=False,fields=None, order_by=None):
+def get_list_for_transactions(doctype, txt, filters, limit_start, limit_page_length=20,
+	ignore_permissions=False,fields=None, order_by=None):
+	""" Get List of transactions like Invoices, Orders """
 	from frappe.www.list import get_list
 	meta = frappe.get_meta(doctype)
 	data = []
 	or_filters = []
 
 	for d in get_list(doctype, txt, filters=filters, fields="name", limit_start=limit_start,
-		limit_page_length=limit_page_length, ignore_permissions=True, order_by="modified desc"):
+		limit_page_length=limit_page_length, ignore_permissions=ignore_permissions, order_by="modified desc"):
 		data.append(d)
 
 	if txt:
@@ -74,9 +76,9 @@
 					or_filters.append([doctype, "name", "=", child.parent])
 
 	if or_filters:
-		for r in frappe.get_list(doctype, fields=fields,filters=filters, or_filters=or_filters, limit_start=limit_start,
-			limit_page_length=limit_page_length, ignore_permissions=ignore_permissions,
-			order_by=order_by):
+		for r in frappe.get_list(doctype, fields=fields,filters=filters, or_filters=or_filters,
+			limit_start=limit_start, limit_page_length=limit_page_length, 
+			ignore_permissions=ignore_permissions, order_by=order_by):
 			data.append(r)
 
 	return data
@@ -124,13 +126,30 @@
 	return result
 
 def get_customers_suppliers(doctype, user):
+	customers = []
+	suppliers = []
 	meta = frappe.get_meta(doctype)
-	contacts = frappe.db.sql(""" select  `tabContact`.email_id, `tabDynamic Link`.link_doctype, `tabDynamic Link`.link_name
-		from `tabContact`, `tabDynamic Link` where
-			`tabContact`.name = `tabDynamic Link`.parent and `tabContact`.email_id =%s """, user, as_dict=1)
 
-	customers = [c.link_name for c in contacts if c.link_doctype == 'Customer'] if meta.get_field("customer") else None
-	suppliers = [c.link_name for c in contacts if c.link_doctype == 'Supplier'] if meta.get_field("supplier") else None
+	if has_common(["Supplier", "Customer"], frappe.get_roles(user)):
+		contacts = frappe.db.sql("""
+			select 
+				`tabContact`.email_id,
+				`tabDynamic Link`.link_doctype,
+				`tabDynamic Link`.link_name
+			from 
+				`tabContact`, `tabDynamic Link`
+			where
+				`tabContact`.name=`tabDynamic Link`.parent and `tabContact`.email_id =%s
+			""", user, as_dict=1)
+		customers = [c.link_name for c in contacts if c.link_doctype == 'Customer'] \
+			if meta.get_field("customer") else None
+		suppliers = [c.link_name for c in contacts if c.link_doctype == 'Supplier'] \
+			if meta.get_field("supplier") else None
+	elif frappe.has_permission(doctype, 'read', user=user):
+		customers = [customer.name for customer in frappe.get_list("Customer")] \
+			if meta.get_field("customer") else None
+		suppliers = [supplier.name for supplier in frappe.get_list("Customer")] \
+			if meta.get_field("supplier") else None
 
 	return customers, suppliers
 
diff --git a/erpnext/templates/print_formats/includes/taxes.html b/erpnext/templates/print_formats/includes/taxes.html
index b180c1c..b782763 100644
--- a/erpnext/templates/print_formats/includes/taxes.html
+++ b/erpnext/templates/print_formats/includes/taxes.html
@@ -19,7 +19,7 @@
 		{%- for charge in data -%}
 			{%- if charge.tax_amount and not charge.included_in_print_rate -%}
 			<div class="row">
-				<div class="col-xs-5 {%- if not doc._align_labels_left %} text-right{%- endif -%}">
+				<div class="col-xs-5 {%- if doc._align_labels_right %} text-right{%- endif -%}">
 					<label>{{ charge.get_formatted("description") }}</label></div>
 				<div class="col-xs-7 text-right">
 					{{ frappe.format_value(frappe.utils.flt(charge.tax_amount),
