diff --git a/accounts/page/accounts_browser/accounts_browser.css b/accounts/page/accounts_browser/accounts_browser.css
deleted file mode 100644
index 718da36..0000000
--- a/accounts/page/accounts_browser/accounts_browser.css
+++ /dev/null
@@ -1,29 +0,0 @@
-select.accbrowser-company-select {
-	width: 200px;
-	margin-top: 2px;
-	margin-left: 10px;
-}
-
-span.tree-node-toolbar {
-	padding: 2px;
-	margin-left: 15px;
-	border-radius: 3px;
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
-	background-color: #ddd;
-}
-
-.tree-area a.selected {
-	font-weight: bold;
-	text-decoration: underline;
-}
-
-span.balance-area {
-	float: right; 
-	height: 13px;
-}
-
-span.balance-bold {
-	font-weight: bold;
-}
\ No newline at end of file
diff --git a/accounts/page/accounts_browser/accounts_browser.js b/accounts/page/accounts_browser/accounts_browser.js
index 235e6ab..66a40b1 100644
--- a/accounts/page/accounts_browser/accounts_browser.js
+++ b/accounts/page/accounts_browser/accounts_browser.js
@@ -8,7 +8,6 @@
 // see ledger
 
 pscript['onload_Accounts Browser'] = function(wrapper){
-	console.log($(wrapper).html());
 	wn.ui.make_app_page({
 		parent: wrapper,
 		single_column: true
@@ -122,14 +121,14 @@
 				}
 				
 				// bold
-				$('.balance-bold').removeClass('balance-bold'); // deselect
-				$(link).parent().find('.balance-area:first').addClass('balance-bold'); // select
+				$('.bold').removeClass('bold'); // deselect
+				$(link).parent().find('.balance-area:first').addClass('bold'); // select
 
 			},
 			onrender: function(treenode) {
 				if (ctype == 'Account' && treenode.data) {
 					if(treenode.data.balance) {
-						treenode.parent.append('<span class="balance-area">' 
+						treenode.parent.append('<span class="balance-area pull-right">' 
 							+ format_currency(treenode.data.balance, treenode.data.currency) 
 							+ '</span>');
 					}
@@ -142,7 +141,7 @@
 		var data = $(link).data('node-data');
 		if(!data) return;
 
-		link.toolbar = $('<span class="tree-node-toolbar"></span>').insertAfter(link);
+		link.toolbar = $('<span class="tree-node-toolbar highlight"></span>').insertAfter(link);
 		
 		var node_links = [];
 		// edit
diff --git a/hr/doctype/leave_application/leave_application.py b/hr/doctype/leave_application/leave_application.py
index f2f34d7..b547d3d 100755
--- a/hr/doctype/leave_application/leave_application.py
+++ b/hr/doctype/leave_application/leave_application.py
@@ -12,6 +12,7 @@
 class LeaveDayBlockedError(webnotes.ValidationError): pass
 class OverlapError(webnotes.ValidationError): pass
 class InvalidLeaveApproverError(webnotes.ValidationError): pass
+class LeaveApproverIdentityError(webnotes.ValidationError): pass
 	
 from webnotes.model.controller import DocListController
 class DocType(DocListController):
@@ -161,6 +162,10 @@
 			where parent=%s and role='Leave Approver'""", self.doc.leave_approver):
 				msgprint(get_fullname(self.doc.leave_approver) + ": " \
 					+ _("does not have role 'Leave Approver'"), raise_exception=InvalidLeaveApproverError)
+					
+		elif self.doc.docstatus==1 and len(leave_approvers) and self.doc.leave_approver != webnotes.session.user:
+			msgprint(_("Only the selected Leave Approver can submit this Leave Application"),
+				raise_exception=LeaveApproverIdentityError)
 			
 	def notify_employee(self, status):
 		employee = webnotes.doc("Employee", self.doc.employee)
diff --git a/hr/doctype/leave_application/test_leave_application.py b/hr/doctype/leave_application/test_leave_application.py
index ee15041..2c4f376 100644
--- a/hr/doctype/leave_application/test_leave_application.py
+++ b/hr/doctype/leave_application/test_leave_application.py
@@ -163,8 +163,8 @@
 		webnotes.set_user("test1@example.com")
 		application.doc.status = "Approved"
 		
-		from webnotes.model.bean import BeanPermissionError
-		self.assertRaises(BeanPermissionError, application.submit)
+		from hr.doctype.leave_application.leave_application import LeaveApproverIdentityError
+		self.assertRaises(LeaveApproverIdentityError, application.submit)
 
 		webnotes.conn.sql("""delete from `tabEmployee Leave Approver` where parent=%s""",
 			"_T-Employee-0001")
diff --git a/patches/1311/p06_update_user_properties.py b/patches/1311/p06_update_user_properties.py
index de19df2..51da19f 100644
--- a/patches/1311/p06_update_user_properties.py
+++ b/patches/1311/p06_update_user_properties.py
@@ -6,7 +6,9 @@
 
 def execute():
 	update_user_properties()
+	update_user_match()
 	update_permissions()
+	remove_duplicate_restrictions()
 	webnotes.clear_cache()
 
 def update_user_properties():
@@ -23,6 +25,49 @@
 				where defkey=%s and 
 				parent not in ('__global', 'Control Panel')""", (df[0].options, d.defkey))
 				
+def update_user_match():
+	import webnotes.defaults
+	doctype_matches = {}
+	for doctype, match in webnotes.conn.sql("""select parent, `match` from `tabDocPerm`
+		where `match` like %s""", "%:user"):
+		doctype_matches.setdefault(doctype, []).append(match)
+	
+	for doctype, user_matches in doctype_matches.items():
+		
+		# get permissions of this doctype
+		perms = webnotes.conn.sql("""select role, `match` from `tabDocPerm` 
+			where parent=%s and permlevel=0 and read=1""", doctype, as_dict=True)
+		
+		# for each user with roles of this doctype, check if match condition applies
+		for profile in webnotes.conn.sql_list("""select name from `tabProfile`
+			where enabled=1 and user_type='System User'"""):
+			
+			roles = webnotes.get_roles(profile)
+			
+			user_match = False
+			for perm in perms:
+				if perm.role in roles and (perm.match and \
+					(perm.match.endswith(":user") or perm.match.endswith(":profile"))):
+					user_match = True
+					break
+			
+			if not user_match:
+				continue
+			
+			# if match condition applies, restrict that user
+			# add that doc's restriction to that user
+			for match in user_matches:
+				for name in webnotes.conn.sql_list("""select name from `tab{doctype}`
+					where `{field}`=%s""".format(doctype=doctype, field=match.split(":")[0]), profile):
+					
+					webnotes.defaults.add_default(doctype, name, profile, "Restriction")
+
+def update_permissions():
+	# clear match conditions other than owner
+	webnotes.conn.sql("""update tabDocPerm set `match`=''
+		where ifnull(`match`,'') not in ('', 'owner')""")
+		
+def remove_duplicate_restrictions():
 	# remove duplicate restrictions (if they exist)
 	for d in webnotes.conn.sql("""select parent, defkey, defvalue, 
 		count(*) as cnt from tabDefaultValue 
@@ -30,9 +75,4 @@
 		group by parent, defkey, defvalue""", as_dict=1):
 		if d.cnt > 1:
 			webnotes.conn.sql("""delete from tabDefaultValue where parent=%s, defkey=%s, 
-				defvalue=%s limit %s""", (d.parent, d.defkey, d.defvalue, d.cnt-1))
-				
-def update_permissions():
-	# clear match conditions other than owner
-	webnotes.conn.sql("""update tabDocPerm set `match`=''
-		where ifnull(`match`,'') not in ('', 'owner')""")
\ No newline at end of file
+				defvalue=%s limit %s""", (d.parent, d.defkey, d.defvalue, d.cnt-1))
\ No newline at end of file
diff --git a/support/doctype/customer_issue/customer_issue.txt b/support/doctype/customer_issue/customer_issue.txt
index f9fbc6b..c677654 100644
--- a/support/doctype/customer_issue/customer_issue.txt
+++ b/support/doctype/customer_issue/customer_issue.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-10 16:34:30", 
   "docstatus": 0, 
-  "modified": "2013-11-02 16:59:22", 
+  "modified": "2013-12-11 11:14:32", 
   "modified_by": "Administrator", 
   "owner": "harshada@webnotestech.com"
  }, 
@@ -13,7 +13,7 @@
   "is_submittable": 0, 
   "module": "Support", 
   "name": "__common__", 
-  "search_fields": "status,customer,customer_name,allocated_to,allocated_on, territory"
+  "search_fields": "status,customer,customer_name,territory"
  }, 
  {
   "doctype": "DocField", 
diff --git a/utilities/demo/make_demo.py b/utilities/demo/make_demo.py
index b98fd7a..87c0527 100644
--- a/utilities/demo/make_demo.py
+++ b/utilities/demo/make_demo.py
@@ -3,7 +3,7 @@
 
 import webnotes, os, datetime
 import webnotes.utils
-from webnotes.utils import random_string
+from webnotes.utils import random_string, cstr
 from webnotes.widgets import query_report
 import random
 import json
@@ -153,7 +153,7 @@
 		for po in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Purchase Receipt")]:
 			pr = webnotes.bean(make_purchase_receipt(po))
 			pr.doc.posting_date = current_date
-			pr.doc.fiscal_year = current_date.year
+			pr.doc.fiscal_year = cstr(current_date.year)
 			pr.insert()
 			try:
 				pr.submit()
@@ -169,7 +169,7 @@
 		for so in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Delivery Note")]:
 			dn = webnotes.bean(make_delivery_note(so))
 			dn.doc.posting_date = current_date
-			dn.doc.fiscal_year = current_date.year
+			dn.doc.fiscal_year = cstr(current_date.year)
 			dn.insert()
 			try:
 				dn.submit()
@@ -192,7 +192,7 @@
 			mr = webnotes.new_bean("Material Request")
 			mr.doc.material_request_type = "Purchase"
 			mr.doc.transaction_date = current_date
-			mr.doc.fiscal_year = current_date.year
+			mr.doc.fiscal_year = cstr(current_date.year)
 			mr.doclist.append({
 				"doctype": "Material Request Item",
 				"parentfield": "indent_details",
@@ -211,7 +211,7 @@
 			if row[0] != "Total":
 				sq = webnotes.bean(make_supplier_quotation(row[0]))
 				sq.doc.transaction_date = current_date
-				sq.doc.fiscal_year = current_date.year
+				sq.doc.fiscal_year = cstr(current_date.year)
 				sq.insert()
 				sq.submit()
 				webnotes.conn.commit()
@@ -224,7 +224,7 @@
 			if row[0] != "Total":
 				po = webnotes.bean(make_purchase_order(row[0]))
 				po.doc.transaction_date = current_date
-				po.doc.fiscal_year = current_date.year
+				po.doc.fiscal_year = cstr(current_date.year)
 				po.insert()
 				po.submit()
 				webnotes.conn.commit()
@@ -283,7 +283,7 @@
 	try:
 		st = webnotes.bean(make_stock_entry(pro_id, purpose))
 		st.doc.posting_date = current_date
-		st.doc.fiscal_year = current_date.year
+		st.doc.fiscal_year = cstr(current_date.year)
 		for d in st.doclist.get({"parentfield": "mtn_details"}):
 			d.expense_account = "Stock Adjustment - " + company_abbr
 			d.cost_center = "Main - " + company_abbr
@@ -303,7 +303,7 @@
 		"customer": get_random("Customer"),
 		"order_type": "Sales",
 		"transaction_date": current_date,
-		"fiscal_year": current_date.year
+		"fiscal_year": cstr(current_date.year)
 	}])
 	
 	add_random_children(b, {
