diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index 93a2941..8bc7ad8 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -84,11 +84,19 @@
 		self.delete_events()
 
 	def has_active_quotation(self):
-		return frappe.db.sql("""
-			select q.name 
-			from `tabQuotation` q, `tabQuotation Item` qi
-			where q.name = qi.parent and q.docstatus=1 and qi.prevdoc_docname =%s 
-			and q.status not in ('Lost', 'Closed')""", self.name)
+		if not self.with_items:
+			return frappe.get_all('Quotation',
+				{
+					'opportunity': self.name,
+					'status': ("not in", ['Lost', 'Closed']),
+					'docstatus': 1
+				}, 'name')
+		else:
+			return frappe.db.sql("""
+				select q.name
+				from `tabQuotation` q, `tabQuotation Item` qi
+				where q.name = qi.parent and q.docstatus=1 and qi.prevdoc_docname =%s
+				and q.status not in ('Lost', 'Closed')""", self.name)
 
 	def has_ordered_quotation(self):
 		return frappe.db.sql("""
@@ -212,6 +220,8 @@
 
 		quotation.run_method("set_missing_values")
 		quotation.run_method("calculate_taxes_and_totals")
+		if not source.with_items:
+			quotation.opportunity = source.name
 
 	doclist = get_mapped_doc("Opportunity", source_name, {
 		"Opportunity": {
diff --git a/erpnext/crm/doctype/opportunity/test_opportunity.py b/erpnext/crm/doctype/opportunity/test_opportunity.py
index 0957afe..4cd20ea 100644
--- a/erpnext/crm/doctype/opportunity/test_opportunity.py
+++ b/erpnext/crm/doctype/opportunity/test_opportunity.py
@@ -3,9 +3,50 @@
 from __future__ import unicode_literals
 
 import frappe
+from frappe.utils import today
+from erpnext.crm.doctype.opportunity.opportunity import make_quotation
 import unittest
 
 test_records = frappe.get_test_records('Opportunity')
 
 class TestOpportunity(unittest.TestCase):
-	pass
+	def test_opportunity_status(self):
+		doc = make_opportunity(with_items=0)
+		quotation = make_quotation(doc.name)
+		quotation.append('items', {
+			"item_code": "_Test Item",
+			"qty": 1
+		})
+
+		quotation.run_method("set_missing_values")
+		quotation.run_method("calculate_taxes_and_totals")
+		quotation.submit()
+
+		doc = frappe.get_doc('Opportunity', doc.name)
+		self.assertEquals(doc.status, "Quotation")
+
+def make_opportunity(**args):
+	args = frappe._dict(args)
+
+	opp_doc = frappe.get_doc({
+		"doctype": "Opportunity",
+		"enquiry_from": "Customer" or args.enquiry_from,
+		"enquiry_type": "Sales",
+		"with_items": args.with_items or 0,
+		"transaction_date": today()
+	})
+
+	if opp_doc.enquiry_from == 'Customer':
+		opp_doc.customer = args.customer or "_Test Customer"
+
+	if opp_doc.enquiry_from == 'Lead':
+		opp_doc.customer = args.lead or "_T-Lead-00001"
+
+	if args.with_items:
+		opp_doc.append('items', {
+			"item_code": args.item_code or "_Test Item",
+			"qty": args.qty or 1
+		})
+
+	opp_doc.insert()
+	return opp_doc
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json
index ab3e8c9..0afc5ca 100644
--- a/erpnext/selling/doctype/quotation/quotation.json
+++ b/erpnext/selling/doctype/quotation/quotation.json
@@ -2588,6 +2588,37 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "opportunity", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Opportunity", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Opportunity", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }
  ], 
  "has_web_view": 0, 
@@ -2602,7 +2633,7 @@
  "istable": 0, 
  "max_attachments": 1, 
  "menu_index": 0, 
- "modified": "2017-08-09 01:16:21.104135", 
+ "modified": "2017-08-09 06:35:48.691648", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Quotation", 
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 5eb8b06..ce5fb49 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -49,9 +49,18 @@
 	def update_opportunity(self):
 		for opportunity in list(set([d.prevdoc_docname for d in self.get("items")])):
 			if opportunity:
-				opp = frappe.get_doc("Opportunity", opportunity)
-				opp.status = None
-				opp.set_status(update=True)
+				self.update_opportunity_status(opportunity)
+
+		if self.opportunity:
+			self.update_opportunity_status()
+
+	def update_opportunity_status(self, opportunity=None):
+		if not opportunity:
+			opportunity = self.opportunity
+
+		opp = frappe.get_doc("Opportunity", opportunity)
+		opp.status = None
+		opp.set_status(update=True)
 
 	def declare_order_lost(self, arg):
 		if not self.has_sales_order():
