diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index accaeb4..afccdfa 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -52,9 +52,8 @@
 			validate_warehouse_company(w, self.company)
 
 	def validate_stock_or_nonstock_items(self):
-		if not self.get_stock_items():
-			tax_for_valuation = [d.account_head for d in
-				self.get("other_charges")
+		if self.meta.get_field("other_charges") and not self.get_stock_items():
+			tax_for_valuation = [d.account_head for d in self.get("other_charges")
 				if d.category in ["Valuation", "Valuation and Total"]]
 			if tax_for_valuation:
 				frappe.throw(_("Tax Category can not be 'Valuation' or 'Valuation and Total' as all items are non-stock items"))
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index a4d2b52..789e7a3 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -236,13 +236,21 @@
 				'page_len': page_len})
 
 def get_account_list(doctype, txt, searchfield, start, page_len, filters):
-	if isinstance(filters, dict):
-		if not filters.get("group_or_ledger"):
-			filters["group_or_ledger"] = "Ledger"
-	elif isinstance(filters, list):
-		if "group_or_ledger" not in [d[0] for d in filters]:
-			filters.append(["Account", "group_or_ledger", "=", "Ledger"])
+	filter_list = []
 
-	return frappe.widgets.reportview.execute("Account", filters = filters,
+	if isinstance(filters, dict):
+		for key, val in filters.items():
+			if isinstance(val, (list, tuple)):
+				filter_list.append([doctype, key, val[0], val[1]])
+			else:
+				filter_list.append([doctype, key, "=", val])
+
+	if "group_or_ledger" not in [d[1] for d in filter_list]:
+		filter_list.append(["Account", "group_or_ledger", "=", "Ledger"])
+
+	if searchfield and txt:
+		filter_list.append([doctype, searchfield, "like", "%%%s%%" % txt])
+
+	return frappe.widgets.reportview.execute("Account", filters = filter_list,
 		fields = ["name", "parent_account"],
 		limit_start=start, limit_page_length=page_len, as_list=True)
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index fb94b88..10fe650 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -118,10 +118,10 @@
 }
 
 cur_frm.cscript['Make Packing Slip'] = function() {
-	n = frappe.model.make_new_doc_and_get_name('Packing Slip');
-	ps = locals["Packing Slip"][n];
-	ps.delivery_note = cur_frm.doc.name;
-	loaddoc('Packing Slip', n);
+	frappe.model.open_mapped_doc({
+		method: "erpnext.stock.doctype.delivery_note.delivery_note.make_packing_slip",
+		frm: cur_frm
+	})
 }
 
 var set_print_hide= function(doc, cdt, cdn){
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index da7dd7a..1600950 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -346,3 +346,19 @@
 	}, target_doc)
 
 	return doclist
+
+@frappe.whitelist()
+def make_packing_slip(source_name, target_doc=None):
+	doclist = get_mapped_doc("Delivery Note", source_name, 	{
+		"Delivery Note": {
+			"doctype": "Packing Slip",
+			"field_map": {
+				"name": "delivery_note"
+			},
+			"validation": {
+				"docstatus": ["=", 0]
+			}
+		}
+	}, target_doc)
+
+	return doclist
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index f8f0d09..9951fc8 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -48,7 +48,7 @@
 
 	def validate_schedule_date(self):
 		for d in self.get('indent_details'):
-			if d.schedule_date < self.transaction_date:
+			if d.schedule_date and d.schedule_date < self.transaction_date:
 				frappe.throw(_("Expected Date cannot be before Material Request Date"))
 
 	# Validate
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.js b/erpnext/stock/doctype/packing_slip/packing_slip.js
index acdd27e..9788290 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.js
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.js
@@ -18,7 +18,7 @@
 
 cur_frm.cscript.onload_post_render = function(doc, cdt, cdn) {
 	if(doc.delivery_note && doc.__islocal) {
-			cur_frm.cscript.get_items(doc, cdt, cdn);
+		cur_frm.cscript.get_items(doc, cdt, cdn);
 	}
 }
 
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 9c251b8..cdf5aa1 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -255,7 +255,7 @@
 
 	args = frappe._dict(args)
 	out = frappe._dict()
-	if not args.get("item_code"): return
+	if args.get("doctype") == "Material Request" or not args.get("item_code"): return out
 
 	if not args.get("item_group") or not args.get("brand"):
 		args.item_group, args.brand = frappe.db.get_value("Item",
