testcases for reserved qty
diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index 8686081..7e637cc 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -338,7 +338,7 @@
 				if not d['reserved_warehouse']:
 					msgprint("""Please enter Reserved Warehouse for item %s 
 						as it is stock Item""" % d['item_code'], raise_exception=1)
-						
+					
 				args = {
 					"item_code": d['item_code'],
 					"reserved_qty": flt(update_stock) * flt(d['qty']),
diff --git a/selling/doctype/sales_order/test_sales_order.py b/selling/doctype/sales_order/test_sales_order.py
new file mode 100644
index 0000000..f1a159a
--- /dev/null
+++ b/selling/doctype/sales_order/test_sales_order.py
@@ -0,0 +1,84 @@
+import webnotes
+from webnotes.utils import flt
+import unittest
+
+class TestSalesOrder(unittest.TestCase):
+	def make(self):
+		w = webnotes.model_wrapper(webnotes.copy_doclist(test_records[0]))
+		w.insert()
+		w.submit()
+		return w
+		
+	def get_bin_reserved_qty(self, item_code, warehouse):
+		return flt(webnotes.conn.get_value("Bin", {"item_code": item_code, "warehouse": warehouse}, 
+			"reserved_qty"))
+		
+	def test_reserved_qty_so_submit_cancel(self):		
+		# submit
+		so = self.make()
+		print self.get_bin_reserved_qty(so.doclist[1].item_code, 
+			so.doclist[1].reserved_warehouse)
+
+		reserved_qty = self.get_bin_reserved_qty(so.doclist[1].item_code, 
+			so.doclist[1].reserved_warehouse)
+		self.assertEqual(reserved_qty, 10.0)
+		# cancel
+		so.cancel()
+		reserved_qty = self.get_bin_reserved_qty(so.doclist[1].item_code, 
+			so.doclist[1].reserved_warehouse)
+		self.assertEqual(reserved_qty, 0.0)
+	
+	def test_reserved_qty_dn_submit_cancel(self):
+		so = self.make()
+		
+		# allow negative stock
+		webnotes.conn.set_default("allow_negative_stock", 1)
+		
+		# dn submit (against so)
+		from stock.doctype.delivery_note.test_delivery_note import test_records as dn_test_records
+		dn = webnotes.model_wrapper(webnotes.copy_doclist(dn_test_records[0]))
+		dn.doclist[1].prevdoc_doctype = "Sales Order"
+		dn.doclist[1].prevdoc_docname = so.doc.name
+		dn.doclist[1].prevdoc_detail_docname = so.doclist[1].name
+		dn.insert()
+		dn.submit()
+		
+		reserved_qty = self.get_bin_reserved_qty(so.doclist[1].item_code, 
+			so.doclist[1].reserved_warehouse)
+		self.assertEqual(reserved_qty, 6.0)
+		
+test_records = [
+	[
+		{
+			"company": "_Test Company", 
+			"conversion_rate": 1.0, 
+			"currency": "INR", 
+			"customer": "_Test Customer", 
+			"customer_name": "_Test Customer",
+			"customer_group": "_Test Customer Group", 
+			"doctype": "Sales Order", 
+			"fiscal_year": "_Test Fiscal Year 2013", 
+			"order_type": "Sales",
+			"delivery_date": "2013-02-23",
+			"plc_conversion_rate": 1.0, 
+			"price_list_currency": "INR", 
+			"price_list_name": "_Test Price List", 
+			"territory": "_Test Territory", 
+			"transaction_date": "2013-02-21",
+			"grand_total": 500.0, 
+			"grand_total_export": 500.0, 
+		}, 
+		{
+			"description": "CPU", 
+			"doctype": "Sales Order Item", 
+			"item_code": "_Test Item Home Desktop 100", 
+			"item_name": "CPU", 
+			"parentfield": "sales_order_details", 
+			"qty": 10.0,
+			"basic_rate": 50.0,
+			"export_rate": 50.0,
+			"amount": 500.0,
+			"reserved_warehouse": "_Test Warehouse",
+		}
+	]
+]
\ No newline at end of file
diff --git a/stock/doctype/delivery_note/test_delivery_note.py b/stock/doctype/delivery_note/test_delivery_note.py
new file mode 100644
index 0000000..4666360
--- /dev/null
+++ b/stock/doctype/delivery_note/test_delivery_note.py
@@ -0,0 +1,36 @@
+test_records = [
+	[
+		{
+			"company": "_Test Company", 
+			"conversion_rate": 1.0, 
+			"currency": "INR", 
+			"customer": "_Test Customer", 
+			"customer_name": "_Test Customer",
+			"doctype": "Delivery Note", 
+			"fiscal_year": "_Test Fiscal Year 2013", 
+			"plc_conversion_rate": 1.0, 
+			"posting_date": "2013-02-21", 
+			"posting_time": "9:00:00", 
+			"price_list_currency": "INR", 
+			"price_list_name": "_Test Price List", 
+			"status": "Draft", 
+			"territory": "_Test Territory",
+			"grand_total": 500.0, 
+			"grand_total_export": 500.0,
+		}, 
+		{
+			"description": "CPU", 
+			"doctype": "Delivery Note Item", 
+			"item_code": "_Test Item Home Desktop 100", 
+			"item_name": "CPU", 
+			"parentfield": "delivery_note_details", 
+			"qty": 4.0, 
+			"basic_rate": 50.0,
+			"export_rate": 50.0,
+			"amount": 500.0,
+			"warehouse": "_Test Warehouse",
+			"stock_uom": "No."
+		}
+	]
+	
+]
\ No newline at end of file