Merge pull request #2037 from nabinhait/hotfix

Fixes in 'Received Items to be Billed' report
diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js
index e39d77b..e185375 100644
--- a/erpnext/accounts/doctype/account/account.js
+++ b/erpnext/accounts/doctype/account/account.js
@@ -65,10 +65,10 @@
 
 	if (cstr(doc.group_or_ledger) == 'Group') {
 		cur_frm.add_custom_button(__('Convert to Ledger'),
-			function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet')
+			function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet', 'btn-default');
 	} else if (cstr(doc.group_or_ledger) == 'Ledger') {
 		cur_frm.add_custom_button(__('Convert to Group'),
-			function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet')
+			function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet', 'btn-default')
 
 		cur_frm.appframe.add_button(__('View Ledger'), function() {
 			frappe.route_options = {
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 5b034f8..2f60dca 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -16,7 +16,6 @@
 		if not frozen_accounts_modifier or frozen_accounts_modifier in frappe.user.get_roles():
 			self.get("__onload").can_freeze_account = True
 
-
 	def autoname(self):
 		self.name = self.account_name.strip() + ' - ' + \
 			frappe.db.get_value("Company", self.company, "abbr")
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js
index 808ad52..d9e71d9 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center.js
@@ -64,10 +64,12 @@
 cur_frm.cscript.hide_unhide_group_ledger = function(doc) {
 	if (cstr(doc.group_or_ledger) == 'Group') {
 		cur_frm.add_custom_button(__('Convert to Ledger'),
-			function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet')
+			function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet',
+				"btn-default")
 	} else if (cstr(doc.group_or_ledger) == 'Ledger') {
 		cur_frm.add_custom_button(__('Convert to Group'),
-			function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet')
+			function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet',
+				"btn-default")
 	}
 }
 
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
index f6f19f7..b68cfb9 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
@@ -14,7 +14,8 @@
 		this.frm.toggle_enable('year_end_date', doc.__islocal)
 
 		if (!doc.__islocal && (doc.name != sys_defaults.fiscal_year)) {
-			this.frm.add_custom_button(__("Set as Default"), this.frm.cscript.set_as_default);
+			this.frm.add_custom_button(__("Set as Default"),
+				this.frm.cscript.set_as_default, "icon-star");
 			this.frm.set_intro(__("To set this Fiscal Year as Default, click on 'Set as Default'"));
 		} else {
 			this.frm.set_intro("");
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.json b/erpnext/accounts/doctype/journal_voucher/journal_voucher.json
index ac40266..187c59a 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.json
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.json
@@ -440,7 +440,7 @@
  "icon": "icon-file-text", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2014-05-27 03:49:12.326026", 
+ "modified": "2014-07-31 05:05:03.294068", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Journal Voucher", 
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.html b/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.html
new file mode 100644
index 0000000..aaa3854
--- /dev/null
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.html
@@ -0,0 +1,20 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span class="text-muted" style="margin-right: 8px;">
+				{%= doc.get_formatted("posting_date") %}</span>
+			<span class="label label-info filterable"
+				data-filter="voucher_type,=,{%= doc.voucher_type %}">
+					{%= doc.voucher_type %}
+			</span>
+			{% if(doc.docstatus===0) { %}
+				<span class="label label-danger filterable"
+					data-filter="docstatus,=,0">{%= __("Draft") %}</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-2 text-right">
+		{%= doc.get_formatted("total_debit") %}
+	</div>
+</div>
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.js b/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.js
new file mode 100644
index 0000000..06d578a
--- /dev/null
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Journal Voucher'] = {
+	add_fields: ["voucher_type", "posting_date", "total_debit", "company"]
+};
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
index 8e675ef..51cb306 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
@@ -128,8 +128,9 @@
   }
  ], 
  "hide_toolbar": 1, 
+ "icon": "icon-resize-horizontal", 
  "issingle": 1, 
- "modified": "2014-07-22 14:53:59.084438", 
+ "modified": "2014-07-31 05:43:03.410832", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Reconciliation", 
@@ -139,7 +140,7 @@
   {
    "cancel": 0, 
    "create": 1, 
-   "delete": 0, 
+   "delete": 1, 
    "permlevel": 0, 
    "read": 1, 
    "role": "Accounts Manager", 
@@ -149,7 +150,7 @@
   {
    "cancel": 0, 
    "create": 1, 
-   "delete": 0, 
+   "delete": 1, 
    "permlevel": 0, 
    "read": 1, 
    "role": "Accounts User", 
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index 4f6bd08..49ed12c 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -27,7 +27,8 @@
 
 		// Show / Hide button
 		if(doc.docstatus==1 && doc.outstanding_amount > 0)
-			this.frm.add_custom_button(__('Make Payment Entry'), this.make_bank_voucher);
+			this.frm.add_custom_button(__('Make Payment Entry'), this.make_bank_voucher,
+				frappe.boot.doctype_icons["Journal Voucher"]);
 
 		if(doc.docstatus==1) {
 			cur_frm.appframe.add_button(__('View Ledger'), function() {
@@ -56,7 +57,7 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 
 			cur_frm.add_custom_button(__('From Purchase Receipt'),
 				function() {
@@ -69,7 +70,7 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 
 		}
 
@@ -112,7 +113,7 @@
 
 	entries_add: function(doc, cdt, cdn) {
 		var row = frappe.get_doc(cdt, cdn);
-		this.frm.script_manager.copy_from_first_row("entries", row, 
+		this.frm.script_manager.copy_from_first_row("entries", row,
 			["expense_account", "cost_center", "project_name"]);
 	},
 
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 74a9628..55e3247 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -14,6 +14,10 @@
 from erpnext.controllers.buying_controller import BuyingController
 from erpnext.accounts.party import get_party_account, get_due_date
 
+form_grid_templates = {
+	"entries": "templates/form_grid/item_grid.html"
+}
+
 class PurchaseInvoice(BuyingController):
 	tname = 'Purchase Invoice Item'
 	fname = 'entries'
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.html b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.html
new file mode 100644
index 0000000..cccd38a
--- /dev/null
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.html
@@ -0,0 +1,45 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-9">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="supplier,=,{%= doc.supplier %}">
+					{%= doc.supplier_name %}</span></span>
+			{% if(doc.outstanding_amount > 0 && doc.docstatus==1) { %}
+				{% if(frappe.datetime.get_diff(doc.due_date) < 0) { %}
+				<span class="label label-danger filterable"
+					title="{%= doc.get_formatted("due_date")%}"
+					data-filter="outstanding_amount,>,0|due_date,<,Today">
+						{%= __("Overdue: ") + comment_when(doc.due_date) %}
+				</span>
+				{% } else { %}
+				<span class="label label-warning filterable"
+					data-filter="outstanding_amount,>,0|due,>=,Today"
+					title="{%= __("Payment Pending") %}">
+					{%= doc.get_formatted("due_date") %}</span>
+				{% } %}
+			{% } %}
+			{% if(doc.outstanding_amount==0 && doc.docstatus==1) { %}
+				<span class="label label-success filterable"
+					title="{%= doc.get_formatted("due_date")%}"
+					data-filter="outstanding_amount,=,0">
+						<i class="icon-ok-sign"></i> {%= __("Paid") %}
+				</span>
+			{% } %}
+			{% if(doc.docstatus===0) { %}
+				<span class="label label-danger filterable"
+					data-filter="docstatus,=,0">{%= __("Draft") %}</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = cint((doc.grand_total - doc.outstanding_amount) * 100 / doc.grand_total), title = __("Outstanding Amount") + ": " + doc.get_formatted("outstanding_amount") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+	<div class="col-xs-2 text-right">
+		<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_import') %}">
+			{%= doc.get_formatted("grand_total_import") %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
index 61d2750..d72176a 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
@@ -3,10 +3,6 @@
 
 // render
 frappe.listview_settings['Purchase Invoice'] = {
-	add_fields: ["`tabPurchase Invoice`.grand_total", "`tabPurchase Invoice`.outstanding_amount"],
-	add_columns: [{"content":"paid_amount", width:"10%", type:"bar-graph", label: "Paid"}],
-	prepare_data: function(data) {
-		data.paid_amount = flt(data.grand_total) ? (((flt(data.grand_total) - 
-			flt(data.outstanding_amount)) / flt(data.grand_total)) * 100) : 0;
-	}
+	add_fields: ["supplier", "supplier_name", "grand_total", "outstanding_amount", "due_date", "company",
+		"currency"]
 };
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 06a496a..c5e9418 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -74,11 +74,12 @@
 					});
 
 				if(!from_delivery_note)
-					cur_frm.appframe.add_primary_action(__('Make Delivery'), cur_frm.cscript['Make Delivery Note'])
+					cur_frm.appframe.add_primary_action(__('Make Delivery'), cur_frm.cscript['Make Delivery Note'], "icon-truck")
 			}
 
-			if(doc.outstanding_amount!=0)
-				cur_frm.appframe.add_primary_action(__('Make Payment Entry'), cur_frm.cscript.make_bank_voucher);
+			if(doc.outstanding_amount!=0) {
+				cur_frm.appframe.add_primary_action(__('Make Payment Entry'), cur_frm.cscript.make_bank_voucher, "icon-money");
+			}
 		}
 
 		// Show buttons only when pos view is active
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 8f82fc6..1205646 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -18,6 +18,10 @@
 
 from erpnext.controllers.selling_controller import SellingController
 
+form_grid_templates = {
+	"entries": "templates/form_grid/item_grid.html"
+}
+
 class SalesInvoice(SellingController):
 	tname = 'Sales Invoice Item'
 	fname = 'entries'
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.html b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.html
new file mode 100644
index 0000000..47fadb5
--- /dev/null
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.html
@@ -0,0 +1,45 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-9">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="customer,=,{%= doc.customer %}">
+					{%= doc.customer_name %}</span></span>
+			{% if(doc.outstanding_amount > 0 && doc.docstatus==1) { %}
+				{% if(frappe.datetime.get_diff(doc.due_date) < 0) { %}
+				<span class="label label-danger filterable"
+					title="{%= doc.get_formatted("due_date")%}"
+					data-filter="outstanding_amount,>,0|due_date,<,Today">
+						{%= __("Overdue: ") + comment_when(doc.due_date) %}
+				</span>
+				{% } else { %}
+				<span class="label label-warning filterable"
+					data-filter="outstanding_amount,>,0|due_date,>=,Today"
+					title="{%= __("Payment Pending") %}">
+					{%= doc.get_formatted("due_date") %}</span>
+				{% } %}
+			{% } %}
+			{% if(doc.outstanding_amount==0 && doc.docstatus==1) { %}
+				<span class="label label-success filterable"
+					title="{%= doc.get_formatted("due_date")%}"
+					data-filter="outstanding_amount,=,0">
+						<i class="icon-ok-sign"></i> {%= __("Paid") %}
+				</span>
+			{% } %}
+			{% if(doc.docstatus===0) { %}
+				<span class="label label-danger filterable"
+					data-filter="docstatus,=,0">{%= __("Draft") %}</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = cint((doc.grand_total - doc.outstanding_amount) * 100 / doc.grand_total), title = __("Outstanding Amount") + ": " + doc.get_formatted("outstanding_amount") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+	<div class="col-xs-2 text-right">
+		<div class="text-ellipsis" title="{%= doc.get_formatted("grand_total_export") %}">
+			{%= doc.get_formatted("grand_total_export") %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
index 42c80b4..ea2986a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
@@ -3,14 +3,7 @@
 
 // render
 frappe.listview_settings['Sales Invoice'] = {
-	add_fields: ["`tabSales Invoice`.grand_total", "`tabSales Invoice`.outstanding_amount"],
-	add_columns: [{"content":"Percent Paid", width:"10%", type:"bar-graph",
-		label: "Payment Received"}],
-	prepare_data: function(data) {
-		if (data.docstatus === 1) {
-			data["Percent Paid"] =  flt(data.grand_total)
-				? (((flt(data.grand_total) - flt(data.outstanding_amount)) / flt(data.grand_total)) * 100)
-				: 100.0;
-		}
-	}
+	add_fields: ["customer", "customer_name", "grand_total", "outstanding_amount", "due_date", "company",
+		"currency"],
+	filters: [["outstanding_amount", ">", "0"]]
 };
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.js b/erpnext/accounts/report/trial_balance/trial_balance.js
index 5050dba..bf9307e 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.js
+++ b/erpnext/accounts/report/trial_balance/trial_balance.js
@@ -47,13 +47,13 @@
 		},
 		{
 			"fieldname": "with_period_closing_entry",
-			"label": __("With Period Closing Entry"),
+			"label": __("Period Closing Entry"),
 			"fieldtype": "Check",
 			"default": 1
 		},
 		{
 			"fieldname": "show_zero_values",
-			"label": __("Show rows with zero values"),
+			"label": __("Show zero values"),
 			"fieldtype": "Check"
 		},
 	],
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 6474446..9433ebe 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -22,14 +22,18 @@
 			cur_frm.dashboard.add_progress(cint(doc.per_billed) + __("% Billed"),
 				doc.per_billed);
 
-			cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
-
 			if(flt(doc.per_received, 2) < 100)
-				cur_frm.add_custom_button(__('Make Purchase Receipt'), this.make_purchase_receipt);
+				cur_frm.add_custom_button(__('Make Purchase Receipt'),
+					this.make_purchase_receipt, frappe.boot.doctype_icons["Purchase Receipt"]);
 			if(flt(doc.per_billed, 2) < 100)
-				cur_frm.add_custom_button(__('Make Invoice'), this.make_purchase_invoice);
+				cur_frm.add_custom_button(__('Make Invoice'), this.make_purchase_invoice,
+					frappe.boot.doctype_icons["Purchase Invoice"]);
 			if(flt(doc.per_billed, 2) < 100 || doc.per_received < 100)
-				cur_frm.add_custom_button(__('Stop'), cur_frm.cscript['Stop Purchase Order'], "icon-exclamation");
+				cur_frm.add_custom_button(__('Stop'), cur_frm.cscript['Stop Purchase Order'],
+					"icon-exclamation", "btn-default");
+
+			cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms, "icon-mobile-phone", true);
+
 		} else if(doc.docstatus===0) {
 			cur_frm.cscript.add_from_mappers();
 		}
@@ -67,7 +71,7 @@
 						company: cur_frm.doc.company
 					}
 				})
-			}
+			}, "icon-download", "btn-default"
 		);
 
 		cur_frm.add_custom_button(__('From Supplier Quotation'),
@@ -81,7 +85,7 @@
 						company: cur_frm.doc.company
 					}
 				})
-			}
+			}, "icon-download", "btn-default"
 		);
 
 		cur_frm.add_custom_button(__('For Supplier'),
@@ -93,7 +97,7 @@
 						docstatus: ["!=", 2],
 					}
 				})
-			}
+			}, "icon-download", "btn-default"
 		);
 	},
 
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index f9f5103..04ad37f 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -8,6 +8,10 @@
 from frappe.model.mapper import get_mapped_doc
 from erpnext.controllers.buying_controller import BuyingController
 
+form_grid_templates = {
+	"po_details": "templates/form_grid/item_grid.html"
+}
+
 class PurchaseOrder(BuyingController):
 	tname = 'Purchase Order Item'
 	fname = 'po_details'
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order_list.html b/erpnext/buying/doctype/purchase_order/purchase_order_list.html
new file mode 100644
index 0000000..a2031c0
--- /dev/null
+++ b/erpnext/buying/doctype/purchase_order/purchase_order_list.html
@@ -0,0 +1,39 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-8">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="supplier,=,{%= doc.supplier %}">
+					{%= doc.supplier_name %}</span></span>
+			{% if(doc.per_received < 100 && doc.status!=="Stopped") { %}
+				<span class="label label-warning filterable"
+					data-filter="per_received,<,100|status,!=,Stopped">
+					{%= __("Pending") %}
+				</span>
+			{% } %}
+			{% if(doc.status==="Stopped" || doc.status==="Draft") { %}
+				<span class="label label-danger filterable"
+					data-filter="status,=,Stopped">{%= __(doc.status) %}</span>
+			{% } %}
+			{% if(doc.per_received == 100 && doc.status!=="Stopped") { %}
+				<span class="filterable text-muted"
+					data-filter="per_received,=,100|status,!=,Stopped">
+					<i class="icon-ok-sign"></i></span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = doc.per_received, title = __("Received") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = doc.per_billed, title = __("Billed") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+	<div class="col-xs-2 text-right">
+		<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_import') %}">
+			{%= doc.get_formatted("grand_total_import") %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order_list.js b/erpnext/buying/doctype/purchase_order/purchase_order_list.js
new file mode 100644
index 0000000..f4e5d3d
--- /dev/null
+++ b/erpnext/buying/doctype/purchase_order/purchase_order_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Purchase Order'] = {
+	add_fields: ["grand_total", "company", "currency", "supplier",
+		"supplier_name", "per_received", "per_billed"]
+};
diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json
index 752f342..6a34e7d 100644
--- a/erpnext/buying/doctype/supplier/supplier.json
+++ b/erpnext/buying/doctype/supplier/supplier.json
@@ -186,7 +186,7 @@
  ], 
  "icon": "icon-user", 
  "idx": 1, 
- "modified": "2014-05-27 03:49:20.060872", 
+ "modified": "2014-08-07 06:57:15.274795", 
  "modified_by": "Administrator", 
  "module": "Buying", 
  "name": "Supplier", 
@@ -231,5 +231,6 @@
    "role": "Accounts User"
   }
  ], 
