diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 8d7f653..1e02415 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -38,10 +38,20 @@
 		
 		self.prev_link_mapper = {
 			"Purchase Order": {
-				"fieldname": "purchase_order"
+				"fieldname": "purchase_order",
+				"doctype": "Purchase Invoice Item",
+				"filters": [
+					["Purchase Invoice Item", "parent", "=", self.name],
+					["Purchase Invoice Item", "purchase_order", "!=", ""]
+				]
 			},
 			"Purchase Receipt": {
-				"fieldname": "purchase_receipt"
+				"fieldname": "purchase_receipt",
+				"doctype": "Purchase Invoice Item",
+				"filters": [
+					["Purchase Invoice Item", "parent", "=", self.item],
+					["Purchase Invoice Item", "purchase_receipt", "!=", ""]
+				]
 			}
 		}
 
@@ -672,9 +682,6 @@
 
 	def on_recurring(self, reference_doc):
 		self.due_date = None
-	
-	def get_link_filters(self, for_doctype):
-		return super(PurchaseInvoice, self).get_link_filters(for_doctype)
 
 @frappe.whitelist()
 def make_debit_note(source_name, target_doc=None):
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index bbbbccf..1a8eae3 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -41,10 +41,20 @@
 		
 		self.prev_link_mapper = {
 			"Sales Order": {
-				"fieldname": "sales_order"
+				"fieldname": "sales_order",
+				"doctype": "Sales Invoice Item",
+				"filters": [
+					["Sales Invoice Item", "parent", "=", self.name],
+					["Sales Invoice Item", "sales_order", "!=", ""]
+				]
 			},
 			"Delivery Note": {
-				"fieldname": "delivery_note"
+				"fieldname": "delivery_note",
+				"doctype": "Sales Invoice Item",
+				"filters": [
+					["Sales Invoice Item", "parent", "=", self.name],
+					["Sales Invoice Item", "delivery_note", "!=", ""]
+				]
 			}
 		}
 
@@ -705,9 +715,6 @@
 			self.set(fieldname, reference_doc.get(fieldname))
 
 		self.due_date = None
-	
-	def get_link_filters(self, for_doctype):
-		return super(SalesInvoice, self).get_link_filters(for_doctype)
 
 def get_list_context(context=None):
 	from erpnext.controllers.website_list_for_contact import get_list_context
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 9c7288c..d4b2221 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -35,7 +35,12 @@
 		
 		self.prev_link_mapper = {
 			"Supplier Quotation": {
-				"fieldname": "supplier_quotation"
+				"fieldname": "supplier_quotation",
+				"doctype": "Purchase Order Item",
+				"filters": [
+					["Purchase Order Item", "parent", "=", self.name],
+					["Purchase Order Item", "supplier_quotation", "!=", ""]
+				]
 			}
 		}
 
@@ -241,9 +246,6 @@
 			if item.delivered_by_supplier == 1:
 				item.received_qty = item.qty
 
-	def get_link_filters(self, for_doctype):
-		return super(PurchaseOrder, self).get_link_filters(for_doctype)
-
 @frappe.whitelist()
 def close_or_unclose_purchase_orders(names, status):
 	if not frappe.has_permission("Purchase Order", "write"):
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index a34c12a..8103756 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -26,7 +26,12 @@
 		
 		self.prev_link_mapper = {
 			"Quotation": {
-				"fieldname": "prevdoc_docname"
+				"fieldname": "prevdoc_docname",
+				"doctype": "Sales Order Item",
+				"filters": [
+					["Sales Order Item", "parent", "=", self.name],
+					["Sales Order Item", "prevdoc_docname", "!=", ""]
+				]
 			}
 		}
 		
@@ -315,9 +320,6 @@
 		mcount = month_map[reference_doc.recurring_type]
 		self.set("delivery_date", get_next_date(reference_doc.delivery_date, mcount,
 						cint(reference_doc.repeat_on_day_of_month)))
-
-	def get_link_filters(self, for_doctype):
-		return super(SalesOrder, self).get_link_filters(for_doctype)
 		
 def get_list_context(context=None):
 	from erpnext.controllers.website_list_for_contact import get_list_context
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 7d0cdcd..d8defc0 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -63,7 +63,12 @@
 		
 		self.prev_link_mapper = {
 			"Sales Order": {
-				"fieldname": "against_sales_order"
+				"fieldname": "against_sales_order",
+				"doctype": "Delivery Note Item",
+				"filters": [
+					["Delivery Note Item", "parent", "=", self.name],
+					["Delivery Note Item", "against_sales_order", "!=", ""]
+				]
 			}
 		}
 
@@ -289,9 +294,6 @@
 			dn_doc.update_billing_percentage(update_modified=update_modified)
 
 		self.load_from_db()
-	
-	def get_link_filters(self, for_doctype):
-		return super(DeliveryNote, self).get_link_filters(for_doctype)
 
 def update_billed_amount_based_on_so(so_detail, update_modified=True):
 	# Billed against Sales Order directly
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 751d321..6c72d6b 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -48,7 +48,12 @@
 		
 		self.prev_link_mapper = {
 			"Purchase Order": {
-				"fieldname": "prevdoc_docname"
+				"fieldname": "prevdoc_docname",
+				"doctype": "Purchase Receipt Item",
+				"filters": [
+					["Purchase Receipt Item", "parent", "=", self.name],
+					["Purchase Receipt Item", "prevdoc_docname", "!=", ""]
+				]
 			}
 		}
 
@@ -339,9 +344,6 @@
 
 		self.load_from_db()
 
-	def get_link_filters(self, for_doctype):
-		return super(PurchaseReceipt, self).get_link_filters(for_doctype)
-
 def update_billed_amount_based_on_po(po_detail, update_modified=True):
 	# Billed against Sales Order directly
 	billed_against_po = frappe.db.sql("""select sum(amount) from `tabPurchase Invoice Item`
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 9105553..3cc79ef 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -108,7 +108,7 @@
 							.format(d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate))
 
 	def get_link_filters(self, for_doctype):
-		if self.prev_link_mapper.get(for_doctype):
+		if hasattr(self, "prev_link_mapper") and self.prev_link_mapper.get(for_doctype):
 			fieldname = self.prev_link_mapper[for_doctype]["fieldname"]
 			
 			values = filter(None, tuple([item.as_dict()[fieldname] for item in self.items]))
