Merge pull request #9699 from manassolanki/productn

frappe call only when there is item in production order
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 282425d..2dd4e7a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -803,9 +803,10 @@
 				continue
 
 			for serial_no in item.serial_no.split("\n"):
-				sno = frappe.get_doc('Serial No', serial_no)
-				sno.sales_invoice = invoice
-				sno.db_update()
+				if serial_no and frappe.db.exists('Serial No', serial_no):
+					sno = frappe.get_doc('Serial No', serial_no)
+					sno.sales_invoice = invoice
+					sno.db_update()
 
 	def validate_serial_numbers(self):
 		"""
diff --git a/erpnext/selling/doctype/installation_note/installation_note.js b/erpnext/selling/doctype/installation_note/installation_note.js
index ab35574..9f0c050 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.js
+++ b/erpnext/selling/doctype/installation_note/installation_note.js
@@ -30,12 +30,8 @@
 	setup_queries: function() {
 		var me = this;
 
-		this.frm.set_query("customer_address", function() {
-			return {
-				filters: {'customer': me.frm.doc.customer }
-			}
-		});
-
+		frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
+		frm.set_query('customer_address', erpnext.queries.address_query);
 		this.frm.set_query('contact_person', erpnext.queries.contact_query);
 
 		this.frm.set_query("customer", function() {