diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index d741a60..042af0b 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -71,7 +71,7 @@
 			frappe.throw(_("Cash or Bank Account is mandatory for making payment entry"))
 
 		if flt(self.paid_amount) + flt(self.write_off_amount) \
-				- flt(self.base_grand_total) > 1/(10**(self.precision("base_grand_total") + 1)):
+				- flt(self.grand_total) > 1/(10**(self.precision("base_grand_total") + 1)):
 			frappe.throw(_("""Paid amount + Write Off Amount can not be greater than Grand Total"""))
 
 	def create_remarks(self):
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index 668b377..5f38116 100644
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -93,7 +93,7 @@
 			me.get_data_from_server(function(){
 				me.load_data(false);
 				me.make_customer();
-				me.make_item_list(true);
+				me.make_item_list();
 				me.set_missing_values();
 			})
 		});
@@ -266,7 +266,7 @@
 	make: function() {
 		this.make_search();
 		this.make_customer();
-		this.make_item_list(true);
+		this.make_item_list();
 		this.make_discount_field()
 	},
 
@@ -287,7 +287,7 @@
 		this.search.$input.on("keyup", function() {
 			setTimeout(function() {
 				me.items = me.get_items();
-				me.make_item_list(false);
+				me.make_item_list();
 			}, 1000);
 		});
 
@@ -363,7 +363,7 @@
 		}
 	},
 
-	make_item_list: function(index_search) {
+	make_item_list: function() {
 		var me = this;
 		if(!this.price_list) {
 			msgprint(__("Price List not found or disabled"));
@@ -377,7 +377,7 @@
 
 		if (this.items) {
 			$.each(this.items, function(index, obj) {
-				if(!index_search || index < 16){
+				if(index < 30){
 					$(frappe.render_template("pos_item", {
 						item_code: obj.name,
 						item_price: format_currency(obj.price_list_rate, obj.currency),
@@ -423,7 +423,7 @@
 
 		key =  this.search.$input.val().toLowerCase();
 		var re = new RegExp('%', 'g');
-		var reg = new RegExp(key.replace(re, '\\w*\\s*[a-zA-Z0-9]*'))
+		var reg = new RegExp(key.replace(re, '[\\w*\\s*[a-zA-Z0-9]*]*'))
 		search_status = true
 
 		if(key){
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index d8b5e2e..2369143 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -338,7 +338,7 @@
 			tax.item_wise_tax_detail = json.dumps(tax.item_wise_tax_detail, separators=(',', ':'))
 
 	def set_discount_amount(self):
-		if not self.doc.discount_amount and self.doc.additional_discount_percentage:
+		if self.doc.additional_discount_percentage:
 			self.doc.discount_amount = flt(flt(self.doc.get(scrub(self.doc.apply_discount_on)))
 				* self.doc.additional_discount_percentage / 100, self.doc.precision("discount_amount"))
 
diff --git a/erpnext/docs/assets/img/buying/material-request-flowchart.png b/erpnext/docs/assets/img/buying/material-request-flowchart.png
new file mode 100644
index 0000000..8ed0e39
--- /dev/null
+++ b/erpnext/docs/assets/img/buying/material-request-flowchart.png
Binary files differ
diff --git a/erpnext/docs/assets/img/buying/material-request.png b/erpnext/docs/assets/img/buying/material-request.png
index 34005b2..2bb4c88 100644
--- a/erpnext/docs/assets/img/buying/material-request.png
+++ b/erpnext/docs/assets/img/buying/material-request.png
Binary files differ
diff --git a/erpnext/docs/user/manual/en/stock/material-request.md b/erpnext/docs/user/manual/en/stock/material-request.md
index 8afda60..d707dd7 100644
--- a/erpnext/docs/user/manual/en/stock/material-request.md
+++ b/erpnext/docs/user/manual/en/stock/material-request.md
@@ -1,7 +1,7 @@
 A Material Request is a simple document identifying a requirement of a set of
 Items (products or services) for a particular reason.
 
-![Workflow]({{docs_base_url}}/assets/old_images/erpnext/material-request-workflow.jpg)
+![Workflow]({{docs_base_url}}/assets/img/buying/material-request-flowchart.png)
 
 To generate a Material Request manually go to:
 
@@ -25,6 +25,8 @@
 * Material Issue - If the requested material is to be Issued.
 * Manufacture - If the requested material is to be Produced.
 
+The User can also raise a [Request For Quotation]({{docs_base_url}}/user/manual/en/buying/request-for-quotation.html) against a Material Request. To create a Request For Quotation the user can click on 'Make'.
+
 > Info: Material Request is not mandatory. It is ideal if you have centralized
 buying so that you can collect this information from various departments.
 
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index 250d6e6..8234e2e 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -58,7 +58,8 @@
 				if so[0].project:
 					self.project = so[0].project
 
-				self.validate_production_order_against_so()
+				if not self.material_request:
+					self.validate_production_order_against_so()
 			else:
 				frappe.throw(_("Sales Order {0} is not valid").format(self.sales_order))
 
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
index 5fbcf1e..1e6c48a 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -454,20 +454,21 @@
 				material_request.update({"material_request_type": item_wrapper.default_material_request_type})
 
 				for sales_order, requested_qty in items_to_be_requested[item].items():
-					material_request.append("items", {
-						"doctype": "Material Request Item",
-						"__islocal": 1,
-						"item_code": item,
-						"item_name": item_wrapper.item_name,
-						"description": item_wrapper.description,
-						"uom": item_wrapper.stock_uom,
-						"item_group": item_wrapper.item_group,
-						"brand": item_wrapper.brand,
-						"qty": requested_qty,
-						"schedule_date": add_days(nowdate(), cint(item_wrapper.lead_time_days)),
-						"warehouse": self.purchase_request_for_warehouse,
-						"sales_order": sales_order if sales_order!="No Sales Order" else None
-					})
+					if sales_order != 'No Sales Order':
+						material_request.append("items", {
+							"doctype": "Material Request Item",
+							"__islocal": 1,
+							"item_code": item,
+							"item_name": item_wrapper.item_name,
+							"description": item_wrapper.description,
+							"uom": item_wrapper.stock_uom,
+							"item_group": item_wrapper.item_group,
+							"brand": item_wrapper.brand,
+							"qty": requested_qty,
+							"schedule_date": add_days(nowdate(), cint(item_wrapper.lead_time_days)),
+							"warehouse": self.purchase_request_for_warehouse,
+							"sales_order": sales_order if sales_order!="No Sales Order" else None
+						})
 
 				material_request.flags.ignore_permissions = 1
 				material_request.submit()
