Filters for multiselect dialog for DN/PR in Sales/Purchase Invoice (#8882)

diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index 63de878..b48fb20 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -79,7 +79,8 @@
 					get_query_filters: {
 						docstatus: 1,
 						status: ["!=", "Closed"],
-						company: me.frm.doc.company
+						company: me.frm.doc.company,
+						is_return: 0
 					}
 				})
 			}, __("Get items from"));
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index f235722..007afe4 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -142,11 +142,12 @@
 					target: me.frm,
 					date_field: "posting_date",
 					setters: {
-						company: me.frm.doc.company
+						customer: me.frm.doc.customer || undefined
 					},
 					get_query: function() {
 						var filters = {
 							docstatus: 1,
+							company: me.frm.doc.company
 						};
 						if(me.frm.doc.customer) filters["customer"] = me.frm.doc.customer;
 						return {
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index 2f98e86..0fc08c1 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -222,19 +222,21 @@
 				"_txt": txt.replace('%', '')
 			})
 
-def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters):
-	return frappe.db.sql("""select `tabDelivery Note`.name, `tabDelivery Note`.customer_name
+def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters, as_dict):
+	return frappe.db.sql("""
+		select `tabDelivery Note`.name, `tabDelivery Note`.customer, `tabDelivery Note`.posting_date
 		from `tabDelivery Note`
 		where `tabDelivery Note`.`%(key)s` like %(txt)s and
-			`tabDelivery Note`.docstatus = 1 and status not in ("Stopped", "Closed") %(fcond)s
+			`tabDelivery Note`.docstatus = 1 and `tabDelivery Note`.is_return = 0 
+			and status not in ("Stopped", "Closed") %(fcond)s
 			and (`tabDelivery Note`.per_billed < 100 or `tabDelivery Note`.grand_total = 0)
 			%(mcond)s order by `tabDelivery Note`.`%(key)s` asc
-			limit %(start)s, %(page_len)s""" % {
-				"key": searchfield,
-				"fcond": get_filters_cond(doctype, filters, []),
-				"mcond": get_match_cond(doctype),
-				"start": "%(start)s", "page_len": "%(page_len)s", "txt": "%(txt)s"
-			}, { "start": start, "page_len": page_len, "txt": ("%%%s%%" % txt) })
+	""" % {
+		"key": searchfield,
+		"fcond": get_filters_cond(doctype, filters, []),
+		"mcond": get_match_cond(doctype),
+		"txt": "%(txt)s"
+	}, { "txt": ("%%%s%%" % txt) }, as_dict=as_dict)
 
 def get_batch_no(doctype, txt, searchfield, start, page_len, filters):
 	cond = ""