- "search_fields": "supplier_name,supplier_type"
+ "search_fields": "supplier_name,supplier_type", 
+ "title_field": "supplier_name"
 }
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier/supplier_list.html b/erpnext/buying/doctype/supplier/supplier_list.html
new file mode 100644
index 0000000..5cab239
--- /dev/null
+++ b/erpnext/buying/doctype/supplier/supplier_list.html
@@ -0,0 +1,15 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			{% if(doc.supplier_name != doc.name) { %}
+			<span style="margin-right: 8px; display: inline-block">
+				{%= doc.supplier_name %}</span>
+			{% } %}
+			<span class="label label-info filterable"
+				data-filter="supplier_type,=,{%= doc.supplier_type %}">
+					{%= doc.supplier_type %}
+			</span>
+		</div>
+	</div>
+</div>
diff --git a/erpnext/buying/doctype/supplier/supplier_list.js b/erpnext/buying/doctype/supplier/supplier_list.js
new file mode 100644
index 0000000..d26932c
--- /dev/null
+++ b/erpnext/buying/doctype/supplier/supplier_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Supplier'] = {
+	add_fields: ["supplier_name", "supplier_type"]
+};
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index 37326af..b8d40ca 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -16,10 +16,11 @@
 		this._super();
 
 		if (this.frm.doc.docstatus === 1) {
-			cur_frm.add_custom_button(__("Make Purchase Order"), this.make_purchase_order);
-		} 
+			cur_frm.add_custom_button(__("Make Purchase Order"), this.make_purchase_order,
+				frappe.boot.doctype_icons["Journal Voucher"]);
+		}
 		else if (this.frm.doc.docstatus===0) {
-			cur_frm.add_custom_button(__('From Material Request'), 
+			cur_frm.add_custom_button(__('From Material Request'),
 				function() {
 					frappe.model.map_current_doc({
 						method: "erpnext.stock.doctype.material_request.material_request.make_supplier_quotation",
@@ -32,10 +33,10 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 		}
-	},	
-		
+	},
+
 	make_purchase_order: function() {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.buying.doctype.supplier_quotation.supplier_quotation.make_purchase_order",
@@ -51,7 +52,7 @@
 	// no need to trigger updation of stock uom, as this field doesn't exist in supplier quotation
 }
 
-cur_frm.fields_dict['quotation_items'].grid.get_field('project_name').get_query = 
+cur_frm.fields_dict['quotation_items'].grid.get_field('project_name').get_query =
 	function(doc, cdt, cdn) {
 		return{
 			filters:[
@@ -70,4 +71,4 @@
 	return {
 		filters:{'supplier': doc.supplier}
 	}
-}
\ No newline at end of file
+}
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index 2af7bb9..d009bac 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -6,6 +6,11 @@
 from frappe.model.mapper import get_mapped_doc
 
 from erpnext.controllers.buying_controller import BuyingController
+
+form_grid_templates = {
+	"quotation_items": "templates/form_grid/item_grid.html"
+}
+
 class SupplierQuotation(BuyingController):
 	tname = "Supplier Quotation Item"
 	fname = "quotation_items"
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.html b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.html
new file mode 100644
index 0000000..9aa9d5b
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.html
@@ -0,0 +1,22 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="supplier,=,{%= doc.supplier %}">
+					{%= doc.supplier %}</span>
+				</span>
+			</span>
+			<span class="label {%= doc.status=="Draft" ? "label-danger" :
+				(doc.status=="Ordered" ? "label-success": "label-info") %}
+				filterable"
+				data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
+		</div>
+	</div>
+	<div class="col-xs-2 text-right">
+		<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_import') %}">
+			{%= doc.get_formatted("grand_total_import") %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js
new file mode 100644
index 0000000..d62a0e2
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Supplier Quotation'] = {
+	add_fields: ["supplier", "grand_total", "status", "company", "currency"]
+};
diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
index 1fac469..575de69 100644
--- a/erpnext/config/hr.py
+++ b/erpnext/config/hr.py
@@ -13,13 +13,13 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Salary Slip",
-					"description": _("Monthly salary statement."),
+					"name": "Leave Application",
+					"description": _("Applications for leave."),
 				},
 				{
 					"type": "doctype",
-					"name": "Leave Application",
-					"description": _("Applications for leave."),
+					"name": "Expense Claim",
+					"description": _("Claims for company expense."),
 				},
 				{
 					"type": "doctype",
@@ -28,8 +28,8 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Expense Claim",
-					"description": _("Claims for company expense."),
+					"name": "Salary Slip",
+					"description": _("Monthly salary statement."),
 				},
 				{
 					"type": "doctype",
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 7faba41..dd58758 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -6,6 +6,7 @@
 from frappe.utils import cint, flt, rounded, cstr, comma_or
 from erpnext.setup.utils import get_company_currency
 from frappe import _, throw
+from erpnext.stock.get_item_details import get_available_qty
 
 from erpnext.controllers.stock_controller import StockController
 
@@ -17,6 +18,12 @@
 				"other_charges": "templates/print_formats/includes/taxes.html",
 			}
 
+	def onload(self):
+		if self.doctype in ("Sales Order", "Delivery Note", "Sales Invoice"):
+			for item in self.get(self.fname):
+				item.update(get_available_qty(item.item_code,
+					item.warehouse))
+
 	def validate(self):
 		super(SellingController, self).validate()
 		self.validate_max_discount()
diff --git a/erpnext/home/page/activity/activity.js b/erpnext/home/page/activity/activity.js
index 57a38ac..4562ca8 100644
--- a/erpnext/home/page/activity/activity.js
+++ b/erpnext/home/page/activity/activity.js
@@ -8,7 +8,7 @@
 		single_column: true
 	})
 	wrapper.appframe.add_module_icon("Activity");
-	
+
 	var list = new frappe.ui.Listing({
 		hide_refresh: true,
 		appframe: wrapper.appframe,
@@ -21,12 +21,12 @@
 	list.run();
 
 	wrapper.appframe.set_title_right("Refresh", function() { list.run(); });
-	
+
 	// Build Report Button
 	if(frappe.boot.user.can_get_report.indexOf("Feed")!=-1) {
 		wrapper.appframe.add_primary_action(__('Build Report'), function() {
 			frappe.set_route('Report', "Feed");
-		}, 'icon-th')
+		}, 'icon-th', true);
 	}
 }
 
@@ -44,23 +44,23 @@
 	scrub_data: function(data) {
 		data.by = frappe.user_info(data.owner).fullname;
 		data.imgsrc = frappe.utils.get_file_link(frappe.user_info(data.owner).image);
-		
+
 		// feedtype
 		if(!data.feed_type) {
 			data.feed_type = __(data.doc_type);
 			data.add_class = "label-info";
 			data.onclick = repl('onclick="window.location.href=\'#!List/%(feed_type)s\';"', data)
 		}
-		
+
 		// color for comment
 		if(data.feed_type=='Comment') {
 			data.add_class = "label-danger";
 		}
-		
+
 		if(data.feed_type=='Assignment') {
 			data.add_class = "label-warning";
 		}
-		
+
 		// link
 		if(data.doc_name && data.feed_type!='Login') {
 			data.link = frappe.format(data.doc_name, {"fieldtype":"Link", "options":data.doc_type})
@@ -71,7 +71,7 @@
 	add_date_separator: function(row, data) {
 		var date = dateutil.str_to_obj(data.modified);
 		var last = erpnext.last_feed_date;
-		
+
 		if((last && dateutil.obj_to_str(last) != dateutil.obj_to_str(date)) || (!last)) {
 			var diff = dateutil.get_day_diff(dateutil.get_today(), dateutil.obj_to_str(date));
 			if(diff < 1) {
@@ -85,4 +85,4 @@
 		}
 		erpnext.last_feed_date = date;
 	}
-})
\ No newline at end of file
+})
diff --git a/erpnext/hr/doctype/attendance/attendance.json b/erpnext/hr/doctype/attendance/attendance.json
index 2ca5b33..18c39e0 100644
--- a/erpnext/hr/doctype/attendance/attendance.json
+++ b/erpnext/hr/doctype/attendance/attendance.json
@@ -129,7 +129,7 @@
  "icon": "icon-ok", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2014-05-27 03:49:07.580876", 
+ "modified": "2014-08-05 06:52:02.226904", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Attendance", 
@@ -178,5 +178,6 @@
  ], 
  "search_fields": "employee, employee_name, att_date, status", 
  "sort_field": "modified", 
- "sort_order": "DESC"
+ "sort_order": "DESC", 
+ "title_field": "employee_name"
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/attendance/attendance_list.html b/erpnext/hr/doctype/attendance/attendance_list.html
new file mode 100644
index 0000000..bfda7f8
--- /dev/null
+++ b/erpnext/hr/doctype/attendance/attendance_list.html
@@ -0,0 +1,19 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+
+			<span class="label
+				label-{%= {"Present":"success", "Absent":"default", "Half Day": "warning"}[doc.status] %} filterable"
+				title="{%= __("Status") %}"
+				data-filter="status,=,{%= doc.status %}">
+				{%= doc.status %}
+			</span>
+		</div>
+	</div>
+	<div class="col-xs-2 text-right">
+		<span style="margin-right: 8px;" class="filterable"
+				data-filter="att_date,=,{%= doc.att_date %}">
+				{%= doc.get_formatted("att_date") %}</span>
+	</div>
+</div>
diff --git a/erpnext/hr/doctype/attendance/attendance_list.js b/erpnext/hr/doctype/attendance/attendance_list.js
new file mode 100644
index 0000000..87c87d7
--- /dev/null
+++ b/erpnext/hr/doctype/attendance/attendance_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Attendance'] = {
+	add_fields: ["status", "att_date"],
+};
diff --git a/erpnext/hr/doctype/attendance/test_attendance.py b/erpnext/hr/doctype/attendance/test_attendance.py
new file mode 100644
index 0000000..e4f390b
--- /dev/null
+++ b/erpnext/hr/doctype/attendance/test_attendance.py
@@ -0,0 +1,10 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
+# See license.txt
+
+import frappe
+import unittest
+
+test_records = frappe.get_test_records('Attendance')
+
+class TestAttendance(unittest.TestCase):
+	pass
diff --git a/erpnext/hr/doctype/attendance/test_records.json b/erpnext/hr/doctype/attendance/test_records.json
new file mode 100644
index 0000000..41b40ff
--- /dev/null
+++ b/erpnext/hr/doctype/attendance/test_records.json
@@ -0,0 +1,11 @@
+[
+	{
+		"doctype": "Attendance",
+		"name": "_Test Attendance 1",
+		"employee": "_T-Employee-0001",
+		"status": "Present",
+		"att_date": "2014-02-01",
+		"fiscal_year": "_Test Fiscal Year 2014",
+		"company": "_Test Company"
+	}
+]
diff --git a/erpnext/hr/doctype/earning_type/earning_type.json b/erpnext/hr/doctype/earning_type/earning_type.json
index 85c6323..507acd9 100644
--- a/erpnext/hr/doctype/earning_type/earning_type.json
+++ b/erpnext/hr/doctype/earning_type/earning_type.json
@@ -27,33 +27,11 @@
    "permlevel": 0, 
    "reqd": 0, 
    "width": "300px"
-  }, 
-  {
-   "fieldname": "taxable", 
-   "fieldtype": "Select", 
-   "in_list_view": 1, 
-   "label": "Taxable", 
-   "oldfieldname": "taxable", 
-   "oldfieldtype": "Select", 
-   "options": "\nYes\nNo", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "depends_on": "eval:doc.taxable=='No'", 
-   "fieldname": "exemption_limit", 
-   "fieldtype": "Float", 
-   "hidden": 0, 
-   "in_list_view": 1, 
-   "label": "Exemption Limit", 
-   "oldfieldname": "exemption_limit", 
-   "oldfieldtype": "Currency", 
-   "permlevel": 0
   }
  ], 
  "icon": "icon-flag", 
  "idx": 1, 
- "modified": "2014-05-27 03:49:10.133416", 
+ "modified": "2014-07-31 07:25:26.606030", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Earning Type", 
diff --git a/erpnext/hr/doctype/employee/employee.js b/erpnext/hr/doctype/employee/employee.js
index 96aca00..0934bc5 100644
--- a/erpnext/hr/doctype/employee/employee.js
+++ b/erpnext/hr/doctype/employee/employee.js
@@ -21,7 +21,7 @@
 		if(!this.frm.doc.__islocal && this.frm.doc.__onload &&
 			!this.frm.doc.__onload.salary_structure_exists) {
 				cur_frm.add_custom_button(__('Make Salary Structure'), function() {
-					me.make_salary_structure(this); });
+					me.make_salary_structure(this); }, frappe.boot.doctype_icons["Salary Structure"]);
 		}
 	},
 
diff --git a/erpnext/hr/doctype/employee/employee_list.html b/erpnext/hr/doctype/employee/employee_list.html
new file mode 100644
index 0000000..98b45a9
--- /dev/null
+++ b/erpnext/hr/doctype/employee/employee_list.html
@@ -0,0 +1,35 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+
+			{% if(doc.status==="Active") { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Active") %}" class="filterable"
+				data-filter="status,=,Active">
+				<i class="icon-ok"></i>
+			</span>
+			{% } %}
+
+			{% if(doc.designation) { %}
+			<span style="margin-right: 8px;" class="filterable"
+					data-filter="designation,=,{%= doc.designation %}">
+					{%= doc.designation %}</span>
+			{% } %}
+
+			{% if(doc.branch) { %}
+			<span class="label label-default filterable"
+				data-filter="branch,=,{%= doc.branch %}">
+				<i class="icon-map-marker"></i> {%= doc.branch %}
+			</span>
+			{% } %}
+
+			{% if(doc.department) { %}
+			<span class="label label-default filterable"
+				data-filter="department,=,{%= doc.department %}">
+				<i class="icon-sitemap"></i> {%= doc.department %}
+			</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/hr/doctype/employee/employee_list.js b/erpnext/hr/doctype/employee/employee_list.js
new file mode 100644
index 0000000..c1b23ac
--- /dev/null
+++ b/erpnext/hr/doctype/employee/employee_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Employee'] = {
+	add_fields: ["status", "branch", "department", "designation"],
+	filters:[["status","=", "Active"]]
+};
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index fbc5994..4ef2efc 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -45,18 +45,18 @@
 cur_frm.cscript.onload = function(doc,cdt,cdn) {
 	if(!doc.approval_status)
 		cur_frm.set_value("approval_status", "Draft")
-			
+
 	if (doc.__islocal) {
 		cur_frm.set_value("posting_date", dateutil.get_today());
-		if(doc.amended_from) 
+		if(doc.amended_from)
 			cur_frm.set_value("approval_status", "Draft");
 		cur_frm.cscript.clear_sanctioned(doc);
 	}
-	
+
 	cur_frm.fields_dict.employee.get_query = function(doc,cdt,cdn) {
 		return{
 			query: "erpnext.controllers.queries.employee_query"
-		}	
+		}
 	}
 	var exp_approver = doc.exp_approver;
 	return cur_frm.call({
@@ -75,7 +75,7 @@
 	}
 
 	doc.total_sanctioned_amount = '';
-	refresh_many(['sanctioned_amount', 'total_sanctioned_amount']);	
+	refresh_many(['sanctioned_amount', 'total_sanctioned_amount']);
 }
 
 cur_frm.cscript.refresh = function(doc,cdt,cdn){
@@ -84,15 +84,16 @@
 	if(!doc.__islocal) {
 		cur_frm.toggle_enable("exp_approver", (doc.owner==user && doc.approval_status=="Draft"));
 		cur_frm.toggle_enable("approval_status", (doc.exp_approver==user && doc.docstatus==0));
-	
-		if(!doc.__islocal && user!=doc.exp_approver) 
+
+		if(!doc.__islocal && user!=doc.exp_approver)
 			cur_frm.frm_head.appframe.set_title_right("");
-	
+
 		if(doc.docstatus==0 && doc.exp_approver==user && doc.approval_status=="Approved")
 			 cur_frm.savesubmit();
-		
+
 		if(doc.docstatus==1 && frappe.model.can_create("Journal Voucher"))
-			 cur_frm.add_custom_button(__("Make Bank Voucher"), cur_frm.cscript.make_bank_voucher);
+			 cur_frm.add_custom_button(__("Make Bank Voucher"),
+			 	cur_frm.cscript.make_bank_voucher, frappe.boot.doctype_icons["Journal Voucher"]);
 	}
 }
 
@@ -131,7 +132,7 @@
 		}
 		doc.total_sanctioned_amount += d.sanctioned_amount;
 	});
-	
+
 	refresh_field("total_claimed_amount");
 	refresh_field('total_sanctioned_amount');
 
@@ -142,7 +143,7 @@
 }
 cur_frm.cscript.claim_amount = function(doc,cdt,cdn){
 	cur_frm.cscript.calculate_total(doc,cdt,cdn);
-	
+
 	var child = locals[cdt][cdn];
 	refresh_field("sanctioned_amount", child.name, child.parentfield);
 }
@@ -154,4 +155,4 @@
 	if(cint(frappe.boot.notification_settings && frappe.boot.notification_settings.expense_claim)) {
 		cur_frm.email_doc(frappe.boot.notification_settings.expense_claim_message);
 	}
-}
\ No newline at end of file
+}
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim_list.html b/erpnext/hr/doctype/expense_claim/expense_claim_list.html
new file mode 100644
index 0000000..dd3c78f
--- /dev/null
+++ b/erpnext/hr/doctype/expense_claim/expense_claim_list.html
@@ -0,0 +1,23 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+
+			<span style="margin-right: 8px;" class="filterable"
+					data-filter="employee,=,{%= doc.employee %}">
+					{%= doc.employee_name %}</span>
+
+			<span class="label
+				label-{%= frappe.utils.guess_style(doc.approval_status) %} filterable"
+				title="{%= __("Status") %}"
+				data-filter="status,=,{%= doc.approval_status %}">
+				{%= doc.approval_status %}
+			</span>
+
+		</div>
+	</div>
+	<!-- sample graph -->
+	<div class="col-xs-2 text-right">
+		{%= doc.get_formatted("total_claimed_amount") %}
+	</div>
+</div>
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim_list.js b/erpnext/hr/doctype/expense_claim/expense_claim_list.js
new file mode 100644
index 0000000..34ee5c1
--- /dev/null
+++ b/erpnext/hr/doctype/expense_claim/expense_claim_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Expense Claim'] = {
+	add_fields: ["approval_status", "employee", "employee_name", "total_claimed_amount"],
+	filters:[["approval_status","!=", "Rejected"]]
+};
diff --git a/erpnext/hr/doctype/leave_application/leave_application_list.html b/erpnext/hr/doctype/leave_application/leave_application_list.html
new file mode 100644
index 0000000..dfae436
--- /dev/null
+++ b/erpnext/hr/doctype/leave_application/leave_application_list.html
@@ -0,0 +1,28 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+
+			<span style="margin-right: 8px;" class="filterable"
+					data-filter="employee,=,{%= doc.employee %}">
+					{%= doc.employee_name %}</span>
+
+			<span style="margin-right: 8px;" class="text-muted">
+					{%= __("{0} days from {1}",
+						[doc.total_leave_days, doc.get_formatted("from_date")]) %}</span>
+
+			<span class="label
+				label-{%= frappe.utils.guess_style(doc.status) %} filterable"
+				title="{%= __("Status") %}"
+				data-filter="status,=,{%= doc.status %}">
+				{%= doc.status %}
+			</span>
+
+			<span class="label label-default filterable"
+				title="{%= __("Leave Type") %}"
+				data-filter="leave_type,=,{%= doc.leave_type %}">
+				{%= doc.leave_type %}
+			</span>
+		</div>
+	</div>
+</div>
diff --git a/erpnext/hr/doctype/leave_application/leave_application_list.js b/erpnext/hr/doctype/leave_application/leave_application_list.js
new file mode 100644
index 0000000..e2a8901
--- /dev/null
+++ b/erpnext/hr/doctype/leave_application/leave_application_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Leave Application'] = {
+	add_fields: ["status", "leave_type", "employee", "employee_name", "total_leave_days", "from_date"],
+	filters:[["status","!=", "Rejected"], ["to_date", ">=", frappe.datetime.get_today()]]
+};
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip_list.html b/erpnext/hr/doctype/salary_slip/salary_slip_list.html
new file mode 100644
index 0000000..ef54450
--- /dev/null
+++ b/erpnext/hr/doctype/salary_slip/salary_slip_list.html
@@ -0,0 +1,26 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-9">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+
+			<!-- sample text -->
+			<span style="margin-right: 8px;" class="filterable"
+					data-filter="employee,=,{%= doc.employee %}">
+					{%= doc.employee_name %}</span>
+
+		</div>
+	</div>
+	<div class="col-xs-3 text-right">
+		<span class="label label-default filterable"
+			title="{%= __("Month") %}"
+			data-filter="month,=,{%= doc.month %}">
+			{%= doc.month %}
+		</span>
+
+		<span class="label label-default filterable"
+			title="{%= __("Fiscal Year") %}"
+			data-filter="fiscal_year,=,{%= doc.fiscal_year %}">
+			{%= doc.fiscal_year %}
+		</span>
+	</div>
+</div>
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip_list.js b/erpnext/hr/doctype/salary_slip/salary_slip_list.js
new file mode 100644
index 0000000..17f13d6
--- /dev/null
+++ b/erpnext/hr/doctype/salary_slip/salary_slip_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Salary Slip'] = {
+	add_fields: ["employee", "employee_name", "fiscal_year", "month"],
+};
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/erpnext/hr/doctype/salary_structure/salary_structure.js
index ddaf88c..a5a3ad3 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.js
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.js
@@ -12,7 +12,8 @@
 
 cur_frm.cscript.refresh = function(doc, dt, dn){
 	if((!doc.__islocal) && (doc.is_active == 'Yes')){
-		cur_frm.add_custom_button(__('Make Salary Slip'), cur_frm.cscript['Make Salary Slip']);
+		cur_frm.add_custom_button(__('Make Salary Slip'),
+			cur_frm.cscript['Make Salary Slip'], frappe.boot.doctype_icons["Salary Slip"]);
 	}
 }
 
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.json b/erpnext/hr/doctype/salary_structure/salary_structure.json
index c31696c..2ddd95b 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.json
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.json
@@ -227,7 +227,7 @@
  ], 
  "icon": "icon-file-text", 
  "idx": 1, 
