diff --git a/erpnext/demo/demo.py b/erpnext/demo/demo.py
index 9b9d898..6642e7b 100644
--- a/erpnext/demo/demo.py
+++ b/erpnext/demo/demo.py
@@ -4,7 +4,7 @@
 import erpnext
 import frappe.utils
 from erpnext.demo.setup_data import setup_data
-from erpnext.demo.user import hr, sales, purchase, manufacturing, stock
+from erpnext.demo.user import hr, sales, purchase, manufacturing, stock, accounts
 
 """
 Make a demo
@@ -68,8 +68,7 @@
 		purchase.work()
 		manufacturing.work()
 		stock.work()
-		# run_stock()
-		# run_accounts()
+		accounts.work()
 		# run_projects()
 		# run_messages()
 
diff --git a/erpnext/demo/setup_data.py b/erpnext/demo/setup_data.py
index 1033f7d..6f1fb0a 100644
--- a/erpnext/demo/setup_data.py
+++ b/erpnext/demo/setup_data.py
@@ -330,6 +330,6 @@
 
 	if not frappe.db.get_global('demo_accounts_user'):
 		user = frappe.get_doc('User', 'LeonAbdulov@example.com')
-		user.add_roles('Accounts User', 'Accounts Manager')
+		user.add_roles('Accounts User', 'Accounts Manager', 'Sales User', 'Purchase User')
 		frappe.db.set_global('demo_accounts_user', user.name)
 
diff --git a/erpnext/demo/user/accounts.py b/erpnext/demo/user/accounts.py
index 4a514ef..d3df627 100644
--- a/erpnext/demo/user/accounts.py
+++ b/erpnext/demo/user/accounts.py
@@ -15,8 +15,7 @@
 	if random.random() < 0.5:
 		from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
 		report = "Ordered Items to be Billed"
-		for so in list(set([r[0] for r in
-			query_report.run(report)["result"]
+		for so in list(set([r[0] for r in query_report.run(report)["result"]
 				if r[0]!="Total"]))[:random.randint(1, 5)]:
 			si = frappe.get_doc(make_sales_invoice(so))
 			si.posting_date = frappe.flags.current_date
diff --git a/erpnext/demo/user/purchase.py b/erpnext/demo/user/purchase.py
index ff40e74..6f06f26 100644
--- a/erpnext/demo/user/purchase.py
+++ b/erpnext/demo/user/purchase.py
@@ -131,10 +131,13 @@
 	po.is_subcontracted = "Yes"
 	po.supplier = get_random("Supplier")
 
+	item_code = get_random("Item", {"is_sub_contracted_item": 1})
+	moq = frappe.db.get_value('Item', item_code, 'min_order_qty')
+
 	po.append("items", {
-		"item_code": get_random("Item", {"is_sub_contracted_item": 1}),
+		"item_code": item_code,
 		"schedule_date": frappe.utils.add_days(frappe.flags.current_date, 7),
-		"qty": 20
+		"qty": moq
 	})
 	po.set_missing_values()
 	try:
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index c5fce7d..ab8297c 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -5,6 +5,15 @@
 
 frappe.provide("erpnext.stock");
 frappe.provide("erpnext.stock.delivery_note");
+
+frappe.ui.form.on('Delivery Note', 'onload', function(frm) {
+	frm.set_indicator_formatter('item_code',
+		function(doc) {
+			return (doc.docstatus==1 || doc.qty<=doc.actual_qty) ? "green" : "orange"
+		})
+
+})
+
 erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend({
 	refresh: function(doc, dt, dn) {
 		this._super();
