diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index 38f3e0c..eac8f44 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -77,13 +77,21 @@
 
 			frappe.model.validate_missing(jvd, "party_type");
 			frappe.model.validate_missing(jvd, "party");
-			return {
+
+			var out = {
 				filters: [
-					[jvd.reference_type, jvd.reference_type.indexOf("Sales")==1 ? "customer" : "supplier", "=", jvd.party],
+					[jvd.reference_type, jvd.reference_type.indexOf("Sales")===0 ? "customer" : "supplier", "=", jvd.party],
 					[jvd.reference_type, "docstatus", "=", 1],
-					[jvd.reference_type, "outstanding_amount", "!=", 0]
 				]
 			};
+
+			if(in_list(["Sales Invoice", "Purchase Invoice"], jvd.reference_type)) {
+				out.filters.push([jvd.reference_type, "outstanding_amount", "!=", 0]);
+			} else {
+				out.filters.push([jvd.reference_type, "per_billed", "<", 100]);
+			}
+
+			return out;
 		});
 
 
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index b48e46c..00e2e91 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -118,7 +118,7 @@
 
 	def validate_against_jv(self):
 		for d in self.get('accounts'):
-			if d.reference_type=="Journal Voucher":
+			if d.reference_type=="Journal Entry":
 				account_root_type = frappe.db.get_value("Account", d.account, "root_type")
 				if account_root_type == "Asset" and flt(d.debit) > 0:
 					frappe.throw(_("For {0}, only credit accounts can be linked against another debit entry")
@@ -132,7 +132,7 @@
 
 				against_entries = frappe.db.sql("""select * from `tabJournal Entry Account`
 					where account = %s and docstatus = 1 and parent = %s
-					and ifnull(reference_type, '') = '' and ifnull(reference_name, '') = ''
+					and ifnull(reference_type, '') in ("", "Sales Order", "Purchase Order")
 					""", (d.account, d.reference_name), as_dict=True)
 
 				if not against_entries:
@@ -163,8 +163,8 @@
 		for d in self.get("accounts"):
 			if not d.reference_type:
 				d.reference_name = None
-			if not d.reference_type:
-				d.reference_name = None
+			if not d.reference_name:
+				d.reference_type = None
 			if d.reference_type and d.reference_name and (d.reference_type in field_dict.keys()):
 				dr_or_cr = "credit" if d.reference_type in ("Sales Order", "Sales Invoice") \
 					else "debit"
diff --git a/erpnext/patches/v5_4/cleanup_journal_entry.py b/erpnext/patches/v5_4/cleanup_journal_entry.py
index 9968e3c..b8edbaa 100644
--- a/erpnext/patches/v5_4/cleanup_journal_entry.py
+++ b/erpnext/patches/v5_4/cleanup_journal_entry.py
@@ -2,10 +2,10 @@
 
 def execute():
 	for doctype, fieldname in (
-		("Sales Invoice", "against_invoice"),
-		("Purchase Invoice", "against_voucher"),
 		("Sales Order", "against_sales_order"),
 		("Purchase Order", "against_purchase_order"),
+		("Sales Invoice", "against_invoice"),
+		("Purchase Invoice", "against_voucher"),
 		("Journal Entry", "against_jv"),
 		("Expense Claim", "against_expense_claim"),
 	):