- "modified": "2014-05-27 03:49:17.438605", 
+ "modified": "2014-08-05 06:56:27.038404", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Salary Structure", 
@@ -260,5 +260,6 @@
   }
  ], 
  "sort_field": "modified", 
- "sort_order": "DESC"
+ "sort_order": "DESC", 
+ "title_field": "employee_name"
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_structure/test_records.json b/erpnext/hr/doctype/salary_structure/test_records.json
new file mode 100644
index 0000000..f33b65e
--- /dev/null
+++ b/erpnext/hr/doctype/salary_structure/test_records.json
@@ -0,0 +1,8 @@
+[
+	{
+		"doctype": "Salary Structure",
+		"name": "_Test Salary Structure 1",
+		"employee": "_T-Employee-0001",
+		"from_date": "2014-02-01"
+	}
+]
diff --git a/erpnext/hr/doctype/salary_structure/test_salary_structure.py b/erpnext/hr/doctype/salary_structure/test_salary_structure.py
new file mode 100644
index 0000000..0a1db7e
--- /dev/null
+++ b/erpnext/hr/doctype/salary_structure/test_salary_structure.py
@@ -0,0 +1,10 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
+# See license.txt
+
+import frappe
+import unittest
+
+test_records = frappe.get_test_records('Salary Structure')
+
+class TestSalaryStructure(unittest.TestCase):
+	pass
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index d73ac9a..7787ea4 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -7,7 +7,8 @@
 	cur_frm.toggle_enable("item", doc.__islocal);
 
 	if (!doc.__islocal && doc.docstatus<2) {
-		cur_frm.add_custom_button(__("Update Cost"), cur_frm.cscript.update_cost);
+		cur_frm.add_custom_button(__("Update Cost"), cur_frm.cscript.update_cost,
+			"icon-money", "btn-default");
 	}
 
 	cur_frm.cscript.with_operations(doc);
diff --git a/erpnext/manufacturing/doctype/bom/bom_list.html b/erpnext/manufacturing/doctype/bom/bom_list.html
new file mode 100644
index 0000000..8303f4a
--- /dev/null
+++ b/erpnext/manufacturing/doctype/bom/bom_list.html
@@ -0,0 +1,20 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			{% if(cint(doc.is_active)) { %}
+				<span class="label label-success filterable"
+					data-filter="is_active,=,Yes">
+					<i class="icon-ok-sign"></i> {%= __("Active") %}</span>
+			{% } %}
+			{% if(cint(doc.is_default)) { %}
+				<span class="label label-primary filterable"
+					data-filter="is_default,=,Yes">
+					<i class="icon-ok-sign"></i> {%= __("Default") %}</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-2 text-right">
+		{%= doc.get_formatted("total_cost") %}
+	</div>
+</div>
diff --git a/erpnext/manufacturing/doctype/bom/bom_list.js b/erpnext/manufacturing/doctype/bom/bom_list.js
new file mode 100644
index 0000000..71d54a2
--- /dev/null
+++ b/erpnext/manufacturing/doctype/bom/bom_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['BOM'] = {
+	add_fields: ["is_active", "is_default", "total_cost"]
+};
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index d5fb1c9..a4bf14c 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -58,14 +58,20 @@
 
 var cfn_set_fields = function(doc, dt, dn) {
 	if (doc.docstatus == 1) {
-		if (doc.status != 'Stopped' && doc.status != 'Completed')
-		cur_frm.add_custom_button(__('Stop!'), cur_frm.cscript['Stop Production Order'], "icon-exclamation");
-		else if (doc.status == 'Stopped')
-			cur_frm.add_custom_button(__('Unstop'), cur_frm.cscript['Unstop Production Order'], "icon-check");
 
 		if (doc.status == 'Submitted' || doc.status == 'Material Transferred' || doc.status == 'In Process'){
-			cur_frm.add_custom_button(__('Transfer Raw Materials'), cur_frm.cscript['Transfer Raw Materials']);
-			cur_frm.add_custom_button(__('Update Finished Goods'), cur_frm.cscript['Update Finished Goods']);
+			cur_frm.add_custom_button(__('Transfer Raw Materials'),
+				cur_frm.cscript['Transfer Raw Materials'], frappe.boot.doctype_icons["Stock Entry"]);
+			cur_frm.add_custom_button(__('Update Finished Goods'),
+				cur_frm.cscript['Update Finished Goods'], frappe.boot.doctype_icons["Stock Entry"]);
+		}
+
+		if (doc.status != 'Stopped' && doc.status != 'Completed') {
+			cur_frm.add_custom_button(__('Stop'), cur_frm.cscript['Stop Production Order'],
+				"icon-exclamation", "btn-default");
+		} else if (doc.status == 'Stopped') {
+			cur_frm.add_custom_button(__('Unstop'), cur_frm.cscript['Unstop Production Order'],
+			"icon-check", "btn-default");
 		}
 	}
 }
diff --git a/erpnext/manufacturing/doctype/production_order/production_order_list.html b/erpnext/manufacturing/doctype/production_order/production_order_list.html
new file mode 100644
index 0000000..a856a0e
--- /dev/null
+++ b/erpnext/manufacturing/doctype/production_order/production_order_list.html
@@ -0,0 +1,47 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-11">
+		<div class="text-ellipsis">
+			{% var per = 100 - cint((doc.qty - doc.produced_qty) * 100 / doc.qty); %}
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="customer,=,{%= doc.customer %}">
+					{%= doc.customer_name %}</span></span>
+			{% if(per < 100 && doc.status!=="Stopped") { %}
+				{% if(frappe.datetime.get_diff(doc.expected_delivery_date) < 0) { %}
+				<span class="label label-danger filterable"
+					title="{%= doc.get_formatted("expected_delivery_date")%}"
+					data-filter="status,=,Submitted|expected_delivery_date,<,Today"
+					>
+						{%= __("Overdue") %}
+				</span>
+				{% } else { %}
+				<span class="label label-warning filterable"
+					data-filter="produced_qty,<,{%= doc.qty %}|status,!=,Stopped"
+					title="{%= __("Pending") %}">
+					{%= doc.get_formatted("expected_delivery_date")%}</span>
+				{% } %}
+			{% } %}
+			{% if(per == 100 && doc.status!=="Stopped") { %}
+				<span class="filterable text-muted"
+					data-filter="produced_qty,=,{%= doc.qty %}|status,!=,Stopped">
+					<i class="icon-ok-sign"></i></span>
+			{% } %}
+			{% if(doc.status==="Stopped") { %}
+				<span class="label label-danger filterable"
+					data-filter="status,=,Stopped">{%= __("Stopped") %}</span>
+			{% } %}
+			<span class="label label-default filterable"
+				data-filter="sales_order,=,{%= doc.sales_order %}"
+				 title="{%= __("Sales Order") %}">
+					<i class="icon-file-text"></i> {%= doc.sales_order %}</span>
+			<span class="label label-default filterable"
+				data-filter="bom_no,=,{%= doc.bom_no %}" title="{%= __("BOM") %}">
+					<i class="icon-sitemap"></i> {%= doc.bom_no %}</span>
+		</div>
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = per, title = __("Completed") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+</div>
diff --git a/erpnext/manufacturing/doctype/production_order/production_order_list.js b/erpnext/manufacturing/doctype/production_order/production_order_list.js
new file mode 100644
index 0000000..457e803
--- /dev/null
+++ b/erpnext/manufacturing/doctype/production_order/production_order_list.js
@@ -0,0 +1,5 @@
+frappe.listview_settings['Production Order'] = {
+	add_fields: ["bom_no", "status", "sales_order", "qty",
+		"produced_qty", "expected_delivery_date"],
+	filters: [["status", "!=", "Completed"], ["status", "!=", "Stopped"]]
+};
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 1ae0a95..03919bc 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -74,3 +74,4 @@
 erpnext.patches.v4_2.delete_old_print_formats #2014-07-29
 erpnext.patches.v4_2.toggle_rounded_total #2014-07-30
 erpnext.patches.v4_2.fix_account_master_type
+erpnext.patches.v4_2.update_project_milestones
diff --git a/erpnext/patches/v4_2/update_project_milestones.py b/erpnext/patches/v4_2/update_project_milestones.py
new file mode 100644
index 0000000..24a520e
--- /dev/null
+++ b/erpnext/patches/v4_2/update_project_milestones.py
@@ -0,0 +1,7 @@
+import frappe
+
+def execute():
+	for project in frappe.db.sql_list("select name from tabProject"):
+		p = frappe.get_doc("Project", project)
+		p.update_milestones_completed()
+		p.db_set("percent_milestones_completed", p.percent_milestones_completed)
diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js
index 5d89986..cdb494e 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/erpnext/projects/doctype/project/project.js
@@ -4,14 +4,14 @@
 // show tasks
 cur_frm.cscript.refresh = function(doc) {
 	if(!doc.__islocal) {
-		cur_frm.appframe.add_button(__("Gantt Chart"), function() {
+		cur_frm.add_custom_button(__("Gantt Chart"), function() {
 			frappe.route_options = {"project": doc.name}
 			frappe.set_route("Gantt", "Task");
-		}, "icon-tasks");
+		}, "icon-tasks", true);
 		cur_frm.add_custom_button(__("Tasks"), function() {
 			frappe.route_options = {"project": doc.name}
 			frappe.set_route("List", "Task");
-		}, "icon-list");
+		}, "icon-list", true);
 	}
 }
 
@@ -19,4 +19,4 @@
 	return{
 		query: "erpnext.controllers.queries.customer_query"
 	}
-}
\ No newline at end of file
+}
diff --git a/erpnext/projects/doctype/project/project.json b/erpnext/projects/doctype/project/project.json
index c894bb8..b20914c 100644
--- a/erpnext/projects/doctype/project/project.json
+++ b/erpnext/projects/doctype/project/project.json
@@ -137,6 +137,13 @@
    "search_index": 0
   }, 
   {
+   "fieldname": "percent_milestones_completed", 
+   "fieldtype": "Percent", 
+   "label": "% Milestones Completed", 
+   "permlevel": 0, 
+   "read_only": 1
+  }, 
+  {
    "fieldname": "section_break0", 
    "fieldtype": "Section Break", 
    "label": "Project Details", 
@@ -158,7 +165,7 @@
    "fieldname": "percent_complete", 
    "fieldtype": "Percent", 
    "in_list_view": 1, 
-   "label": "Percent Complete", 
+   "label": "% Tasks Completed", 
    "permlevel": 0, 
    "read_only": 1
   }, 
@@ -259,7 +266,7 @@
  "icon": "icon-puzzle-piece", 
  "idx": 1, 
  "max_attachments": 4, 
- "modified": "2014-06-24 12:44:19.530707", 
+ "modified": "2014-08-04 03:22:11.416219", 
  "modified_by": "Administrator", 
  "module": "Projects", 
  "name": "Project", 
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 4a14c55..547e12a 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -26,6 +26,13 @@
 			if getdate(self.completion_date) < getdate(self.project_start_date):
 				frappe.throw(_("Expected Completion Date can not be less than Project Start Date"))
 
+		self.update_milestones_completed()
+
+	def update_milestones_completed(self):
+		if self.project_milestones:
+			completed = filter(lambda x: x.status=="Completed", self.project_milestones)
+			self.percent_milestones_completed =  len(completed) * 100 / len(self.project_milestones)
+
 	def on_update(self):
 		self.add_calendar_event()
 
@@ -38,6 +45,7 @@
 			frappe.db.set_value("Project", self.name, "percent_complete",
 			 	int(float(completed) / total * 100))
 
+
 	def add_calendar_event(self):
 		# delete any earlier event for this project
 		delete_events(self.doctype, self.name)
diff --git a/erpnext/projects/doctype/project/project_list.html b/erpnext/projects/doctype/project/project_list.html
new file mode 100644
index 0000000..42af477
--- /dev/null
+++ b/erpnext/projects/doctype/project/project_list.html
@@ -0,0 +1,38 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span class="label label-{%= frappe.utils.guess_style(doc.status) %} filterable"
+				data-filter="status,=,{%= doc.status %}">
+				{%= doc.status %}
+			</span>
+			<span class="label label-{%= frappe.utils.guess_style(doc.priority) %} filterable"
+				data-filter="priority,=,{%= doc.priority %}">
+				{%= doc.priority %}
+			</span>
+			{% if(doc.status==="Open" && doc.completion_date
+				&& frappe.datetime.get_diff(doc.completion_date) <= 0) { %}
+				<span class="label label-danger filterable"
+					data-filter="completion_date,>=,Today"
+					title="{%= doc.get_formatted("completion_date") %}">
+					{%= __("Overdue") %}
+				</span>
+			{% } else if(doc.completion_date) { %}
+				<span class="label label-default filterable"
+					data-filter="completion_date,=,{%= doc.completion_date %}"
+					title="{%= __("Due Date") %}">
+					{%= doc.get_formatted("completion_date") %}
+				</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = doc.percent_complete, title = __("% Tasks Completed") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = doc.percent_milestones_completed,
+			title = __("% Milestones Achieved") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+</div>
diff --git a/erpnext/projects/doctype/project/project_list.js b/erpnext/projects/doctype/project/project_list.js
new file mode 100644
index 0000000..dd0ac60
--- /dev/null
+++ b/erpnext/projects/doctype/project/project_list.js
@@ -0,0 +1,5 @@
+frappe.listview_settings['Project'] = {
+	add_fields: ["status", "priority", "is_active", "percent_complete",
+		"percent_milestones_completed", "completion_date"],
+	filters:[["status","=", "Open"]]
+};
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 6b0b237..8d63f12 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -62,12 +62,13 @@
 
 	data = frappe.db.sql("""select name, exp_start_date, exp_end_date,
 		subject, status, project from `tabTask`
-		where ((exp_start_date between '%(start)s' and '%(end)s') \
-			or (exp_end_date between '%(start)s' and '%(end)s'))
-		%(conditions)s""" % {
+		where ((ifnull(exp_start_date, '0000-00-00')!= '0000-00-00') \
+				and (exp_start_date between %(start)s and %(end)s) \
+			or ((ifnull(exp_start_date, '0000-00-00')!= '0000-00-00') \
+				and exp_end_date between %(start)s and %(end)s))
+		{conditions}""".format(conditions=conditions), {
 			"start": start,
-			"end": end,
-			"conditions": conditions
+			"end": end
 		}, as_dict=True, update={"allDay": 0})
 
 	return data
diff --git a/erpnext/projects/doctype/task/task_list.html b/erpnext/projects/doctype/task/task_list.html
new file mode 100644
index 0000000..0d95055
--- /dev/null
+++ b/erpnext/projects/doctype/task/task_list.html
@@ -0,0 +1,34 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			{% if(doc.project) { %}
+			<span class="filterable" style="margin-right: 8px;"
+				data-filter="project,=,{%= doc.project %}">
+				{%= doc.project %}</span>
+			{% } %}
+			<span class="label label-{%= frappe.utils.guess_style(doc.status) %} filterable"
+				data-filter="status,=,{%= doc.status %}">
+				{%= doc.status %}
+			</span>
+			<span class="label label-{%= frappe.utils.guess_style(doc.priority) %} filterable"
+				data-filter="priority,=,{%= doc.priority %}">
+				{%= doc.priority %}
+			</span>
+			{% if(doc.status==="Open" && doc.exp_end_date
+				&& frappe.datetime.get_diff(doc.exp_end_date) <= 0) { %}
+				<span class="label label-danger filterable"
+					data-filter="exp_end_date,>=,Today"
+					title="{%= doc.get_formatted("exp_end_date") %}">
+					{%= __("Overdue") %}
+				</span>
+			{% } else if(doc.exp_end_date) { %}
+				<span class="label label-default filterable"
+					data-filter="exp_end_date,=,{%= doc.exp_end_date %}"
+					title="{%= __("Due Date") %}">
+					{%= doc.get_formatted("exp_end_date") %}
+				</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/projects/doctype/task/task_list.js b/erpnext/projects/doctype/task/task_list.js
new file mode 100644
index 0000000..4406085
--- /dev/null
+++ b/erpnext/projects/doctype/task/task_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Task'] = {
+	add_fields: ["project", "status", "priority", "exp_end_date"],
+	filters:[["status","=", "Open"]]
+};
diff --git a/erpnext/projects/doctype/time_log/time_log.js b/erpnext/projects/doctype/time_log/time_log.js
index eb5fc09..d4d109d 100644
--- a/erpnext/projects/doctype/time_log/time_log.js
+++ b/erpnext/projects/doctype/time_log/time_log.js
@@ -3,12 +3,27 @@
 
 frappe.provide("erpnext.projects");
 
-erpnext.projects.TimeLog = frappe.ui.form.Controller.extend({
-	onload: function() {
-		this.frm.set_query("task", erpnext.queries.task);
-	}
+frappe.ui.form.on("Time Log", "onload", function(frm) {
+	frm.set_query("task", erpnext.queries.task);
 });
 
-cur_frm.cscript = new erpnext.projects.TimeLog({frm: cur_frm});
+// set to time if hours is updated
+frappe.ui.form.on("Time Log", "hours", function(frm) {
+	if(!frm.doc.from_time) {
+		frm.set_value("from_time", frappe.datetime.now_datetime());
+	}
+	var d = moment(frm.doc.from_time);
+	d.add(frm.doc.hours, "hours");
+	frm._setting_hours = true;
+	frm.set_value("to_time", d.format(moment.defaultDatetimeFormat));
+	frm._setting_hours = false;
+});
 
-cur_frm.add_fetch('task','project','project');
\ No newline at end of file
+// set hours if to_time is updated
+frappe.ui.form.on("Time Log", "to_time", function(frm) {
+	if(frm._setting_hours) return;
+	frm.set_value("hours", moment(cur_frm.doc.to_time).diff(moment(cur_frm.doc.from_time),
+		"hours"));
+});
+
+cur_frm.add_fetch('task','project','project');
diff --git a/erpnext/projects/doctype/time_log/time_log.json b/erpnext/projects/doctype/time_log/time_log.json
index daeddba..157be0c 100644
--- a/erpnext/projects/doctype/time_log/time_log.json
+++ b/erpnext/projects/doctype/time_log/time_log.json
@@ -27,6 +27,14 @@
    "reqd": 1
   }, 
   {
+   "fieldname": "hours", 
+   "fieldtype": "Float", 
+   "in_list_view": 1, 
+   "label": "Hours", 
+   "permlevel": 0, 
+   "read_only": 0
+  }, 
+  {
    "fieldname": "to_time", 
    "fieldtype": "Datetime", 
    "in_list_view": 1, 
@@ -36,14 +44,6 @@
    "reqd": 1
   }, 
   {
-   "fieldname": "hours", 
-   "fieldtype": "Float", 
-   "in_list_view": 1, 
-   "label": "Hours", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
    "fieldname": "column_break_3", 
    "fieldtype": "Column Break", 
    "permlevel": 0, 
@@ -152,7 +152,7 @@
  "icon": "icon-time", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2014-05-27 03:49:21.143356", 
+ "modified": "2014-08-04 05:23:15.740050", 
  "modified_by": "Administrator", 
  "module": "Projects", 
  "name": "Time Log", 
diff --git a/erpnext/projects/doctype/time_log/time_log_list.html b/erpnext/projects/doctype/time_log/time_log_list.html
new file mode 100644
index 0000000..ee0b96f2
--- /dev/null
+++ b/erpnext/projects/doctype/time_log/time_log_list.html
@@ -0,0 +1,25 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			{% if(doc.billable) { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Billable") %}" class="filterable"
+				data-filter="billable,=,Yes">
+				<i class="icon-money text-muted"></i>
+			</span>
+			{% } %}
+			<span class="label label-info filterable" style="margin-right: 8px;"
+				data-filter="activity_type,=,{%= doc.activity_type %}">
+				{%= doc.activity_type %}</span>
+			<span style="margin-right: 8px;" class="text-muted">
+				({%= doc.hours + " " + __("hours") %})
+			</span>
+			{% if(doc.project) { %}
+			<span class="filterable" style="margin-right: 8px;"
+				data-filter="project,=,{%= doc.project %}">
+				{%= doc.project %}</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/projects/doctype/time_log/time_log_list.js b/erpnext/projects/doctype/time_log/time_log_list.js
index a40297f..6641174 100644
--- a/erpnext/projects/doctype/time_log/time_log_list.js
+++ b/erpnext/projects/doctype/time_log/time_log_list.js
@@ -3,10 +3,10 @@
 
 // render
 frappe.listview_settings['Time Log'] = {
-	add_fields: ["`tabTime Log`.`status`", "`tabTime Log`.`billable`", "`tabTime Log`.`activity_type`"],
+	add_fields: ["status", "billable", "activity_type", "task", "project", "hours"],
 	selectable: true,
 	onload: function(me) {
-		me.appframe.add_button(__("Make Time Log Batch"), function() {
+		me.appframe.add_primary_action(__("Make Time Log Batch"), function() {
 			var selected = me.get_checked_items() || [];
 
 			if(!selected.length) {
diff --git a/erpnext/projects/doctype/time_log_batch/time_log_batch_list.html b/erpnext/projects/doctype/time_log_batch/time_log_batch_list.html
new file mode 100644
index 0000000..4a34f1c
--- /dev/null
+++ b/erpnext/projects/doctype/time_log_batch/time_log_batch_list.html
@@ -0,0 +1,15 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span class="label label-{%= doc.status=="Billed" ? "success" :
+				frappe.utils.guess_style(doc.status) %} filterable"
+				style="margin-right: 8px;"
+				data-filter="status,=,{%= doc.status %}">
+				{%= doc.status %}</span>
+			<span style="margin-right: 8px;" class="text-muted">
+				({%= doc.total_hours + " " + __("hours") %})
+			</span>
+		</div>
+	</div>
+</div>
diff --git a/erpnext/projects/doctype/time_log_batch/time_log_batch_list.js b/erpnext/projects/doctype/time_log_batch/time_log_batch_list.js
new file mode 100644
index 0000000..cc6746e
--- /dev/null
+++ b/erpnext/projects/doctype/time_log_batch/time_log_batch_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Time Log Batch'] = {
+	add_fields: ["status", "total_hours", "rate"]
+};
diff --git a/erpnext/public/js/transaction.js b/erpnext/public/js/transaction.js
index 95c7963..8a9be1d 100644
--- a/erpnext/public/js/transaction.js
+++ b/erpnext/public/js/transaction.js
@@ -57,23 +57,23 @@
 		this.set_dynamic_labels();
 
 		// Show POS button only if it is enabled from features setup
-		if(cint(sys_defaults.fs_pos_view)===1 && this.frm.doctype!="Material Request")
+		if(cint(sys_defaults.fs_pos_view)===1 && this.frm.doctype!="Material Request" && this.frm.doc.docstatus===0)
 			this.make_pos_btn();
 	},
 
 	make_pos_btn: function() {
 		if(!this.pos_active) {
 			var btn_label = __("POS View"),
-				icon = "icon-desktop";
+				icon = "icon-th";
 		} else {
-			var btn_label = __(this.frm.doctype) + __(" View"),
+			var btn_label = __("Form View"),
 				icon = "icon-file-text";
 		}
 		var me = this;
 
-		this.$pos_btn = this.frm.appframe.add_button(btn_label, function() {
+		this.$pos_btn = this.frm.appframe.add_primary_action(btn_label, function() {
 			me.toggle_pos();
-		}, icon);
+		}, icon, "btn-default");
 	},
 
 	toggle_pos: function(show) {
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index 794b763..ef71d56 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -282,7 +282,7 @@
  ], 
  "icon": "icon-user", 
  "idx": 1, 
- "modified": "2014-05-27 03:49:09.208254", 
+ "modified": "2014-08-07 06:57:25.248707", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Customer", 
@@ -332,5 +332,6 @@
    "write": 1
   }
  ], 
- "search_fields": "customer_name,customer_group,territory"
+ "search_fields": "customer_name,customer_group,territory", 
+ "title_field": "customer_name"
 }
\ No newline at end of file
diff --git a/erpnext/selling/doctype/customer/customer_list.html b/erpnext/selling/doctype/customer/customer_list.html
new file mode 100644
index 0000000..3656d10
--- /dev/null
+++ b/erpnext/selling/doctype/customer/customer_list.html
@@ -0,0 +1,29 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			{% if(doc.customer_name != doc.name) { %}
+			<span style="margin-right: 8px; display: inline-block">
+				{%= doc.customer_name %}</span>
+			{% } %}
+			<span style="margin-right: 8px; display: inline-block"
+				title="{%= doc.customer_type %}" class="filterable"
+				data-filter="customer_type,=,{%= doc.customer_type %}">
+			{% if(doc.customer_type==="Company") { %}
+				<i class="icon-building"></i>
+			{% } else { %}
+				<i class="icon-user"></i>
+			{% } %}
+			</span>
+			<span class="label label-info filterable"
+				data-filter="customer_group,=,{%= doc.customer_group %}">
+					{%= doc.customer_group %}</span>
+			{% if(doc.territory) { %}
+			<span class="label label-default filterable"
+				data-filter="territory,=,{%= doc.territory %}">
+					<i class="icon-map-marker"></i>
+					{%= doc.territory %}</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/selling/doctype/customer/customer_list.js b/erpnext/selling/doctype/customer/customer_list.js
new file mode 100644
index 0000000..012d3f8
--- /dev/null
+++ b/erpnext/selling/doctype/customer/customer_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Customer'] = {
+	add_fields: ["customer_name", "territory", "customer_group", "customer_type"]
+};
diff --git a/erpnext/selling/doctype/installation_note/installation_note.js b/erpnext/selling/doctype/installation_note/installation_note.js
index 34d915c..e8dee46 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.js
+++ b/erpnext/selling/doctype/installation_note/installation_note.js
@@ -5,13 +5,13 @@
 cur_frm.cscript.fname = "installed_item_details";
 
 
-frappe.ui.form.on_change("Installation Note", "customer", 
+frappe.ui.form.on_change("Installation Note", "customer",
 	function(frm) { erpnext.utils.get_party_details(frm); });
 
-frappe.ui.form.on_change("Installation Note", "customer_address", 
+frappe.ui.form.on_change("Installation Note", "customer_address",
 	function(frm) { erpnext.utils.get_address_display(frm); });
 
-frappe.ui.form.on_change("Installation Note", "contact_person", 
+frappe.ui.form.on_change("Installation Note", "contact_person",
 	function(frm) { erpnext.utils.get_contact_details(frm); });
 
 frappe.provide("erpnext.selling");
@@ -19,37 +19,37 @@
 erpnext.selling.InstallationNote = frappe.ui.form.Controller.extend({
 	onload: function() {
 		if(!this.frm.doc.status) set_multiple(dt,dn,{ status:'Draft'});
-		if(this.frm.doc.__islocal) set_multiple(this.frm.doc.doctype, this.frm.doc.name, 
+		if(this.frm.doc.__islocal) set_multiple(this.frm.doc.doctype, this.frm.doc.name,
 				{inst_date: get_today()});
-		
+
 		this.setup_queries();
 	},
-	
+
 	setup_queries: function() {
 		var me = this;
-		
+
 		this.frm.set_query("customer_address", function() {
 			return {
 				filters: {'customer': me.frm.doc.customer }
 			}
 		});
-		
+
 		this.frm.set_query("contact_person", function() {
 			return {
 				filters: {'customer': me.frm.doc.customer }
 			}
 		});
-		
+
 		this.frm.set_query("customer", function() {
 			return {
 				query: "erpnext.controllers.queries.customer_query"
 			}
 		});
 	},
-	
+
 	refresh: function() {
 		if (this.frm.doc.docstatus===0) {
-			cur_frm.add_custom_button(__('From Delivery Note'), 
+			cur_frm.add_custom_button(__('From Delivery Note'),
 				function() {
 					frappe.model.map_current_doc({
 						method: "erpnext.stock.doctype.delivery_note.delivery_note.make_installation_note",
@@ -62,10 +62,10 @@
 							company: cur_frm.doc.company
 						}
 					})
-				}
+				}, "icon-download", "btn-default"
 			);
 		}
-	},	
+	},
 });
 
-$.extend(cur_frm.cscript, new erpnext.selling.InstallationNote({frm: cur_frm}));
\ No newline at end of file
+$.extend(cur_frm.cscript, new erpnext.selling.InstallationNote({frm: cur_frm}));
diff --git a/erpnext/selling/doctype/lead/lead.js b/erpnext/selling/doctype/lead/lead.js
index ba9741b..24fbbf0 100644
--- a/erpnext/selling/doctype/lead/lead.js
+++ b/erpnext/selling/doctype/lead/lead.js
@@ -32,8 +32,10 @@
 		erpnext.toggle_naming_series();
 
 		if(!this.frm.doc.__islocal && this.frm.doc.__onload && !this.frm.doc.__onload.is_customer) {
-			this.frm.add_custom_button(__("Create Customer"), this.create_customer);
-			this.frm.add_custom_button(__("Create Opportunity"), this.create_opportunity);
+			this.frm.add_custom_button(__("Create Customer"), this.create_customer,
+				frappe.boot.doctype_icons["Customer"], "btn-default");
+			this.frm.add_custom_button(__("Create Opportunity"), this.create_opportunity,
+				frappe.boot.doctype_icons["Opportunity"], "btn-default");
 			this.frm.appframe.add_button(__("Send SMS"), this.frm.cscript.send_sms, "icon-mobile-phone");
 		}
 
diff --git a/erpnext/selling/doctype/lead/lead_list.html b/erpnext/selling/doctype/lead/lead_list.html
new file mode 100644
index 0000000..d5799b9
--- /dev/null
+++ b/erpnext/selling/doctype/lead/lead_list.html
@@ -0,0 +1,18 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				{%= doc.company_name %}</span>
+			<span class="label
+				{%= doc.status=="Open" ? "label-danger" : "label-info" %} filterable"
+				data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
+			{% if(doc.territory) { %}
+			<span class="label label-default filterable"
+				data-filter="territory,=,{%= doc.territory %}">
+					<i class="icon-map-marker"></i>
+					{%= doc.territory %}</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/selling/doctype/lead/lead_list.js b/erpnext/selling/doctype/lead/lead_list.js
new file mode 100644
index 0000000..b173371
--- /dev/null
+++ b/erpnext/selling/doctype/lead/lead_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Lead'] = {
+	add_fields: ["territory", "company_name", "status", "source"]
+};
diff --git a/erpnext/selling/doctype/opportunity/opportunity.js b/erpnext/selling/doctype/opportunity/opportunity.js
index ce7c6ea..6ff1abb 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.js
+++ b/erpnext/selling/doctype/opportunity/opportunity.js
@@ -82,11 +82,15 @@
 	erpnext.toggle_naming_series();
 
 	if(doc.docstatus === 1 && doc.status!=="Lost") {
-		cur_frm.add_custom_button(__('Create Quotation'), cur_frm.cscript.create_quotation);
+		cur_frm.add_custom_button(__('Create Quotation'),
+			cur_frm.cscript.create_quotation, frappe.boot.doctype_icons["Quotation"],
+			"btn-default");
 		if(doc.status!=="Quotation")
-			cur_frm.add_custom_button(__('Opportunity Lost'), cur_frm.cscript['Declare Opportunity Lost']);
+			cur_frm.add_custom_button(__('Opportunity Lost'),
+				cur_frm.cscript['Declare Opportunity Lost'], "icon-remove", "btn-default");
 
-		cur_frm.add_custom_button(__('Send SMS'), cur_frm.cscript.send_sms, "icon-mobile-phone");
+		cur_frm.add_custom_button(__('Send SMS'), cur_frm.cscript.send_sms,
+			"icon-mobile-phone", true);
 	}
 }
 
diff --git a/erpnext/selling/doctype/opportunity/opportunity_list.html b/erpnext/selling/doctype/opportunity/opportunity_list.html
new file mode 100644
index 0000000..c0a9483
--- /dev/null
+++ b/erpnext/selling/doctype/opportunity/opportunity_list.html
@@ -0,0 +1,23 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="{%= doc.enquiry_from.toLowerCase() %},=,{%= doc[doc.enquiry_from.toLowerCase()] %}">
+					{%= doc.customer_name %}</span> ({%= doc.enquiry_from %})</span>
+			<span style="margin-right: 8px; display: inline-block"
+				title="{%= doc.enquiry_type %}" class="filterable"
+				data-filter="enquiry_type,=,{%= doc.enquiry_type %}">
+			{% if(doc.enquiry_type==="Sales") { %}
+				<i class="icon-tag"></i>
+			{% } else { %}
+				<i class="icon-wrench"></i>
+			{% } %}
+			</span>
+			<span class="label
+				{%= doc.status=="Draft" ? "label-danger" : "label-info" %} filterable"
+				data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
+		</div>
+	</div>
+</div>
diff --git a/erpnext/selling/doctype/opportunity/opportunity_list.js b/erpnext/selling/doctype/opportunity/opportunity_list.js
new file mode 100644
index 0000000..06fbe34
--- /dev/null
+++ b/erpnext/selling/doctype/opportunity/opportunity_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Opportunity'] = {
+	add_fields: ["customer_name", "enquiry_type", "enquiry_from", "status"]
+};
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index e65fcbe..8cff8d8 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -27,10 +27,10 @@
 
 		if(doc.docstatus == 1 && doc.status!=='Lost') {
 			cur_frm.add_custom_button(__('Make Sales Order'),
-				cur_frm.cscript['Make Sales Order']);
+				cur_frm.cscript['Make Sales Order'], frappe.boot.doctype_icons["Sales Order"]);
 			if(doc.status!=="Ordered") {
 				cur_frm.add_custom_button(__('Set as Lost'),
-					cur_frm.cscript['Declare Order Lost'], "icon-exclamation");
+					cur_frm.cscript['Declare Order Lost'], "icon-exclamation", "btn-default");
 			}
 			cur_frm.appframe.add_button(__('Send SMS'), cur_frm.cscript.send_sms, "icon-mobile-phone");
 		}
@@ -50,7 +50,7 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 		}
 
 		if (!doc.__islocal) {
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index f396191..ab6e4ba 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -9,6 +9,10 @@
 
 from erpnext.controllers.selling_controller import SellingController
 
+form_grid_templates = {
+	"quotation_details": "templates/form_grid/item_grid.html"
+}
+
 class Quotation(SellingController):
 	tname = 'Quotation Item'
 	fname = 'quotation_details'
diff --git a/erpnext/selling/doctype/quotation/quotation_list.html b/erpnext/selling/doctype/quotation/quotation_list.html
new file mode 100644
index 0000000..2126b52
--- /dev/null
+++ b/erpnext/selling/doctype/quotation/quotation_list.html
@@ -0,0 +1,31 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="{%= doc.quotation_to.toLowerCase() %},=,{%= doc[doc.quotation_to.toLowerCase()] %}">
+					{%= doc.customer_name %}</span> ({%= doc.quotation_to %})
+				</span>
+			</span>
+			<span style="margin-right: 8px; display: inline-block"
+				title="{%= doc.order_type %}" class="filterable"
+				data-filter="order_type,=,{%= doc.order_type %}">
+			{% if(doc.order_type==="Service") { %}
+				<i class="icon-wrench"></i>
+			{% } else { %}
+				<i class="icon-tag"></i>
+			{% } %}
+			</span>
+			<span class="label {%= doc.status=="Draft" ? "label-danger" :
+				(doc.status=="Ordered" ? "label-success": "label-info") %}
+				filterable"
+				data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
+		</div>
+	</div>
+	<div class="col-xs-2 text-right">
+		<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_export') %}">
+			{%= doc.get_formatted("grand_total_export") %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/selling/doctype/quotation/quotation_list.js b/erpnext/selling/doctype/quotation/quotation_list.js
new file mode 100644
index 0000000..91b65ee
--- /dev/null
+++ b/erpnext/selling/doctype/quotation/quotation_list.js
@@ -0,0 +1,5 @@
+frappe.listview_settings['Quotation'] = {
+	add_fields: ["customer_name", "quotation_to", "grand_total", "status",
+		"company", "currency", "order_type", "lead", "customer"],
+	filters: [["status", "=", "Submitted"]]
+};
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index c8ddcf5..628e43e 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -25,30 +25,36 @@
 				cur_frm.dashboard.add_progress(cint(doc.per_billed) + __("% Billed"),
 					doc.per_billed);
 
-				cur_frm.add_custom_button(__('Send SMS'), cur_frm.cscript.send_sms, "icon-mobile-phone");
 				// delivery note
 				if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1)
-					cur_frm.add_custom_button(__('Make Delivery'), this.make_delivery_note);
-
-				// maintenance
-				if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)===-1) {
-					cur_frm.add_custom_button(__('Make Maint. Visit'), this.make_maintenance_visit);
-					cur_frm.add_custom_button(__('Make Maint. Schedule'),
-						this.make_maintenance_schedule);
-				}
+					cur_frm.add_custom_button(__('Make Delivery'), this.make_delivery_note, "icon-truck");
 
 				// indent
 				if(!doc.order_type || ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1)
 					cur_frm.add_custom_button(__('Make ') + __('Material Request'),
-						this.make_material_request);
+						this.make_material_request, "icon-ticket");
 
 				// sales invoice
-				if(flt(doc.per_billed, 2) < 100)
-					cur_frm.add_custom_button(__('Make Invoice'), this.make_sales_invoice);
+				if(flt(doc.per_billed, 2) < 100) {
+					cur_frm.add_custom_button(__('Make Invoice'), this.make_sales_invoice,
+						frappe.boot.doctype_icons["Sales Invoice"]);
+				}
 
 				// stop
 				if(flt(doc.per_delivered, 2) < 100 || doc.per_billed < 100)
-					cur_frm.add_custom_button(__('Stop!'), cur_frm.cscript['Stop Sales Order'],"icon-exclamation");
+					cur_frm.add_custom_button(__('Stop'), cur_frm.cscript['Stop Sales Order'],
+						"icon-exclamation", "btn-default")
+
+						// maintenance
+						if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)===-1) {
+							cur_frm.add_custom_button(__('Make Maint. Visit'),
+								this.make_maintenance_visit, null, "btn-default");
+							cur_frm.add_custom_button(__('Make Maint. Schedule'),
+								this.make_maintenance_schedule, null, "btn-default");
+						}
+
+				cur_frm.add_custom_button(__('Send SMS'), cur_frm.cscript.send_sms, "icon-mobile-phone", true);
+
 			} else {
 				// un-stop
 				cur_frm.dashboard.set_headline_alert(__("Stopped"), "alert-danger", "icon-stop");
@@ -70,7 +76,7 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 		}
 
 		this.order_type(doc);
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index e0a7a1d..37b26fd 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -12,6 +12,10 @@
 
 from erpnext.controllers.selling_controller import SellingController
 
+form_grid_templates = {
+	"sales_order_details": "templates/form_grid/item_grid.html"
+}
+
 class SalesOrder(SellingController):
 	tname = 'Sales Order Item'
 	fname = 'sales_order_details'
diff --git a/erpnext/selling/doctype/sales_order/sales_order_list.html b/erpnext/selling/doctype/sales_order/sales_order_list.html
new file mode 100644
index 0000000..4079b2a
--- /dev/null
+++ b/erpnext/selling/doctype/sales_order/sales_order_list.html
@@ -0,0 +1,48 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-8">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="customer,=,{%= doc.customer %}">
+					{%= doc.customer_name %}</span></span>
+			{% if(doc.per_delivered < 100 && doc.status!=="Stopped") { %}
+				{% if(frappe.datetime.get_diff(doc.delivery_date) < 0) { %}
+				<span class="label label-danger filterable"
+					title="{%= doc.get_formatted("delivery_date")%}"
+					data-filter="per_delivered,<,100|delivery_date,<,Today|status,!=,Stopped"
+					>
+						{%= __("Overdue") %}
+				</span>
+				{% } else { %}
+				<span class="label label-warning filterable"
+					data-filter="per_delivered,<,100|status,!=,Stopped"
+					title="{%= __("Pending") %}">
+					{%= doc.get_formatted("delivery_date")%}</span>
+				{% } %}
+			{% } %}
+			{% if(doc.per_delivered == 100 && doc.status!=="Stopped") { %}
+				<span class="filterable text-muted"
+					data-filter="per_delivered,=,100|status,!=,Stopped">
+					<i class="icon-ok-sign"></i></span>
+			{% } %}
+			{% if(doc.status==="Stopped") { %}
+				<span class="label label-danger filterable"
+					data-filter="status,=,Stopped">{%= __("Stopped") %}</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = doc.per_delivered, title = __("Delivered") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = doc.per_billed, title = __("Billed") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+	<div class="col-xs-2 text-right">
+		<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_export') %}">
+			{%= doc.get_formatted("grand_total_export") %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/selling/doctype/sales_order/sales_order_list.js b/erpnext/selling/doctype/sales_order/sales_order_list.js
new file mode 100644
index 0000000..3884526
--- /dev/null
+++ b/erpnext/selling/doctype/sales_order/sales_order_list.js
@@ -0,0 +1,5 @@
+frappe.listview_settings['Sales Order'] = {
+	add_fields: ["grand_total", "company", "currency", "customer",
+		"customer_name", "per_delivered", "per_billed", "delivery_date"],
+	filters: [["per_delivered", "<", 100]]
+};
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
index eb0c024..4ea3fec 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -1,443 +1,443 @@
 {
- "autoname": "SOD/.#####", 
- "creation": "2013-03-07 11:42:58", 
- "docstatus": 0, 
- "doctype": "DocType", 
+ "autoname": "SOD/.#####",
+ "creation": "2013-03-07 11:42:58",
+ "docstatus": 0,
+ "doctype": "DocType",
  "fields": [
   {
-   "fieldname": "item_code", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "label": "Item Code", 
-   "oldfieldname": "item_code", 
-   "oldfieldtype": "Link", 
-   "options": "Item", 
-   "permlevel": 0, 
-   "print_width": "150px", 
-   "read_only": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
+   "fieldname": "item_code",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "in_list_view": 1,
+   "label": "Item Code",
+   "oldfieldname": "item_code",
+   "oldfieldtype": "Link",
+   "options": "Item",
+   "permlevel": 0,
+   "print_width": "150px",
+   "read_only": 0,
+   "reqd": 1,
+   "search_index": 1,
    "width": "150px"
-  }, 
+  },
   {
-   "fieldname": "customer_item_code", 
-   "fieldtype": "Data", 
-   "hidden": 1, 
-   "in_list_view": 0, 
-   "label": "Customer's Item Code", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "customer_item_code",
+   "fieldtype": "Data",
+   "hidden": 1,
+   "in_list_view": 0,
+   "label": "Customer's Item Code",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "item_name", 
-   "fieldtype": "Data", 
-   "in_list_view": 0, 
-   "label": "Item Name", 
-   "oldfieldname": "item_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "150", 
-   "read_only": 0, 
-   "reqd": 1, 
+   "fieldname": "item_name",
+   "fieldtype": "Data",
+   "in_list_view": 0,
+   "label": "Item Name",
+   "oldfieldname": "item_name",
+   "oldfieldtype": "Data",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "150",
+   "read_only": 0,
+   "reqd": 1,
    "width": "150"
-  }, 
+  },
   {
-   "fieldname": "col_break1", 
-   "fieldtype": "Column Break", 
+   "fieldname": "col_break1",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "description", 
-   "fieldtype": "Small Text", 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "label": "Description", 
-   "oldfieldname": "description", 
-   "oldfieldtype": "Small Text", 
-   "permlevel": 0, 
-   "print_width": "300px", 
-   "read_only": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
+   "fieldname": "description",
+   "fieldtype": "Small Text",
+   "in_filter": 1,
+   "in_list_view": 1,
+   "label": "Description",
+   "oldfieldname": "description",
+   "oldfieldtype": "Small Text",
+   "permlevel": 0,
+   "print_width": "300px",
+   "read_only": 0,
+   "reqd": 1,
+   "search_index": 1,
    "width": "300px"
-  }, 
+  },
   {
-   "fieldname": "quantity_and_rate", 
-   "fieldtype": "Section Break", 
-   "in_list_view": 0, 
-   "label": "Quantity and Rate", 
+   "fieldname": "quantity_and_rate",
+   "fieldtype": "Section Break",
+   "in_list_view": 0,
+   "label": "Quantity and Rate",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "qty", 
-   "fieldtype": "Float", 
-   "in_list_view": 1, 
-   "label": "Quantity", 
-   "oldfieldname": "qty", 
-   "oldfieldtype": "Currency", 
-   "permlevel": 0, 
-   "print_width": "100px", 
-   "read_only": 0, 
-   "reqd": 1, 
+   "fieldname": "qty",
+   "fieldtype": "Float",
+   "in_list_view": 1,
+   "label": "Quantity",
+   "oldfieldname": "qty",
+   "oldfieldtype": "Currency",
+   "permlevel": 0,
+   "print_width": "100px",
+   "read_only": 0,
+   "reqd": 1,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "price_list_rate", 
-   "fieldtype": "Currency", 
-   "in_list_view": 0, 
-   "label": "Price List Rate", 
-   "oldfieldname": "ref_rate", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "70px", 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "price_list_rate",
+   "fieldtype": "Currency",
+   "in_list_view": 0,
+   "label": "Price List Rate",
+   "oldfieldname": "ref_rate",
+   "oldfieldtype": "Currency",
+   "options": "currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "70px",
+   "read_only": 1,
+   "reqd": 0,
    "width": "70px"
-  }, 
+  },
   {
-   "fieldname": "discount_percentage", 
-   "fieldtype": "Percent", 
-   "in_list_view": 0, 
-   "label": "Discount(%)", 
-   "oldfieldname": "adj_rate", 
-   "oldfieldtype": "Float", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "70px", 
-   "read_only": 0, 
+   "fieldname": "discount_percentage",
+   "fieldtype": "Float",
+   "in_list_view": 0,
+   "label": "Discount(%)",
+   "oldfieldname": "adj_rate",
+   "oldfieldtype": "Float",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "70px",
+   "read_only": 0,
    "width": "70px"
-  }, 
+  },
   {
-   "fieldname": "col_break2", 
-   "fieldtype": "Column Break", 
+   "fieldname": "col_break2",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "stock_uom", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_list_view": 0, 
-   "label": "UOM", 
-   "oldfieldname": "stock_uom", 
-   "oldfieldtype": "Data", 
-   "options": "UOM", 
-   "permlevel": 0, 
-   "print_width": "70px", 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "stock_uom",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_list_view": 0,
+   "label": "UOM",
+   "oldfieldname": "stock_uom",
+   "oldfieldtype": "Data",
+   "options": "UOM",
+   "permlevel": 0,
+   "print_width": "70px",
+   "read_only": 1,
+   "reqd": 0,
    "width": "70px"
-  }, 
+  },
   {
-   "fieldname": "base_price_list_rate", 
-   "fieldtype": "Currency", 
-   "in_list_view": 0, 
-   "label": "Price List Rate (Company Currency)", 
-   "oldfieldname": "base_ref_rate", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "100px", 
-   "read_only": 1, 
+   "fieldname": "base_price_list_rate",
+   "fieldtype": "Currency",
+   "in_list_view": 0,
+   "label": "Price List Rate (Company Currency)",
+   "oldfieldname": "base_ref_rate",
+   "oldfieldtype": "Currency",
+   "options": "Company:company:default_currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "100px",
+   "read_only": 1,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "section_break_simple1", 
-   "fieldtype": "Section Break", 
+   "fieldname": "section_break_simple1",
+   "fieldtype": "Section Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "rate", 
-   "fieldtype": "Currency", 
-   "in_list_view": 1, 
-   "label": "Rate", 
-   "oldfieldname": "export_rate", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_width": "100px", 
-   "read_only": 0, 
-   "reqd": 0, 
+   "fieldname": "rate",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Rate",
+   "oldfieldname": "export_rate",
+   "oldfieldtype": "Currency",
+   "options": "currency",
+   "permlevel": 0,
+   "print_width": "100px",
+   "read_only": 0,
+   "reqd": 0,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "amount", 
-   "fieldtype": "Currency", 
-   "in_list_view": 1, 
-   "label": "Amount", 
-   "no_copy": 0, 
-   "oldfieldname": "export_amount", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_width": "100px", 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "amount",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Amount",
+   "no_copy": 0,
+   "oldfieldname": "export_amount",
+   "oldfieldtype": "Currency",
+   "options": "currency",
+   "permlevel": 0,
+   "print_width": "100px",
+   "read_only": 1,
+   "reqd": 0,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "col_break3", 
-   "fieldtype": "Column Break", 
+   "fieldname": "col_break3",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "base_rate", 
-   "fieldtype": "Currency", 
-   "in_list_view": 0, 
-   "label": "Basic Rate (Company Currency)", 
-   "oldfieldname": "basic_rate", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "100px", 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "base_rate",
+   "fieldtype": "Currency",
+   "in_list_view": 0,
+   "label": "Basic Rate (Company Currency)",
+   "oldfieldname": "basic_rate",
+   "oldfieldtype": "Currency",
+   "options": "Company:company:default_currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "100px",
+   "read_only": 1,
+   "reqd": 0,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "base_amount", 
-   "fieldtype": "Currency", 
-   "in_list_view": 0, 
-   "label": "Amount (Company Currency)", 
-   "no_copy": 0, 
-   "oldfieldname": "amount", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "100px", 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "base_amount",
+   "fieldtype": "Currency",
+   "in_list_view": 0,
+   "label": "Amount (Company Currency)",
+   "no_copy": 0,
+   "oldfieldname": "amount",
+   "oldfieldtype": "Currency",
+   "options": "Company:company:default_currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "100px",
+   "read_only": 1,
+   "reqd": 0,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "pricing_rule", 
-   "fieldtype": "Link", 
-   "label": "Pricing Rule", 
-   "options": "Pricing Rule", 
-   "permlevel": 0, 
+   "fieldname": "pricing_rule",
+   "fieldtype": "Link",
+   "label": "Pricing Rule",
+   "options": "Pricing Rule",
+   "permlevel": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "warehouse_and_reference", 
-   "fieldtype": "Section Break", 
-   "in_list_view": 0, 
-   "label": "Warehouse and Reference", 
+   "fieldname": "warehouse_and_reference",
+   "fieldtype": "Section Break",
+   "in_list_view": 0,
+   "label": "Warehouse and Reference",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "warehouse", 
-   "fieldtype": "Link", 
-   "in_list_view": 0, 
-   "label": "Reserved Warehouse", 
-   "no_copy": 0, 
-   "oldfieldname": "reserved_warehouse", 
-   "oldfieldtype": "Link", 
-   "options": "Warehouse", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "150px", 
-   "read_only": 0, 
-   "reqd": 0, 
+   "fieldname": "warehouse",
+   "fieldtype": "Link",
+   "in_list_view": 0,
+   "label": "Reserved Warehouse",
+   "no_copy": 0,
+   "oldfieldname": "reserved_warehouse",
+   "oldfieldtype": "Link",
+   "options": "Warehouse",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "150px",
+   "read_only": 0,
+   "reqd": 0,
    "width": "150px"
-  }, 
+  },
   {
-   "fieldname": "prevdoc_docname", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "Quotation", 
-   "no_copy": 1, 
-   "oldfieldname": "prevdoc_docname", 
-   "oldfieldtype": "Link", 
-   "options": "Quotation", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "fieldname": "prevdoc_docname",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_filter": 1,
+   "in_list_view": 0,
+   "label": "Quotation",
+   "no_copy": 1,
+   "oldfieldname": "prevdoc_docname",
+   "oldfieldtype": "Link",
+   "options": "Quotation",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "search_index": 1
-  }, 
+  },
   {
-   "fieldname": "brand", 
-   "fieldtype": "Link", 
-   "hidden": 1, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "Brand Name", 
-   "oldfieldname": "brand", 
-   "oldfieldtype": "Link", 
-   "options": "Brand", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "fieldname": "brand",
+   "fieldtype": "Link",
+   "hidden": 1,
+   "in_filter": 1,
+   "in_list_view": 0,
+   "label": "Brand Name",
+   "oldfieldname": "brand",
+   "oldfieldtype": "Link",
+   "options": "Brand",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "search_index": 1
-  }, 
+  },
   {
-   "description": "<a href=\"#Sales Browser/Item Group\">Add / Edit</a>", 
-   "fieldname": "item_group", 
-   "fieldtype": "Link", 
-   "hidden": 1, 
-   "in_filter": 1, 
-   "in_list_view": 0, 
-   "label": "Item Group", 
-   "oldfieldname": "item_group", 
-   "oldfieldtype": "Link", 
-   "options": "Item Group", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "description": "<a href=\"#Sales Browser/Item Group\">Add / Edit</a>",
+   "fieldname": "item_group",
+   "fieldtype": "Link",
+   "hidden": 1,
+   "in_filter": 1,
+   "in_list_view": 0,
+   "label": "Item Group",
+   "oldfieldname": "item_group",
+   "oldfieldtype": "Link",
+   "options": "Item Group",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "search_index": 1
-  }, 
+  },
   {
-   "allow_on_submit": 1, 
-   "fieldname": "page_break", 
-   "fieldtype": "Check", 
-   "in_list_view": 0, 
-   "label": "Page Break", 
-   "oldfieldname": "page_break", 
-   "oldfieldtype": "Check", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "allow_on_submit": 1,
+   "fieldname": "page_break",
+   "fieldtype": "Check",
+   "in_list_view": 0,
+   "label": "Page Break",
+   "oldfieldname": "page_break",
+   "oldfieldtype": "Check",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "report_hide": 1
-  }, 
+  },
   {
-   "fieldname": "col_break4", 
-   "fieldtype": "Column Break", 
+   "fieldname": "col_break4",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "projected_qty", 
-   "fieldtype": "Float", 
-   "hidden": 1, 
-   "in_list_view": 0, 
-   "label": "Projected Qty", 
-   "no_copy": 1, 
-   "oldfieldname": "projected_qty", 
-   "oldfieldtype": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "70px", 
-   "read_only": 1, 
+   "fieldname": "projected_qty",
+   "fieldtype": "Float",
+   "hidden": 0,
+   "in_list_view": 0,
+   "label": "Projected Qty",
+   "no_copy": 1,
+   "oldfieldname": "projected_qty",
+   "oldfieldtype": "Currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "70px",
+   "read_only": 1,
    "width": "70px"
-  }, 
+  },
   {
-   "fieldname": "actual_qty", 
-   "fieldtype": "Float", 
-   "in_list_view": 0, 
-   "label": "Actual Qty", 
-   "no_copy": 1, 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "70px", 
-   "read_only": 1, 
+   "fieldname": "actual_qty",
+   "fieldtype": "Float",
+   "in_list_view": 0,
+   "label": "Actual Qty",
+   "no_copy": 1,
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "70px",
+   "read_only": 1,
    "width": "70px"
-  }, 
+  },
   {
-   "fieldname": "delivered_qty", 
-   "fieldtype": "Float", 
-   "hidden": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Delivered Qty", 
-   "no_copy": 1, 
-   "oldfieldname": "delivered_qty", 
-   "oldfieldtype": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "100px", 
-   "read_only": 1, 
-   "search_index": 0, 
+   "fieldname": "delivered_qty",
+   "fieldtype": "Float",
+   "hidden": 0,
+   "in_filter": 0,
+   "in_list_view": 0,
+   "label": "Delivered Qty",
+   "no_copy": 1,
+   "oldfieldname": "delivered_qty",
+   "oldfieldtype": "Currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "100px",
+   "read_only": 1,
+   "search_index": 0,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "billed_amt", 
-   "fieldtype": "Currency", 
-   "in_list_view": 0, 
-   "label": "Billed Amt", 
-   "no_copy": 1, 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "billed_amt",
+   "fieldtype": "Currency",
+   "in_list_view": 0,
+   "label": "Billed Amt",
+   "no_copy": 1,
+   "options": "currency",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 1
-  }, 
+  },
   {
-   "description": "For Production", 
-   "fieldname": "planned_qty", 
-   "fieldtype": "Float", 
-   "hidden": 1, 
-   "in_list_view": 0, 
-   "label": "Planned Quantity", 
-   "no_copy": 1, 
-   "oldfieldname": "planned_qty", 
-   "oldfieldtype": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "50px", 
-   "read_only": 1, 
-   "report_hide": 1, 
+   "description": "For Production",
+   "fieldname": "planned_qty",
+   "fieldtype": "Float",
+   "hidden": 1,
+   "in_list_view": 0,
+   "label": "Planned Quantity",
+   "no_copy": 1,
+   "oldfieldname": "planned_qty",
+   "oldfieldtype": "Currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "50px",
+   "read_only": 1,
+   "report_hide": 1,
    "width": "50px"
-  }, 
+  },
   {
-   "description": "For Production", 
-   "fieldname": "produced_qty", 
-   "fieldtype": "Float", 
-   "hidden": 1, 
-   "in_list_view": 0, 
-   "label": "Produced Quantity", 
-   "oldfieldname": "produced_qty", 
-   "oldfieldtype": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_width": "50px", 
-   "read_only": 1, 
-   "report_hide": 1, 
+   "description": "For Production",
+   "fieldname": "produced_qty",
+   "fieldtype": "Float",
+   "hidden": 1,
+   "in_list_view": 0,
+   "label": "Produced Quantity",
+   "oldfieldname": "produced_qty",
+   "oldfieldtype": "Currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "print_width": "50px",
+   "read_only": 1,
+   "report_hide": 1,
    "width": "50px"
-  }, 
+  },
   {
-   "fieldname": "item_tax_rate", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "in_list_view": 0, 
-   "label": "Item Tax Rate", 
-   "oldfieldname": "item_tax_rate", 
-   "oldfieldtype": "Small Text", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "fieldname": "item_tax_rate",
+   "fieldtype": "Small Text",
+   "hidden": 1,
+   "in_list_view": 0,
+   "label": "Item Tax Rate",
+   "oldfieldname": "item_tax_rate",
+   "oldfieldtype": "Small Text",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "report_hide": 1
-  }, 
+  },
   {
-   "description": "Used for Production Plan", 
-   "fieldname": "transaction_date", 
-   "fieldtype": "Date", 
-   "hidden": 1, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Sales Order Date", 
-   "oldfieldname": "transaction_date", 
-   "oldfieldtype": "Date", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
-   "report_hide": 1, 
+   "description": "Used for Production Plan",
+   "fieldname": "transaction_date",
+   "fieldtype": "Date",
+   "hidden": 1,
+   "in_filter": 0,
+   "in_list_view": 0,
+   "label": "Sales Order Date",
+   "oldfieldname": "transaction_date",
+   "oldfieldtype": "Date",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
+   "report_hide": 1,
    "search_index": 0
   }
- ], 
- "idx": 1, 
- "istable": 1, 
- "modified": "2014-07-31 04:55:10.143164", 
- "modified_by": "Administrator", 
- "module": "Selling", 
- "name": "Sales Order Item", 
- "owner": "Administrator", 
- "permissions": [], 
- "sort_field": "modified", 
+ ],
+ "idx": 1,
+ "istable": 1,
+ "modified": "2014-07-31 04:55:10.143164",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Sales Order Item",
+ "owner": "Administrator",
+ "permissions": [],
+ "sort_field": "modified",
  "sort_order": "DESC"
-}
\ No newline at end of file
+}
diff --git a/erpnext/setup/doctype/company/company.js b/erpnext/setup/doctype/company/company.js
index ee7d66a..44f228f 100644
--- a/erpnext/setup/doctype/company/company.js
+++ b/erpnext/setup/doctype/company/company.js
@@ -4,8 +4,6 @@
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
 	if(doc.abbr && !doc.__islocal) {
 		cur_frm.set_df_property("abbr", "read_only", 1);
-		if(in_list(user_roles, "System Manager"))
-			cur_frm.add_custom_button("Replace Abbreviation", cur_frm.cscript.replace_abbr)
 	}
 
 	if(!doc.__islocal) {
@@ -14,7 +12,7 @@
 	}
 }
 
-cur_frm.cscript.replace_abbr = function() {
+cur_frm.cscript.change_abbr = function() {
 	var dialog = new frappe.ui.Dialog({
 		title: "Replace Abbr",
 		fields: [
diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json
index 4209e7d..773526a 100644
--- a/erpnext/setup/doctype/company/company.json
+++ b/erpnext/setup/doctype/company/company.json
@@ -40,6 +40,13 @@
    "reqd": 1
   }, 
   {
+   "depends_on": "eval:!doc.__islocal && in_list(user_roles, \"System Manager\")", 
+   "fieldname": "change_abbr", 
+   "fieldtype": "Button", 
+   "label": "Change Abbreviation", 
+   "permlevel": 0
+  }, 
+  {
    "fieldname": "cb0", 
    "fieldtype": "Column Break", 
    "permlevel": 0, 
@@ -349,7 +356,7 @@
  ], 
  "icon": "icon-building", 
  "idx": 1, 
- "modified": "2014-07-17 19:30:24.487672", 
+ "modified": "2014-08-07 05:20:47.711849", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Company", 
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index bd623e6..1846052 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -35,12 +35,12 @@
 			self.default_currency != self.previous_default_currency and \
 			self.check_if_transactions_exist():
 				frappe.throw(_("Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency."))
-				
+
 		self.validate_default_accounts()
-		
+
 	def validate_default_accounts(self):
-		for field in ["default_bank_account", "default_cash_account", "receivables_group", "payables_group", 
-			"default_expense_account", "default_income_account", "stock_received_but_not_billed", 
+		for field in ["default_bank_account", "default_cash_account", "receivables_group", "payables_group",
+			"default_expense_account", "default_income_account", "stock_received_but_not_billed",
 			"stock_adjustment_account", "expenses_included_in_valuation"]:
 				if self.get(field):
 					for_company = frappe.db.get_value("Account", self.get(field), "company")
@@ -127,7 +127,7 @@
 			_set_default_account("expenses_included_in_valuation", "Expenses Included In Valuation")
 
 		if not self.default_income_account:
-			self.db_set("default_income_account", frappe.db.get_value("Account", 
+			self.db_set("default_income_account", frappe.db.get_value("Account",
 				{"account_name": _("Sales"), "company": self.name}))
 
 	def create_default_cost_center(self):
@@ -277,6 +277,8 @@
 
 @frappe.whitelist()
 def replace_abbr(company, old, new):
+	frappe.only_for("System Manager")
+
 	frappe.db.set_value("Company", company, "abbr", new)
 
 	def _rename_record(dt):
diff --git a/erpnext/setup/doctype/email_digest/email_digest.js b/erpnext/setup/doctype/email_digest/email_digest.js
index 9adb7e2..fb08f90 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.js
+++ b/erpnext/setup/doctype/email_digest/email_digest.js
@@ -28,7 +28,7 @@
 		} else {
 			msgprint(save_msg);
 		}
-	}, 1);
+	}, "icon-eye-open", "btn-default");
 	cur_frm.add_custom_button(__('Send Now'), function() {
 		doc = locals[dt][dn];
 		if(doc.__unsaved != 1) {
@@ -44,7 +44,7 @@
 		} else {
 			msgprint(save_msg);
 		}
-	}, 1);
+	}, "icon-envelope", "btn-default");
 }
 
 cur_frm.cscript.addremove_recipients = function(doc, dt, dn) {
diff --git a/erpnext/stock/doctype/batch/batch_list.html b/erpnext/stock/doctype/batch/batch_list.html
new file mode 100644
index 0000000..dc29905
--- /dev/null
+++ b/erpnext/stock/doctype/batch/batch_list.html
@@ -0,0 +1,21 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span class="filterable" style="margin-right: 8px;"
+				data-filter="item,=,{%= doc.item %}">
+				{%= doc.item %}</span>
+			{% if(doc.expiry_date && frappe.datetime.get_diff(doc.expiry_date) <= 0) { %}
+				<span class="label label-danger filterable"
+					data-filter="expiry_date,>=,Today">
+					{%= __("Expired") %}: {%= doc.get_formatted("expiry_date") %}
+				</span>
+			{% } else if(doc.expiry_date) { %}
+				<span class="label label-default filterable"
+					data-filter="expiry_date,=,{%= doc.expiry_date %}">
+					{%= __("Expiry") %}: {%= doc.get_formatted("expiry_date") %}
+				</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/stock/doctype/batch/batch_list.js b/erpnext/stock/doctype/batch/batch_list.js
new file mode 100644
index 0000000..daeb69b
--- /dev/null
+++ b/erpnext/stock/doctype/batch/batch_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Batch'] = {
+	add_fields: ["item", "expiry_date"]
+};
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index d2e60eb..009ac4c 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -38,7 +38,8 @@
 		}
 
 		if(doc.docstatus==0 && !doc.__islocal) {
-			cur_frm.add_custom_button(__('Make Packing Slip'), cur_frm.cscript['Make Packing Slip']);
+			cur_frm.add_custom_button(__('Make Packing Slip'),
+				cur_frm.cscript['Make Packing Slip'], frappe.boot.doctype_icons["Packing Slip"], "btn-default");
 		}
 
 		erpnext.stock.delivery_note.set_print_hide(doc, dt, dn);
@@ -62,7 +63,7 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 		}
 
 	},
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 54e4fa2..e831c47 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -12,6 +12,10 @@
 from erpnext.stock.utils import update_bin
 from erpnext.controllers.selling_controller import SellingController
 
+form_grid_templates = {
+	"delivery_note_details": "templates/form_grid/item_grid.html"
+}
+
 class DeliveryNote(SellingController):
 	tname = 'Delivery Note Item'
 	fname = 'delivery_note_details'
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note_list.html b/erpnext/stock/doctype/delivery_note/delivery_note_list.html
new file mode 100644
index 0000000..de0af97
--- /dev/null
+++ b/erpnext/stock/doctype/delivery_note/delivery_note_list.html
@@ -0,0 +1,31 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-9">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="customer,=,{%= doc.customer %}">
+					{%= doc.customer_name %}</span></span>
+			{% if(doc.transporter_name) { %}
+			<span style="margin-right: 8px;"
+				title="{%= doc.transporter_name %}" class="filterable"
+				data-filter="transporter_name,=,{%= doc.transporter_name %}">
+				<i class="icon-truck text-muted"></i>
+			</span>
+			{% } %}
+			{% if(doc.docstatus===0) { %}
+				<span class="label label-danger filterable"
+					data-filter="docstatus,=,0">{%= __("Draft") %}</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-1 text-right">
+		{% var completed = doc.per_installed, title=__("% Installed") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+	<div class="col-xs-2 text-right">
+		<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_export') %}">
+			{%= doc.get_formatted("grand_total_export") %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note_list.js b/erpnext/stock/doctype/delivery_note/delivery_note_list.js
new file mode 100644
index 0000000..c28067d
--- /dev/null
+++ b/erpnext/stock/doctype/delivery_note/delivery_note_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Delivery Note'] = {
+	add_fields: ["customer", "customer_name", "grand_total", "per_installed",
+		"transporter_name"]
+};
diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
index 2f69bc9..8c5cbb7 100644
--- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
+++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
@@ -109,7 +109,7 @@
   }, 
   {
    "fieldname": "discount_percentage", 
-   "fieldtype": "Percent", 
+   "fieldtype": "Float", 
    "in_list_view": 0, 
    "label": "Discount (%)", 
    "oldfieldname": "adj_rate", 
@@ -365,6 +365,7 @@
    "label": "Against Sales Order", 
    "options": "Sales Order", 
    "permlevel": 0, 
+   "print_hide": 1, 
    "read_only": 1
   }, 
   {
@@ -373,6 +374,7 @@
    "label": "Against Sales Invoice", 
    "options": "Sales Invoice", 
    "permlevel": 0, 
+   "print_hide": 1, 
    "read_only": 1
   }, 
   {
@@ -429,7 +431,7 @@
  ], 
  "idx": 1, 
  "istable": 1, 
- "modified": "2014-07-24 05:56:00.218977", 
+ "modified": "2014-07-29 06:11:36.636120", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Delivery Note Item", 
diff --git a/erpnext/stock/doctype/item/item_list.html b/erpnext/stock/doctype/item/item_list.html
new file mode 100644
index 0000000..ebc2c7f
--- /dev/null
+++ b/erpnext/stock/doctype/item/item_list.html
@@ -0,0 +1,53 @@
+<div class="row">
+	<div class="col-xs-11">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			{% if(doc.item_name != doc.name) { %}
+			<span style="margin-right: 8px;">{%= doc.item_name %}</span>
+			{% } %}
+			{% if(doc.is_stock_item==="Yes") { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Stock Item") %}" class="filterable"
+				data-filter="is_stock_item,=,Yes">
+				<i class="icon-inbox text-muted"></i>
+			</span>
+			{% } %}
+			{% if(doc.is_sales_item==="Yes") { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Sales Item") %}" class="filterable"
+				data-filter="is_sales_item,=,Yes">
+				<i class="icon-tag text-muted"></i>
+			</span>
+			{% } %}
+			{% if(doc.is_purchase_item==="Yes") { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Purchase Item") %}" class="filterable"
+				data-filter="is_purchase_item,=,Yes">
+				<i class="icon-shopping-cart text-muted"></i>
+			</span>
+			{% } %}
+			{% if(doc.is_manufactured_item==="Yes") { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Manufactured Item") %}" class="filterable"
+				data-filter="is_manufactured_item,=,Yes">
+				<i class="icon-wrench text-muted"></i>
+			</span>
+			{% } %}
+			{% if(doc.show_in_website) { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Shown in Website") %}" class="filterable"
+				data-filter="show_in_website,=,Yes">
+				<i class="icon-globe text-muted"></i>
+			</span>
+			{% } %}
+			<span class="label label-info filterable"
+				data-filter="item_group,=,{%= doc.item_group %}">
+				{%= doc.item_group %}</span>
+		</div>
+	</div>
+	<div class="col-xs-1">
+		{% if(doc.image) { %}
+		<img src="{%= doc.image %}" class="img-responsive" style="margin-bottom: 4px;">
+		{% } %}
+	</div>
+</div>
diff --git a/erpnext/stock/doctype/item/item_list.js b/erpnext/stock/doctype/item/item_list.js
new file mode 100644
index 0000000..330faed
--- /dev/null
+++ b/erpnext/stock/doctype/item/item_list.js
@@ -0,0 +1,5 @@
+frappe.listview_settings['Item'] = {
+	add_fields: ["item_name", "stock_uom", "item_group", "image",
+		"is_stock_item", "is_sales_item", "is_purchase_item",
+		"is_manufactured_item", "show_in_website"]
+};
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index 7a47765..e592f8d 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -30,26 +30,30 @@
 		}
 
 		if(doc.docstatus==0) {
-			cur_frm.add_custom_button(__("Get Items from BOM"), cur_frm.cscript.get_items_from_bom, "icon-sitemap");
+			cur_frm.add_custom_button(__("Get Items from BOM"),
+				cur_frm.cscript.get_items_from_bom, "icon-sitemap", "btn-default");
 		}
 
 		if(doc.docstatus == 1 && doc.status != 'Stopped') {
 			if(doc.material_request_type === "Purchase")
 				cur_frm.add_custom_button(__("Make Supplier Quotation"),
-					this.make_supplier_quotation);
+					this.make_supplier_quotation,
+						frappe.boot.doctype_icons["Supplier Quotation"]);
 
 			if(doc.material_request_type === "Transfer" && doc.status === "Submitted")
-				cur_frm.add_custom_button(__("Transfer Material"), this.make_stock_entry);
+				cur_frm.add_custom_button(__("Transfer Material"), this.make_stock_entry,
+					frappe.boot.doctype_icons["Stock Entry"]);
 
 			if(flt(doc.per_ordered, 2) < 100) {
 				if(doc.material_request_type === "Purchase")
 					cur_frm.add_custom_button(__('Make Purchase Order'),
-						this.make_purchase_order);
+						this.make_purchase_order, frappe.boot.doctype_icons["Purchase Order"]);
 
-				cur_frm.add_custom_button(__('Stop Material Request'),
-					cur_frm.cscript['Stop Material Request'], "icon-exclamation");
+				cur_frm.add_custom_button(__('Stop'),
+					cur_frm.cscript['Stop Material Request'], "icon-exclamation", "btn-default");
 			}
-			cur_frm.add_custom_button(__('Send SMS'), cur_frm.cscript.send_sms, "icon-mobile-phone");
+			cur_frm.add_custom_button(__('Send SMS'), cur_frm.cscript.send_sms,
+				"icon-mobile-phone", true);
 
 		}
 
@@ -66,7 +70,7 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 		}
 
 		if(doc.docstatus == 1 && doc.status == 'Stopped')
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 9951fc8..89121e3 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -12,6 +12,11 @@
 from frappe.model.mapper import get_mapped_doc
 
 from erpnext.controllers.buying_controller import BuyingController
+
+form_grid_templates = {
+	"indent_details": "templates/form_grid/material_request_grid.html"
+}
+
 class MaterialRequest(BuyingController):
 	tname = 'Material Request Item'
 	fname = 'indent_details'
diff --git a/erpnext/stock/doctype/material_request/material_request_list.html b/erpnext/stock/doctype/material_request/material_request_list.html
new file mode 100644
index 0000000..750f650
--- /dev/null
+++ b/erpnext/stock/doctype/material_request/material_request_list.html
@@ -0,0 +1,28 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block"
+				title="{%= doc.material_request_type %}" class="filterable"
+				data-filter="material_request_type,=,{%= doc.material_request_type %}">
+			{% if(doc.material_request_type==="Purchase") { %}
+				<i class="icon-shopping-cart"></i>
+			{% } else { %}
+				<i class="icon-truck"></i>
+			{% } %}
+			</span>
+			{% if(doc.status=="Draft") { %}
+			<span class="label label-danger"
+				data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
+			{% } %}
+			{% if(doc.status=="Submitted" && doc.per_ordered < 100) { %}
+			<span class="label label-warning filterable"
+				data-filter="per_ordered,<,100">{%= __("Pending") %}</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-2">
+		{% var completed = doc.per_ordered, title = __("Ordered") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+</div>
diff --git a/erpnext/stock/doctype/material_request/material_request_list.js b/erpnext/stock/doctype/material_request/material_request_list.js
new file mode 100644
index 0000000..989ca60
--- /dev/null
+++ b/erpnext/stock/doctype/material_request/material_request_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Material Request'] = {
+	add_fields: ["material_request_type", "status", "per_ordered"],
+	filters: [["per_ordered", "<", 100]]
+};
diff --git a/erpnext/stock/doctype/material_request_item/material_request_item.json b/erpnext/stock/doctype/material_request_item/material_request_item.json
index 61b03f8..56d4121 100644
--- a/erpnext/stock/doctype/material_request_item/material_request_item.json
+++ b/erpnext/stock/doctype/material_request_item/material_request_item.json
@@ -109,7 +109,7 @@
    "allow_on_submit": 0, 
    "fieldname": "schedule_date", 
    "fieldtype": "Date", 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "label": "Required Date", 
    "no_copy": 0, 
    "oldfieldname": "schedule_date", 
@@ -234,7 +234,7 @@
  ], 
  "idx": 1, 
  "istable": 1, 
- "modified": "2014-07-18 01:04:18.470761", 
+ "modified": "2014-08-07 07:12:47.994668", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Material Request Item", 
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index f80b4f8..632d42c 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -16,14 +16,15 @@
 
 		if(this.frm.doc.docstatus == 1) {
 			if(this.frm.doc.__onload && !this.frm.doc.__onload.billing_complete) {
-				cur_frm.add_custom_button(__('Make Purchase Invoice'), this.make_purchase_invoice);
+				cur_frm.add_custom_button(__('Make Purchase Invoice'), this.make_purchase_invoice,
+					frappe.boot.doctype_icons["Purchase Invoice"]);
 			}
-			cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
+			cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms, "icon-mobile-phone", true);
 
 			this.show_stock_ledger();
 			this.show_general_ledger();
 		} else {
-			cur_frm.add_custom_button(__(__('From Purchase Order')),
+			cur_frm.add_custom_button(__('From Purchase Order'),
 				function() {
 					frappe.model.map_current_doc({
 						method: "erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_receipt",
@@ -36,7 +37,7 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 		}
 	},
 
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 74f1198..5f56149 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -11,6 +11,11 @@
 from erpnext.stock.utils import update_bin
 
 from erpnext.controllers.buying_controller import BuyingController
+
+form_grid_templates = {
+	"purchase_receipt_details": "templates/form_grid/item_grid.html"
+}
+
 class PurchaseReceipt(BuyingController):
 	tname = 'Purchase Receipt Item'
 	fname = 'purchase_receipt_details'
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.html b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.html
new file mode 100644
index 0000000..558b160
--- /dev/null
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.html
@@ -0,0 +1,34 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span style="margin-right: 8px; display: inline-block">
+				<span class="filterable"
+					data-filter="supplier,=,{%= doc.supplier %}">
+					{%= doc.supplier_name %}</span></span>
+			{% if(cint(doc.is_subcontracted)) { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Subcontracted") %}" class="filterable"
+				data-filter="is_subcontracted,=,Yes">
+				<i class="icon-cog text-muted"></i>
+			</span>
+			{% } %}
+			{% if(doc.transporter_name) { %}
+			<span style="margin-right: 8px;"
+				title="{%= doc.transporter_name %}" class="filterable"
+				data-filter="transporter_name,=,{%= doc.transporter_name %}">
+				<i class="icon-truck text-muted"></i>
+			</span>
+			{% } %}
+			{% if(doc.docstatus===0) { %}
+				<span class="label label-danger filterable"
+					data-filter="docstatus,=,0">{%= __("Draft") %}</span>
+			{% } %}
+		</div>
+	</div>
+	<div class="col-xs-2 text-right">
+		<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_import') %}">
+			{%= doc.get_formatted("grand_total_import") %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
new file mode 100644
index 0000000..7869f7f
--- /dev/null
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Purchase Receipt'] = {
+	add_fields: ["supplier", "supplier_name", "grand_total", "is_subcontracted",
+		"transporter_name"]
+};
diff --git a/erpnext/stock/doctype/serial_no/serial_no.js b/erpnext/stock/doctype/serial_no/serial_no.js
index dce9d45..e7c2c37 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.js
+++ b/erpnext/stock/doctype/serial_no/serial_no.js
@@ -22,5 +22,5 @@
 		cur_frm.add_custom_button(__('Set Status as Available'), function() {
 			cur_frm.set_value("status", "Available");
 			cur_frm.save();
-		});
+		}, "icon-ok", "btn-default");
 });
diff --git a/erpnext/stock/doctype/serial_no/serial_no_list.html b/erpnext/stock/doctype/serial_no/serial_no_list.html
new file mode 100644
index 0000000..d53aab1
--- /dev/null
+++ b/erpnext/stock/doctype/serial_no/serial_no_list.html
@@ -0,0 +1,28 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span class="filterable" style="margin-right: 8px;"
+				data-filter="item_code,=,{%= doc.item_code %}">
+				{%= doc.item_code %}</span>
+			{% var icon = {
+				"Available": ["icon-ok", "label-success"],
+				"Not Available": ["icon-remove", "label-danger"],
+				"Delivered": ["icon-truck", "label-success"],
+				"Purchase Returned": ["icon-retweet", "label-warning"],
+				"Sales Returned": ["icon-retweet", "label-warning"],
+			}[doc.status]; %}
+			<span class="label {%= icon[1] %} filterable"
+				data-filter="status,=,{%= doc.status %}"
+				title="{%= doc.purpose %}">
+				<i class="{%= icon[0] %}"></i> {%= doc.status %}
+			</span>
+			{% if(doc.warehouse) { %}
+				<span class="label label-default filterable"
+					data-filter="warehouse,=,{%= doc.warehouse %}">
+					{%= doc.warehouse %}
+				</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/stock/doctype/serial_no/serial_no_list.js b/erpnext/stock/doctype/serial_no/serial_no_list.js
new file mode 100644
index 0000000..9a65138
--- /dev/null
+++ b/erpnext/stock/doctype/serial_no/serial_no_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Serial No'] = {
+	add_fields: ["status", "item_code", "warehouse"]
+};
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 96b2cd5..af6493d 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -71,10 +71,12 @@
 		if(this.frm.doc.docstatus === 1 &&
 				frappe.boot.user.can_create.indexOf("Journal Voucher")!==-1) {
 			if(this.frm.doc.purpose === "Sales Return") {
-				this.frm.add_custom_button(__("Make Credit Note"), function() { me.make_return_jv(); });
+				this.frm.add_custom_button(__("Make Credit Note"),
+					function() { me.make_return_jv(); }, frappe.boot.doctype_icons["Journal Voucher"]);
 				this.add_excise_button();
 			} else if(this.frm.doc.purpose === "Purchase Return") {
-				this.frm.add_custom_button(__("Make Debit Note"), function() { me.make_return_jv(); });
+				this.frm.add_custom_button(__("Make Debit Note"),
+					function() { me.make_return_jv(); }, frappe.boot.doctype_icons["Journal Voucher"]);
 				this.add_excise_button();
 			}
 		}
@@ -199,7 +201,7 @@
 				excise = locals['Journal Voucher'][excise];
 				excise.voucher_type = 'Excise Voucher';
 				loaddoc('Journal Voucher', excise.name);
-			});
+			}, frappe.boot.doctype_icons["Journal Voucher"], "btn-default");
 	},
 
 	make_return_jv: function() {
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 861d967..1da2ad5 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -11,6 +11,7 @@
 from erpnext.stock.utils import get_incoming_rate
 from erpnext.stock.stock_ledger import get_previous_sle
 from erpnext.controllers.queries import get_match_cond
+from erpnext.stock.get_item_details import get_available_qty
 
 class NotUpdateStockError(frappe.ValidationError): pass
 class StockOverReturnError(frappe.ValidationError): pass
@@ -19,8 +20,17 @@
 
 from erpnext.controllers.stock_controller import StockController
 
+form_grid_templates = {
+	"mtn_details": "templates/form_grid/stock_entry_grid.html"
+}
+
 class StockEntry(StockController):
 	fname = 'mtn_details'
+	def onload(self):
+		if self.docstatus==1:
+			for item in self.get(self.fname):
+				item.update(get_available_qty(item.item_code,
+					item.s_warehouse))
 
 	def validate(self):
 		self.validate_posting_time()
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_list.html b/erpnext/stock/doctype/stock_entry/stock_entry_list.html
new file mode 100644
index 0000000..21794cf
--- /dev/null
+++ b/erpnext/stock/doctype/stock_entry/stock_entry_list.html
@@ -0,0 +1,50 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			{% var icon = {
+				"Material Issue": "icon-arrow-right",
+				"Material Receipt": "icon-arrow-left",
+				"Material Transfer": "icon-resize-horizontal",
+				"Manufacture/Repack": "icon-wrench",
+				"Sales Return": "icon-warning-sign",
+				"Purchase Return": "icon-warning-sign",
+				"Subcontract": "icon-truck"
+			}[doc.purpose]; %}
+			<span class="label label-info filterable"
+				data-filter="purpose,=,{%= doc.purpose %}"
+				title="{%= doc.purpose %}">
+				<i class="{%= icon %}"></i>
+			</span>
+			{% if(doc.from_warehouse) { %}
+				<span class="label label-default filterable"
+					data-filter="from_warehouse,=,{%= doc.from_warehouse %}">
+					{%= doc.from_warehouse %}
+				</span>
+			{% } %}
+			{% if(doc.from_warehouse || doc.to_warehouse) { %}
+				<i class="icon-arrow-right text-muted"></i>
+			{% } %}
+			{% if(doc.to_warehouse) { %}
+				<span class="label label-primary filterable"
+					data-filter="to_warehouse,=,{%= doc.to_warehouse %}">
+					{%= doc.to_warehouse %}
+				</span>
+			{% } %}
+			{% if(doc.production_order) { %}
+				<span class="label label-info filterable"
+					data-filter="production_order,=,{%= doc.production_order %}"
+					title="{%= doc.production_order %}">
+					<i class="icon-wrench"></i>
+				</span>
+			{% } %}
+			{% if(doc.bom_no) { %}
+				<span class="label label-info filterable"
+					data-filter="bom_no,=,{%= doc.bom_no %}"
+					title="{%= doc.bom_no %}">
+					<i class="icon-sitemap"></i>
+				</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_list.js b/erpnext/stock/doctype/stock_entry/stock_entry_list.js
new file mode 100644
index 0000000..e6a2abc
--- /dev/null
+++ b/erpnext/stock/doctype/stock_entry/stock_entry_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Stock Entry'] = {
+	add_fields: ["from_warehouse", "to_warehouse", "purpose", "production_order", "bom_no"]
+};
diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
index 0bdc9a8..e2f2c59 100644
--- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
+++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json
@@ -1,6 +1,6 @@
 {
  "autoname": "MTND/.######", 
- "creation": "2013-03-29 18:22:12.000000", 
+ "creation": "2013-03-29 18:22:12", 
  "docstatus": 0, 
  "doctype": "DocType", 
  "fields": [
@@ -190,7 +190,7 @@
    "oldfieldtype": "Link", 
    "options": "Batch", 
    "permlevel": 0, 
-   "print_hide": 1, 
+   "print_hide": 0, 
    "read_only": 0
   }, 
   {
@@ -300,9 +300,10 @@
  ], 
  "idx": 1, 
  "istable": 1, 
- "modified": "2014-02-03 12:59:27.000000", 
+ "modified": "2014-07-29 05:28:21.872968", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Stock Entry Detail", 
- "owner": "Administrator"
+ "owner": "Administrator", 
+ "permissions": []
 }
\ No newline at end of file
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
index 5373436..432a999 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
@@ -124,7 +124,7 @@
 				this.title = __("Stock Reconcilation Data");
 				frappe.tools.downloadify(JSON.parse(me.frm.doc.reconciliation_json), null, this);
 				return false;
-			}, "icon-download");
+			}, "icon-download", "btn-default");
 		}
 	},
 
diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json
index 4e016e6..0a4c244 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.json
+++ b/erpnext/stock/doctype/warehouse/warehouse.json
@@ -43,6 +43,7 @@
    "description": "Account for the warehouse (Perpetual Inventory) will be created under this Account.", 
    "fieldname": "create_account_under", 
    "fieldtype": "Link", 
+   "in_list_view": 1, 
    "label": "Parent Account", 
    "options": "Account", 
    "permlevel": 0
@@ -150,7 +151,7 @@
  ], 
  "icon": "icon-building", 
  "idx": 1, 
- "modified": "2014-05-27 03:49:22.483111", 
+ "modified": "2014-08-04 02:55:16.750848", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Warehouse", 
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.js b/erpnext/support/doctype/customer_issue/customer_issue.js
index 036f14e..67a265d 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.js
+++ b/erpnext/support/doctype/customer_issue/customer_issue.js
@@ -13,7 +13,8 @@
 erpnext.support.CustomerIssue = frappe.ui.form.Controller.extend({
 	refresh: function() {
 		if((cur_frm.doc.status=='Open' || cur_frm.doc.status == 'Work In Progress')) {
-			cur_frm.add_custom_button(__('Make Maintenance Visit'), this.make_maintenance_visit)
+			cur_frm.add_custom_button(__('Make Maintenance Visit'),
+				this.make_maintenance_visit, frappe.boot.doctype_icons["Maintenance Visit"], "btn-default")
 		}
 	},
 
diff --git a/erpnext/support/doctype/customer_issue/customer_issue_list.html b/erpnext/support/doctype/customer_issue/customer_issue_list.html
new file mode 100644
index 0000000..6a39f9f
--- /dev/null
+++ b/erpnext/support/doctype/customer_issue/customer_issue_list.html
@@ -0,0 +1,24 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+
+			<span style="margin-right: 8px;" class="filterable"
+					data-filter="customer,=,{%= doc.customer %}">
+					{%= doc.customer %}</span>
+
+			<span class="label
+				label-{%= frappe.utils.guess_style(doc.status) %} filterable"
+				data-filter="status,=,{%= doc.status %}">
+				{%= doc.status %}
+			</span>
+
+			{% if(doc.item_code) { %}
+			<span class="label label-default filterable"
+				data-filter="item_code,=,{%= doc.item_code %}">
+				{%= doc.item_code %}
+			</span>
+			{% } %}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/support/doctype/customer_issue/customer_issue_list.js b/erpnext/support/doctype/customer_issue/customer_issue_list.js
new file mode 100644
index 0000000..f47934c
--- /dev/null
+++ b/erpnext/support/doctype/customer_issue/customer_issue_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Customer Issue'] = {
+	add_fields: ["status", "customer", "item_code"],
+	filters:[["status","=", "Open"]]
+};
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js
index 17cc29d..a31dfa6 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js
@@ -28,7 +28,7 @@
 							company: me.frm.doc.company
 						}
 					});
-				});
+				}, "icon-download", "btn-default");
 		} else if (this.frm.doc.docstatus === 1) {
 			this.frm.add_custom_button(__("Make Maintenance Visit"), function() {
 				frappe.model.open_mapped_doc({
@@ -36,7 +36,7 @@
 					source_name: me.frm.doc.name,
 					frm: me.frm
 				})
-			});
+			}, frappe.boot.doctype_icons["Maintenance Visit"]);
 		}
 	},
 
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.js b/erpnext/support/doctype/maintenance_visit/maintenance_visit.js
index 0f70cf2..e9a7c84 100644
--- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.js
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.js
@@ -3,18 +3,18 @@
 
 frappe.provide("erpnext.support");
 
-frappe.ui.form.on_change("Maintenance Visit", "customer", function(frm) { 
+frappe.ui.form.on_change("Maintenance Visit", "customer", function(frm) {
 	erpnext.utils.get_party_details(frm) });
-frappe.ui.form.on_change("Maintenance Visit", "customer_address", 
+frappe.ui.form.on_change("Maintenance Visit", "customer_address",
 	erpnext.utils.get_address_display);
-frappe.ui.form.on_change("Maintenance Visit", "contact_person", 
-	erpnext.utils.get_contact_details);	
+frappe.ui.form.on_change("Maintenance Visit", "contact_person",
+	erpnext.utils.get_contact_details);
 
 // TODO commonify this code
 erpnext.support.MaintenanceVisit = frappe.ui.form.Controller.extend({
 	refresh: function() {
 		if (this.frm.doc.docstatus===0) {
-			cur_frm.add_custom_button(__('From Maintenance Schedule'), 
+			cur_frm.add_custom_button(__('From Maintenance Schedule'),
 				function() {
 					frappe.model.map_current_doc({
 						method: "erpnext.support.doctype.maintenance_schedule.maintenance_schedule.make_maintenance_visit",
@@ -25,8 +25,8 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
-			cur_frm.add_custom_button(__('From Customer Issue'), 
+				}, "icon-download", "btn-default");
+			cur_frm.add_custom_button(__('From Customer Issue'),
 				function() {
 					frappe.model.map_current_doc({
 						method: "erpnext.support.doctype.customer_issue.customer_issue.make_maintenance_visit",
@@ -37,8 +37,8 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
-			cur_frm.add_custom_button(__('From Sales Order'), 
+				}, "icon-download", "btn-default");
+			cur_frm.add_custom_button(__('From Sales Order'),
 				function() {
 					frappe.model.map_current_doc({
 						method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_visit",
@@ -50,7 +50,7 @@
 							company: cur_frm.doc.company
 						}
 					})
-				});
+				}, "icon-download", "btn-default");
 		}
 	},
 });
@@ -91,4 +91,4 @@
 
 cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
 	return {query: "erpnext.controllers.queries.customer_query" }
-}
\ No newline at end of file
+}
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit_list.html b/erpnext/support/doctype/maintenance_visit/maintenance_visit_list.html
new file mode 100644
index 0000000..2ddef7a
--- /dev/null
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit_list.html
@@ -0,0 +1,35 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+
+			<!-- sample text -->
+			<span style="margin-right: 8px;" class="filterable"
+					data-filter="customer,=,{%= doc.customer %}">
+					{%= doc.customer_name %}</span>
+
+			<!-- sample label -->
+			{% var style = {
+					"Scheduled": "default",
+					"Unscheduled": "default",
+					"Breakdown": "danger"
+				}[doc.maintenance_type] %}
+			<span class="label
+				label-{%= style %} filterable"
+				data-filter="maintenance_type,=,{%= doc.maintenance_type %}">
+				{%= doc.maintenance_type %}
+			</span>
+			{% var style = doc.completion_status==="Partially Completed" ? "warning" : "success" %}
+			<span class="label
+				label-{%= style %} filterable"
+				data-filter="completion_status,=,{%= doc.completion_status %}">
+				{%= doc.completion_status %}
+			</span>
+		</div>
+	</div>
+	<!-- sample graph -->
+	<div class="col-xs-1 text-right">
+		{% var completed = doc.completed, title = __("Completed") %}
+		{% include "templates/form_grid/includes/progress.html" %}
+	</div>
+</div>
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit_list.js b/erpnext/support/doctype/maintenance_visit/maintenance_visit_list.js
new file mode 100644
index 0000000..77f28d7
--- /dev/null
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Maintenance Visit'] = {
+	add_fields: ["customer", "customer_name", "completion_status", "maintenance_type"],
+};
diff --git a/erpnext/support/doctype/newsletter/newsletter.js b/erpnext/support/doctype/newsletter/newsletter.js
index c514a21..9edb14c 100644
--- a/erpnext/support/doctype/newsletter/newsletter.js
+++ b/erpnext/support/doctype/newsletter/newsletter.js
@@ -20,7 +20,7 @@
 			return $c_obj(doc, 'send_emails', '', function(r) {
 				cur_frm.refresh();
 			});
-		})
+		}, "icon-play", "btn-success");
 	}
 
 	cur_frm.cscript.setup_dashboard();
diff --git a/erpnext/support/doctype/newsletter/newsletter.json b/erpnext/support/doctype/newsletter/newsletter.json
index 600ac3f..a30dc41 100644
--- a/erpnext/support/doctype/newsletter/newsletter.json
+++ b/erpnext/support/doctype/newsletter/newsletter.json
@@ -1,6 +1,6 @@
 {
  "autoname": "naming_series:", 
- "creation": "2013-01-10 16:34:31.000000", 
+ "creation": "2013-01-10 16:34:31", 
  "description": "Create and Send Newsletters", 
  "docstatus": 0, 
  "doctype": "DocType", 
@@ -132,7 +132,7 @@
  ], 
  "icon": "icon-envelope", 
  "idx": 1, 
- "modified": "2014-02-03 11:32:22.000000", 
+ "modified": "2014-08-04 07:22:06.445634", 
  "modified_by": "Administrator", 
  "module": "Support", 
  "name": "Newsletter", 
diff --git a/erpnext/support/doctype/newsletter/newsletter_list.html b/erpnext/support/doctype/newsletter/newsletter_list.html
new file mode 100644
index 0000000..5bbe104
--- /dev/null
+++ b/erpnext/support/doctype/newsletter/newsletter_list.html
@@ -0,0 +1,16 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span class="label
+				label-{%= cint(doc.email_sent) ? "success" : "warning" %} filterable"
+				data-filter="email_sent,=,{%= cint(doc.email_sent) ? __("Yes") : __("No") %}">
+				{%= cint(doc.email_sent) ? __("Sent") : __("Not Sent") %}
+			</span>
+			<span class="label label-info filterable"
+				data-filter="send_to_type,=,{%= doc.send_to_type %}">
+				{%= doc.send_to_type %}
+			</span>
+		</div>
+	</div>
+</div>
diff --git a/erpnext/support/doctype/newsletter/newsletter_list.js b/erpnext/support/doctype/newsletter/newsletter_list.js
new file mode 100644
index 0000000..096b83e
--- /dev/null
+++ b/erpnext/support/doctype/newsletter/newsletter_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings['Newsletter'] = {
+	add_fields: ["subject", "send_to_type", "email_sent"]
+};
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.js b/erpnext/support/doctype/support_ticket/support_ticket.js
index 0144d14..919ae65 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.js
+++ b/erpnext/support/doctype/support_ticket/support_ticket.js
@@ -15,27 +15,29 @@
 				<span class="help">'+__("Integrate incoming support emails to Support Ticket")+'</span></p>';
 		}
 	},
-	
+
 	refresh: function(doc) {
 		erpnext.toggle_naming_series();
 		cur_frm.cscript.make_listing(doc);
 		if(!doc.__islocal) {
 			if(cur_frm.fields_dict.status.get_status()=="Write") {
-				if(doc.status!='Closed') cur_frm.add_custom_button('Close Ticket', cur_frm.cscript['Close Ticket']);
-				if(doc.status=='Closed') cur_frm.add_custom_button('Re-Open Ticket', cur_frm.cscript['Re-Open Ticket']);
+				if(doc.status!='Closed') cur_frm.add_custom_button('Close',
+					cur_frm.cscript['Close Ticket'], "icon-ok", "btn-success");
+				if(doc.status=='Closed') cur_frm.add_custom_button('Re-Open Ticket',
+					cur_frm.cscript['Re-Open Ticket'], null, "btn-default");
 			}
-			
+
 			cur_frm.toggle_enable(["subject", "raised_by"], false);
 			cur_frm.toggle_display("description", false);
 		}
 		refresh_field('status');
 	},
-	
+
 	make_listing: function(doc) {
 		var wrapper = cur_frm.fields_dict['thread_html'].wrapper;
-		
+
 		var comm_list = frappe.get_list("Communication", {"parent": doc.name, "parenttype":"Support Ticket"})
-		
+
 		if(!comm_list.length) {
 			comm_list.push({
 				"sender": doc.raised_by,
@@ -43,7 +45,7 @@
 				"subject": doc.subject,
 				"content": doc.description});
 		}
-					
+
 		cur_frm.communication_view = new frappe.views.CommunicationList({
 			list: comm_list,
 			parent: wrapper,
@@ -52,11 +54,11 @@
 		})
 
 	},
-		
+
 	'Close Ticket': function() {
 		cur_frm.cscript.set_status("Closed");
 	},
-	
+
 	'Re-Open Ticket': function() {
 		cur_frm.cscript.set_status("Open");
 	},
@@ -72,8 +74,8 @@
 				if(!r.exc) cur_frm.reload_doc();
 			}
 		})
-		
+
 	}
-	
+
 })
 
diff --git a/erpnext/support/doctype/support_ticket/support_ticket_list.html b/erpnext/support/doctype/support_ticket/support_ticket_list.html
new file mode 100644
index 0000000..f2cf9b2
--- /dev/null
+++ b/erpnext/support/doctype/support_ticket/support_ticket_list.html
@@ -0,0 +1,18 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-10">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+			<span class="label label-{%= frappe.utils.guess_style(doc.status) %} filterable"
+				data-filter="status,=,{%= doc.status %}">
+				{%= doc.status %}
+			</span>
+		</div>
+	</div>
+	<div class="col-xs-2">
+		<div class="text-ellipsis">
+			<span class="filterable text-muted small" style="margin-right: 8px;"
+				data-filter="raised_by,=,{%= doc.raised_by %}">
+				{%= doc.raised_by %}</span>
+		</div>
+	</div>
+</div>
diff --git a/erpnext/support/doctype/support_ticket/support_ticket_list.js b/erpnext/support/doctype/support_ticket/support_ticket_list.js
new file mode 100644
index 0000000..1ae4d93
--- /dev/null
+++ b/erpnext/support/doctype/support_ticket/support_ticket_list.js
@@ -0,0 +1,4 @@
+frappe.listview_settings['Support Ticket'] = {
+	add_fields: ["subject", "status", "raised_by"],
+	filters:[["status","=", "Open"]]
+};
diff --git a/erpnext/templates/form_grid/includes/progress.html b/erpnext/templates/form_grid/includes/progress.html
new file mode 100644
index 0000000..9cbe5ab
--- /dev/null
+++ b/erpnext/templates/form_grid/includes/progress.html
@@ -0,0 +1,8 @@
+<div class="progress" title="{%= title %}"
+	style="margin-bottom: 4px;">
+	<div class="progress-bar" role="progressbar"
+		aria-valuenow="{%= completed %}"
+		aria-valuemin="0" aria-valuemax="100"
+		style="width: {%= completed %}%">
+	</div>
+</div>
diff --git a/erpnext/templates/form_grid/includes/visible_cols.html b/erpnext/templates/form_grid/includes/visible_cols.html
new file mode 100644
index 0000000..38abdd0
--- /dev/null
+++ b/erpnext/templates/form_grid/includes/visible_cols.html
@@ -0,0 +1,13 @@
+{% $.each(visible_columns || [], function(i, df) { %}
+	{% 	var val = doc.get_formatted(df.fieldname);
+	if(val) { %}
+		<div class="row">
+			<div class="col-xs-3">
+				<strong>{%= __(df.label) %}:</strong>
+			</div>
+			<div class="col-xs-9">
+				{%= doc.get_formatted(df.fieldname) %}
+			</div>
+		</div>
+	{% } %}
+{% }); %}
diff --git a/erpnext/templates/form_grid/item_grid.html b/erpnext/templates/form_grid/item_grid.html
new file mode 100644
index 0000000..c2e5d56
--- /dev/null
+++ b/erpnext/templates/form_grid/item_grid.html
@@ -0,0 +1,97 @@
+{% var visible_columns = row.get_visible_columns(["item_code", "item_name", "description", "qty", "rate", "amount", "stock_uom", "uom", "discount_percentage", "schedule_date", "warehouse", "against_sales_order", "sales_order"]); %}
+
+{% if(!doc) { %}
+	<div class="row">
+		<div class="col-sm-6">{%= __("Item") %}</div>
+		<div class="col-sm-2 text-right">{%= __("Qty") %}</div>
+		<div class="col-sm-2 text-right">{%= __("Rate") %}</div>
+		<div class="col-sm-2 text-right">{%= __("Amount") %}</div>
+	</div>
+{% } else { %}
+	<div class="row">
+		<div class="col-sm-6"><strong>{%= doc.item_code %}</strong>
+			{% if(doc.item_name != doc.item_code) { %}
+				<br>{%= doc.item_name %}{% } %}
+			{% if(doc.item_name != doc.description) { %}
+				<p>{%= doc.description %}</p>{% } %}
+			{% if(doc.sales_order || doc.against_sales_order) { %}
+				<p><span class="label label-default"
+					title="{%= __("Sales Order") %}">
+					<i class="icon-file"></i>
+					{%= doc.sales_order || doc.against_sales_order %}
+				</span></p>
+			{% } %}
+			{% include "templates/form_grid/includes/visible_cols.html" %}
+			{% if(doc.schedule_date) { %}
+			<div><span title="{%= __("Reqd By Date") %}" class="label {%=
+				(frappe.datetime.get_diff(doc.schedule_date) < 1
+					&& doc.received_qty < doc.qty)
+					? "label-danger" : "label-default" %}">
+					{%= doc.get_formatted("schedule_date") %}</span>
+			</div>
+			{% } %}
+		</div>
+
+		<!-- qty -->
+		<div class="col-sm-2 text-right">
+			{%= doc.get_formatted("qty") %}
+			<br><small>{%= doc.uom || doc.stock_uom %}</small>
+			{% if(in_list(["Sales Order Item", "Purchase Order Item"],
+				doc.doctype) && frm.doc.docstatus===1) {
+				var delivered = doc.doctype==="Sales Order Item" ?
+						doc.delivered_qty : doc.received_qty,
+					completed =
+						100 - cint((doc.qty - delivered) * 100 / doc.qty),
+					title = __("Delivered");
+				%}
+				{% include "templates/form_grid/includes/progress.html" %}
+			{% } %}
+			{% if(doc.warehouse) {
+				var label_class = "label-default",
+					title = "Warehouse",
+					actual_qty = (doc.doctype==="Sales Order"
+						? doc.projected_qty : doc.actual_qty);
+				if(actual_qty != undefined) {
+					if(actual_qty > doc.qty) {
+						var label_class = "label-success";
+						var title = "In Stock"
+					} else {
+						var title = "Not In Stock"
+					}
+				}
+				%}
+				<div style="overflow:hidden; min-height: 25px;
+					white-space:nowrap; text-overflow: ellipsis;"
+					title="{%= title %}">
+					<span class="label {%= label_class %}">
+						{%= doc.warehouse %}
+					</span>
+				</div>
+			{% } %}
+		</div>
+
+		<!-- rate -->
+		<div class="col-sm-2 text-right">
+			{%= doc.get_formatted("rate") %}
+			{% if(doc.discount_percentage) { %}
+			<br><span class="label label-default pull-right"
+				title="{%= __("Discount")  %}">
+				{%= -1 * doc.discount_percentage %}%</span>
+			{% }%}
+		</div>
+
+		<!-- amount -->
+		<div class="col-sm-2 text-right">
+			{%= doc.get_formatted("amount") %}
+			{% if(in_list(["Sales Order Item", "Purchase Order Item"],
+				doc.doctype) && frm.doc.docstatus===1 && doc.amount) {
+				var completed =
+					100 - cint((doc.amount - doc.billed_amt) * 100 / doc.amount),
+					title = __("Billed");
+				%}
+				<br><small>&nbsp;</small>
+				{% include "templates/form_grid/includes/progress.html" %}
+			{% } %}
+		</div>
+	</div>
+{% } %}
diff --git a/erpnext/templates/form_grid/material_request_grid.html b/erpnext/templates/form_grid/material_request_grid.html
new file mode 100644
index 0000000..c30cf58
--- /dev/null
+++ b/erpnext/templates/form_grid/material_request_grid.html
@@ -0,0 +1,45 @@
+{% var visible_columns = row.get_visible_columns(["item_code", "warehouse",
+	"item_name", "description", "amount", "stock_uom", "uom", "qty", "schedule_date"]); %}
+
+{% if(!doc) { %}
+	<div class="row">
+		<div class="col-sm-9">{%= __("Item") %}</div>
+		<div class="col-sm-3 text-right">{%= __("Qty") %}</div>
+	</div>
+{% } else { %}
+	<div class="row">
+		<div class="col-sm-9"><strong>{%= doc.item_code %}</strong>
+			{% if(doc.item_name != doc.item_code) { %}
+				<br>{%= doc.item_name %}{% } %}
+			{% if(doc.item_name != doc.description) { %}
+				<p>{%= doc.description %}</p>{% } %}
+			{% include "templates/form_grid/includes/visible_cols.html" %}
+			{% if(doc.schedule_date) { %}
+			<br><span title="{%= __("Reqd By Date") %}" class="label {%=
+				(frappe.datetime.get_diff(doc.schedule_date, frappe.datetime.get_today()) < 0
+					&& doc.ordered_qty < doc.qty)
+					? "label-danger" : "label-default" %}">
+					{%= doc.get_formatted("schedule_date") %}</span>
+			{% } %}
+		</div>
+
+		<!-- qty -->
+		<div class="col-sm-3 text-right">
+			{%= doc.get_formatted("qty") %}
+			<small>{%= doc.uom || doc.stock_uom %}</small>
+			{% var completed =
+				100 - cint((doc.qty - cint(doc.ordered_qty)) * 100 / doc.qty),
+				title = __("Ordered"); %}
+			{% include "templates/form_grid/includes/progress.html" %}
+			{% if(doc.warehouse) { %}
+				<div style="overflow:hidden; min-height: 25px;
+					white-space:nowrap; text-overflow: ellipsis;"
+					title="{%= __("For Warehouse") %}">
+					<span class="label label-default">
+						{%= doc.warehouse %}
+					</span>
+				</div>
+			{% } %}
+		</div>
+	</div>
+{% } %}
diff --git a/erpnext/templates/form_grid/stock_entry_grid.html b/erpnext/templates/form_grid/stock_entry_grid.html
new file mode 100644
index 0000000..c5f3ecd
--- /dev/null
+++ b/erpnext/templates/form_grid/stock_entry_grid.html
@@ -0,0 +1,46 @@
+{% var visible_columns = row.get_visible_columns(["item_code",
+	"item_name", "description", "amount", "stock_uom", "uom", "qty",
+	"s_warehouse", "t_warehouse", "incoming_rate"]);
+%}
+
+{% if(!doc) { %}
+	<div class="row">
+		<div class="col-sm-8">{%= __("Item") %}</div>
+		<div class="col-sm-2 text-right">{%= __("Qty") %}</div>
+		<div class="col-sm-2 text-right">{%= __("Amount") %}</div>
+	</div>
+{% } else { %}
+	<div class="row">
+		<div class="col-sm-8"><strong>{%= doc.item_code %}</strong>
+			{% if(doc.item_name != doc.item_code) { %}
+				<br>{%= doc.item_name %}{% } %}
+			{% if(doc.item_name != doc.description) { %}
+				<p>{%= doc.description %}</p>{% } %}
+			{% include "templates/form_grid/includes/visible_cols.html" %}
+			<div>
+				{% if(doc.s_warehouse) { %}<span class="label
+					{%= (doc.actual_qty >= doc.qty) ? "label-success"
+						: "label-danger" %}"
+					title="{%= (doc.actual_qty >= doc.qty) ? __("In Stock")
+						: __("Not In Stock") %}">
+					{%= doc.s_warehouse || "" %}</span>{% } %}
+				<i class="icon-long-arrow-right"></i>
+				{% if(doc.t_warehouse) { %}<span class="label label-primary">
+					{%= doc.t_warehouse || "" %}</span>{% } %}
+			</div>
+		</div>
+
+		<!-- qty -->
+		<div class="col-sm-2 text-right">
+			{%= doc.get_formatted("qty") %}
+			<br><small>{%= doc.uom || doc.stock_uom %}</small>
+		</div>
+
+		<!-- amount -->
+		<div class="col-sm-2 text-right">
+			{%= doc.get_formatted("amount") %}
+			<div class="small text-muted">
+				{%= doc.get_formatted("incoming_rate") %}</div>
+		</div>
+	</div>
+{% } %}
diff --git a/erpnext/utilities/doctype/address/address_list.js b/erpnext/utilities/doctype/address/address_list.js
new file mode 100644
index 0000000..5eee8cf
--- /dev/null
+++ b/erpnext/utilities/doctype/address/address_list.js
@@ -0,0 +1,5 @@
+frappe.listview_settings['Address'] = {
+    set_title_left: function() {
+        frappe.set_route("Module", "Selling");
+    }
+}
diff --git a/erpnext/utilities/doctype/contact/contact.json b/erpnext/utilities/doctype/contact/contact.json
index fc5a721..c52cfdc 100644
--- a/erpnext/utilities/doctype/contact/contact.json
+++ b/erpnext/utilities/doctype/contact/contact.json
@@ -16,6 +16,7 @@
   {
    "fieldname": "first_name", 
    "fieldtype": "Data", 
+   "in_list_view": 0, 
    "label": "First Name", 
    "oldfieldname": "first_name", 
    "oldfieldtype": "Data", 
@@ -25,6 +26,7 @@
   {
    "fieldname": "last_name", 
    "fieldtype": "Data", 
+   "in_list_view": 0, 
    "label": "Last Name", 
    "oldfieldname": "last_name", 
    "oldfieldtype": "Data", 
@@ -39,6 +41,7 @@
    "default": "Passive", 
    "fieldname": "status", 
    "fieldtype": "Select", 
+   "in_list_view": 1, 
    "label": "Status", 
    "options": "Passive\nOpen\nReplied", 
    "permlevel": 0
@@ -46,7 +49,7 @@
   {
    "fieldname": "email_id", 
    "fieldtype": "Data", 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "label": "Email Id", 
    "oldfieldname": "email_id", 
    "oldfieldtype": "Data", 
@@ -100,7 +103,7 @@
    "depends_on": "eval:!doc.supplier && !doc.sales_partner", 
    "fieldname": "customer_name", 
    "fieldtype": "Data", 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "label": "Customer Name", 
    "permlevel": 0, 
    "read_only": 1
@@ -125,7 +128,7 @@
    "depends_on": "eval:!doc.customer && !doc.sales_partner", 
    "fieldname": "supplier_name", 
    "fieldtype": "Data", 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "label": "Supplier Name", 
    "permlevel": 0, 
    "read_only": 1
@@ -199,7 +202,7 @@
  "idx": 1, 
  "in_create": 0, 
  "in_dialog": 0, 
- "modified": "2014-05-27 03:49:08.789451", 
+ "modified": "2014-07-30 05:44:25.767076", 
  "modified_by": "Administrator", 
  "module": "Utilities", 
  "name": "Contact", 
diff --git a/erpnext/utilities/doctype/contact/contact_list.js b/erpnext/utilities/doctype/contact/contact_list.js
new file mode 100644
index 0000000..5eee8cf
--- /dev/null
+++ b/erpnext/utilities/doctype/contact/contact_list.js
@@ -0,0 +1,5 @@
+frappe.listview_settings['Address'] = {
+    set_title_left: function() {
+        frappe.set_route("Module", "Selling");
+    }
+}
diff --git a/erpnext/utilities/doctype/note/note.json b/erpnext/utilities/doctype/note/note.json
index 6cf756c..66d99f4 100644
--- a/erpnext/utilities/doctype/note/note.json
+++ b/erpnext/utilities/doctype/note/note.json
@@ -9,7 +9,7 @@
   {
    "fieldname": "title", 
    "fieldtype": "Data", 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "label": "Title", 
    "permlevel": 0, 
    "print_hide": 1, 
@@ -19,7 +19,7 @@
    "description": "Help: To link to another record in the system, use \"#Form/Note/[Note Name]\" as the Link URL. (don't use \"http://\")", 
    "fieldname": "content", 
    "fieldtype": "Text Editor", 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "label": "Content", 
    "permlevel": 0
   }, 
@@ -49,7 +49,7 @@
  ], 
  "icon": "icon-file-text", 
  "idx": 1, 
- "modified": "2014-07-09 12:54:11.897597", 
+ "modified": "2014-07-30 03:24:38.302928", 
  "modified_by": "Administrator", 
  "module": "Utilities", 
  "name": "Note", 
diff --git a/erpnext/utilities/doctype/note/note_list.html b/erpnext/utilities/doctype/note/note_list.html
new file mode 100644
index 0000000..e106dd4
--- /dev/null
+++ b/erpnext/utilities/doctype/note/note_list.html
@@ -0,0 +1,16 @@
+<div class="row" style="max-height: 30px;">
+	<div class="col-xs-12">
+		<div class="text-ellipsis">
+			{%= list.get_avatar_and_id(doc) %}
+
+			{% if(doc.public) { %}
+			<span style="margin-right: 8px;"
+				title="{%= __("Private") %}" class="filterable"
+				data-filter="public,=,Yes">
+				<i class="icon-lock text-muted"></i>
+			</span>
+			{% } %}
+
+		</div>
+	</div>
+</div>
diff --git a/erpnext/utilities/doctype/note/note_list.js b/erpnext/utilities/doctype/note/note_list.js
index b188941..a713aca 100644
--- a/erpnext/utilities/doctype/note/note_list.js
+++ b/erpnext/utilities/doctype/note/note_list.js
@@ -1,4 +1,5 @@
 frappe.listview_settings['Note'] = {
+	add_fields: ["title", "public"],
 	set_title_left: function() {
 		frappe.set_route();
 	}
diff --git a/erpnext/utilities/doctype/note/test_note.py b/erpnext/utilities/doctype/note/test_note.py
new file mode 100644
index 0000000..997c57b
--- /dev/null
+++ b/erpnext/utilities/doctype/note/test_note.py
@@ -0,0 +1,10 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
+# See license.txt
+
+import frappe
+import unittest
+
+test_records = frappe.get_test_records('Note')
+
+class TestNote(unittest.TestCase):
+	pass
diff --git a/erpnext/utilities/doctype/note/test_records.json b/erpnext/utilities/doctype/note/test_records.json
new file mode 100644
index 0000000..f3d7cff
--- /dev/null
+++ b/erpnext/utilities/doctype/note/test_records.json
@@ -0,0 +1,7 @@
+[
+	{
+		"doctype": "Note",
+		"name": "_Test Note 1",
+		"title": "Test Note Title"
+	}
+]