diff --git a/build.json b/build.json
index 6efbbc3..70e00d6 100644
--- a/build.json
+++ b/build.json
@@ -23,4 +23,7 @@
 	"public/js/complete_setup.js": [
 		"erpnext/startup/js/complete_setup.js",
 	],
+	"public/js/gantt_task.js": [
+		"erpnext/projects/gantt_task.js",
+	]
 }
\ No newline at end of file
diff --git a/erpnext/accounts/__init__.py b/erpnext/accounts/__init__.py
index c750d25..aa2af62 100644
--- a/erpnext/accounts/__init__.py
+++ b/erpnext/accounts/__init__.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import flt
 from webnotes.model.code import get_obj
diff --git a/erpnext/accounts/doctype/__init__.py b/erpnext/accounts/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/__init__.py
+++ b/erpnext/accounts/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/account/__init__.py b/erpnext/accounts/doctype/account/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/account/__init__.py
+++ b/erpnext/accounts/doctype/account/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js
index d5300c7..d34601b 100644
--- a/erpnext/accounts/doctype/account/account.js
+++ b/erpnext/accounts/doctype/account/account.js
@@ -14,6 +14,47 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+
+// Onload
+// -----------------------------------------
+cur_frm.cscript.onload = function(doc, cdt, cdn) {
+}
+
+cur_frm.cscript.set_breadcrumbs = function(barea) {
+	cur_frm.frm_head.appframe.add_breadcrumb(cur_frm.docname);
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!Accounts Browser/Account">\
+		Chart of Accounts</a>');
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!accounts-home">Accounts</a>');
+}
+
+// Refresh
+// -----------------------------------------
+cur_frm.cscript.refresh = function(doc, cdt, cdn) {
+	cur_frm.toggle_display('account_name', doc.__islocal);
+	
+	// hide fields if group
+	cur_frm.toggle_display(['account_type', 'master_type', 'master_name', 'freeze_account', 
+		'credit_days', 'credit_limit', 'tax_rate'], doc.group_or_ledger=='Ledger')	
+
+	// read-only for root accounts
+  	root_acc = ['Application of Funds (Assets)','Expenses','Income','Source of Funds (Liabilities)'];
+	if(in_list(root_acc, doc.account_name)) {
+		cur_frm.perm = [[1,0,0], [1,0,0]];
+		cur_frm.set_intro("This is a root account and cannot be edited.");
+	} else {
+		// credit days and type if customer or supplier
+		cur_frm.set_intro(null);
+		cur_frm.toggle_display(['credit_days', 'credit_limit'], 
+			in_list(['Customer', 'Supplier'], doc.master_type))
+
+		// hide tax_rate
+		cur_frm.cscript.account_type(doc, cdt, cdn);
+
+		// show / hide convert buttons
+		cur_frm.cscript.hide_unhide_group_ledger(doc);		
+	}
+}
+
 // Fetch parent details
 // -----------------------------------------
 cur_frm.add_fetch('parent_account', 'debit_or_credit', 'debit_or_credit');
@@ -22,47 +63,31 @@
 // Hide tax rate based on account type
 // -----------------------------------------
 cur_frm.cscript.account_type = function(doc, cdt, cdn) {
-  if(doc.account_type == 'Tax') unhide_field(['tax_rate']);
-  else hide_field(['tax_rate']);
-}
-
-// Onload
-// -----------------------------------------
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-  cur_frm.cscript.account_type(doc, cdt, cdn);
-  // hide India specific fields
-  var cp = wn.control_panel;
-  if(cp.country == 'India')
-    unhide_field(['pan_number', 'tds_applicable', 'tds_details', 'tds']);
-  else
-    hide_field(['pan_number', 'tds_applicable', 'tds_details', 'tds']);
-}
-
-// Refresh
-// -----------------------------------------
-cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-  root_acc = ['	Application of Funds (Assets)','Expenses','Income','Source of Funds (Liabilities)'];
-  if(inList(root_acc, doc.account_name))
-    cur_frm.perm = [[1,0,0], [1,0,0]];
-  cur_frm.cscript.hide_unhide_group_ledger(doc);
+	if(doc.group_or_ledger=='Ledger') {
+		cur_frm.toggle_display(['tax_rate'], 
+			doc.account_type == 'Tax');
+		cur_frm.toggle_display(['master_type', 'master_name'], 
+			cstr(doc.account_type)=='');		
+	}
 }
 
 // Hide/unhide group or ledger
 // -----------------------------------------
 cur_frm.cscript.hide_unhide_group_ledger = function(doc) {
-  hide_field(['convert_to_group', 'convert_to_ledger']);
-  if (cstr(doc.group_or_ledger) == 'Group') unhide_field('convert_to_ledger');
-  else if (cstr(doc.group_or_ledger) == 'Ledger') unhide_field('convert_to_group');
+	if (cstr(doc.group_or_ledger) == 'Group') {
+		cur_frm.add_custom_button('Convert to Ledger', 
+			function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet')
+	} 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')
+	}
 }
-
 // Convert group to ledger
 // -----------------------------------------
 cur_frm.cscript.convert_to_ledger = function(doc, cdt, cdn) {
-  $c_obj(make_doclist(cdt,cdn),'convert_group_to_ledger','',function(r,rt) {
-    if(r.message == 1) {
-      doc.group_or_ledger = 'Ledger';
-      refresh_field('group_or_ledger');
-      cur_frm.cscript.hide_unhide_group_ledger(doc);
+  $c_obj(cur_frm.get_doclist(),'convert_group_to_ledger','',function(r,rt) {
+    if(r.message == 1) {  
+	  cur_frm.refresh();
     }
   });
 }
@@ -70,11 +95,9 @@
 // Convert ledger to group
 // -----------------------------------------
 cur_frm.cscript.convert_to_group = function(doc, cdt, cdn) {
-  $c_obj(make_doclist(cdt,cdn),'convert_ledger_to_group','',function(r,rt) {
+  $c_obj(cur_frm.get_doclist(),'convert_ledger_to_group','',function(r,rt) {
     if(r.message == 1) {
-      doc.group_or_ledger = 'Group';
-      refresh_field('group_or_ledger');
-      cur_frm.cscript.hide_unhide_group_ledger(doc);
+	  cur_frm.refresh();
     }
   });
 }
@@ -85,11 +108,13 @@
  if (doc.master_type){
     return 'SELECT `tab'+doc.master_type+'`.name FROM `tab'+doc.master_type+'` WHERE `tab'+doc.master_type+'`.name LIKE "%s" and `tab'+doc.master_type+'`.docstatus != 2 ORDER BY `tab'+doc.master_type+'`.name LIMIT 50';
   }
-  else alert("Please select master type");
 }
 
 // parent account get query
 // -----------------------------------------
 cur_frm.fields_dict['parent_account'].get_query = function(doc){
-  return 'SELECT DISTINCT `tabAccount`.name FROM `tabAccount` WHERE `tabAccount`.group_or_ledger="Group" AND `tabAccount`.docstatus != 2 AND `tabAccount`.company="'+ doc.company+'" AND `tabAccount`.company is not NULL AND `tabAccount`.name LIKE "%s" ORDER BY `tabAccount`.name LIMIT 50';
+  return 'SELECT DISTINCT `tabAccount`.name FROM `tabAccount` WHERE \
+	`tabAccount`.group_or_ledger="Group" AND `tabAccount`.docstatus != 2 AND \
+	`tabAccount`.company="'+ doc.company+'" AND `tabAccount`.company is not NULL AND \
+	`tabAccount`.name LIKE "%s" ORDER BY `tabAccount`.name LIMIT 50';
 }
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 335d47c..bdccf63 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -43,7 +44,6 @@
 		self.doc.name = self.doc.account_name.strip() + ' - ' + company_abbr
 
 	# Get customer/supplier address
-	# ==================================================================
 	def get_address(self):		
 		add=sql("Select address from `tab%s` where name='%s'"%(self.doc.master_type,self.doc.master_name))
 		ret={'address':add[0][0]}
@@ -51,20 +51,17 @@
 
 
 	# check whether master name entered for supplier/customer
-	# ==================================================================
 	def validate_master_name(self):
 		if (self.doc.master_type == 'Customer' or self.doc.master_type == 'Supplier') and not self.doc.master_name:
 			msgprint("Message: Please enter Master Name once the account is created.")
 
 			
 	# Rate is mandatory for tax account	 
-	# ==================================================================
 	def validate_rate_for_tax(self):
 		if self.doc.account_type == 'Tax' and not self.doc.tax_rate:
 			msgprint("Please Enter Rate", raise_exception=1)
 
 	# Fetch Parent Details and validation for account not to be created under ledger
-	# ==================================================================
 	def validate_parent(self):
 		if self.doc.parent_account:
 			par = sql("select name, group_or_ledger, is_pl_account, debit_or_credit from tabAccount where name =%s",self.doc.parent_account)
@@ -81,13 +78,11 @@
 				self.doc.debit_or_credit = par[0][3]
 	
 	# Account name must be unique
-	# ==================================================================
 	def validate_duplicate_account(self):
 		if (self.doc.__islocal or (not self.doc.name)) and sql("select name from tabAccount where account_name=%s and company=%s", (self.doc.account_name, self.doc.company)):
 			msgprint("Account Name already exists, please rename", raise_exception=1)
 				
 	# validate root details
-	# ==================================================================
 	def validate_root_details(self):
 		#does not exists parent
 		if self.doc.account_name in ['Income','Source of Funds', 'Expenses','Application of Funds'] and self.doc.parent_account:
@@ -106,7 +101,6 @@
 			self.doc.is_pl_account = 'No'
 
 	# Convert group to ledger
-	# ==================================================================
 	def convert_group_to_ledger(self):
 		if self.check_if_child_exists():
 			msgprint("Account: %s has existing child. You can not convert this account to ledger" % (self.doc.name), raise_exception=1)
@@ -118,28 +112,28 @@
 			return 1
 
 	# Convert ledger to group
-	# ==================================================================
 	def convert_ledger_to_group(self):
 		if self.check_gle_exists():
-			msgprint("Account with existing transaction can not be converted to group.", raise_exception=1)
+			msgprint("Account with existing transaction can not be converted to group.", 
+				raise_exception=1)
+		elif self.doc.master_type or self.doc.account_type:
+			msgprint("Cannot covert to Group because Master Type or Account Type is selected.", 
+				raise_exception=1)
 		else:
 			self.doc.group_or_ledger = 'Group'
 			self.doc.save()
 			return 1
 
 	# Check if any previous balance exists
-	# ==================================================================
 	def check_gle_exists(self):
 		exists = sql("select name from `tabGL Entry` where account = '%s' and ifnull(is_cancelled, 'No') = 'No'" % (self.doc.name))
 		return exists and exists[0][0] or ''
 
 	# check if child exists
-	# ==================================================================
 	def check_if_child_exists(self):
 		return sql("select name from `tabAccount` where parent_account = %s and docstatus != 2", self.doc.name)
 	
 	# Update balance
-	# ==================================================================
 	def update_balance(self, fy, period_det, flag = 1):
 		# update in all parents
 		for p in period_det:
@@ -147,7 +141,6 @@
 
 
 	# change parent balance
-	# ==================================================================
 	def change_parent_bal(self):
 		period_det = []
 		fy = sql("select name from `tabFiscal Year` where if(ifnull(is_fiscal_year_closed, 'No'),ifnull(is_fiscal_year_closed, 'No'), 'No') = 'No'")
@@ -177,7 +170,6 @@
 
 
 	# VALIDATE
-	# ==================================================================
 	def validate(self): 
 		self.validate_master_name()
 		self.validate_rate_for_tax()
@@ -195,7 +187,6 @@
 			self.change_parent_bal()
 						 
 	# Add current fiscal year balance
-	# ==================================================================
 	def set_year_balance(self):
 		p = sql("select name, start_date, end_date, fiscal_year from `tabPeriod` where docstatus != 2 and period_type in ('Month', 'Year')")
 		for d in p:
@@ -213,29 +204,26 @@
 				ac.save(1)
 
 	# Update Node Set Model
-	# ==================================================================
 	def update_nsm_model(self):
 		import webnotes
 		import webnotes.utils.nestedset
 		webnotes.utils.nestedset.update_nsm(self)
 			
 	# ON UPDATE
-	# ==================================================================
 	def on_update(self):
+		
 		# update nsm
 		self.update_nsm_model()		
 		# Add curret year balance
 		self.set_year_balance()
 
 	# Check user role for approval process
-	# ==================================================================
 	def get_authorized_user(self):
 		# Check logged-in user is authorized
 		if get_value('Global Defaults', None, 'credit_controller') in webnotes.user.get_roles():
 			return 1
 			
 	# Check Credit limit for customer
-	# ==================================================================
 	def check_credit_limit(self, account, company, tot_outstanding):
 		# Get credit limit
 		credit_limit_from = 'Customer'
@@ -252,7 +240,6 @@
 				% (fmt_money(tot_outstanding), account, fmt_money(credit_limit), credit_limit_from), raise_exception=1)
 			
 	# Account with balance cannot be inactive
-	# ==================================================================
 	def check_balance_before_trash(self):
 		if self.check_gle_exists():
 			msgprint("Account with existing transaction (Sales Invoice / Purchase Invoice / Journal Voucher) can not be trashed", raise_exception=1)
@@ -261,20 +248,18 @@
 
 
 	# get current year balance
-	# ==================================================================
 	def get_curr_bal(self):
 		bal = sql("select balance from `tabAccount Balance` where period = '%s' and parent = '%s'" % (get_defaults()['fiscal_year'], self.doc.name),debug=0)
 		return bal and flt(bal[0][0]) or 0
 
 	# On Trash
-	# ==================================================================
 	def on_trash(self): 
 		# Check balance before trash
 		self.check_balance_before_trash()
 		
 		# rebuild tree
-		set(self.doc,'old_parent', '')
-		self.update_nsm_model()
+		from webnotes.utils.nestedset import update_remove_node
+		update_remove_node('Account', self.doc.name)
 
 		# delete all cancelled gl entry of this account
 		sql("delete from `tabGL Entry` where account = %s and ifnull(is_cancelled, 'No') = 'Yes'", self.doc.name)
@@ -283,7 +268,6 @@
 		sql("delete from `tabAccount Balance` where account = %s", self.doc.name)
 
 	# On restore
-	# ==================================================================
 	def on_restore(self):
 		# rebuild tree
 		self.update_nsm_model()
@@ -291,7 +275,6 @@
 		self.set_year_balance()
 	
 	# on rename
-	# ---------
 	def on_rename(self,newdn,olddn):
 		company_abbr = sql("select tc.abbr from `tabAccount` ta, `tabCompany` tc where ta.company = tc.name and ta.name=%s", olddn)[0][0]
 		
diff --git a/erpnext/accounts/doctype/account/account.txt b/erpnext/accounts/doctype/account/account.txt
index ec0ade9..b649c9a 100644
--- a/erpnext/accounts/doctype/account/account.txt
+++ b/erpnext/accounts/doctype/account/account.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:39',
+		'creation': '2012-07-03 13:30:50',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:35:39',
+		'modified': '2012-07-11 13:58:44',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,6 +17,7 @@
 		'allow_trash': 1,
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'An **Account** is heading under which financial and business transactions are carried on. For example, \u201cTravel Expense\u201d is an account, \u201cCustomer Zoe\u201d, \u201cSupplier Mae\u201d are accounts. \n\n**Note:** ERPNext creates accounts for Customers and Suppliers automatically.\n\n### Groups and Ledgers\n\nThere are two main kinds of Accounts in ERPNext - Group and Ledger. Groups can have sub-groups and ledgers within them, whereas ledgers are the leaf nodes of your chart and cannot be further classified.\n\nAccounting Transactions can only be made against Ledger Accounts (not Groups)\n',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'in_create': 1,
@@ -26,7 +27,7 @@
 		'section_style': u'Tray',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 138
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -58,11 +59,11 @@
 
 	# DocPerm
 	{
-		'cancel': 1,
-		'create': 1,
+		'cancel': 0,
+		'create': 0,
 		'doctype': u'DocPerm',
 		'permlevel': 0,
-		'role': u'Accounts User',
+		'role': u'Auditor',
 		'write': 1
 	},
 
@@ -71,6 +72,26 @@
 		'cancel': 0,
 		'create': 0,
 		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Auditor',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 2,
+		'role': u'Auditor',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
 		'permlevel': 0,
 		'role': u'Sales User',
 		'write': 0
@@ -91,6 +112,26 @@
 		'cancel': 0,
 		'create': 0,
 		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Accounts User',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Accounts Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
 		'permlevel': 1,
 		'role': u'Accounts User',
 		'write': 0
@@ -108,16 +149,6 @@
 
 	# DocPerm
 	{
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Accounts Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
 		'cancel': 0,
 		'create': 0,
 		'doctype': u'DocPerm',
@@ -141,7 +172,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'properties',
 		'fieldtype': u'Section Break',
-		'label': u'Properties',
+		'label': u'Account Details',
 		'oldfieldtype': u'Section Break',
 		'permlevel': 0
 	},
@@ -173,20 +204,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'parent_account',
-		'fieldtype': u'Link',
-		'label': u'Parent Account',
-		'oldfieldname': u'parent_account',
-		'oldfieldtype': u'Link',
-		'options': u'Account',
-		'permlevel': 0,
-		'search_index': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'level',
 		'fieldtype': u'Int',
 		'hidden': 1,
@@ -216,26 +233,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'convert_to_group',
-		'fieldtype': u'Button',
-		'label': u'Convert to Group',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'convert_to_ledger',
-		'fieldtype': u'Button',
-		'label': u'Convert to Ledger',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'debit_or_credit',
 		'fieldtype': u'Data',
 		'in_filter': 1,
@@ -263,6 +260,46 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'company',
+		'fieldtype': u'Link',
+		'in_filter': 1,
+		'label': u'Company',
+		'oldfieldname': u'company',
+		'oldfieldtype': u'Link',
+		'options': u'Company',
+		'permlevel': 1,
+		'reqd': 1,
+		'search_index': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'column_break1',
+		'fieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'parent_account',
+		'fieldtype': u'Link',
+		'label': u'Parent Account',
+		'oldfieldname': u'parent_account',
+		'oldfieldtype': u'Link',
+		'options': u'Account',
+		'permlevel': 0,
+		'search_index': 1,
+		'trigger': u'Client'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'Setting Account Type helps in selecting this Account in transactions.',
+		'doctype': u'DocField',
 		'fieldname': u'account_type',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -278,7 +315,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'description': u'If Account Type is "Tax" then the default rate is required.',
+		'description': u'Rate at which this tax is applied',
 		'doctype': u'DocField',
 		'fieldname': u'tax_rate',
 		'fieldtype': u'Currency',
@@ -292,19 +329,12 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break1',
-		'fieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
+		'colour': u'White:FFF',
+		'description': u'If the account is frozen, entries are allowed for the "Account Manager" only.',
 		'doctype': u'DocField',
 		'fieldname': u'freeze_account',
 		'fieldtype': u'Select',
-		'label': u'Freeze Account',
+		'label': u'Frozen',
 		'oldfieldname': u'freeze_account',
 		'oldfieldtype': u'Select',
 		'options': u'No\nYes',
@@ -313,21 +343,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'company',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'Company',
-		'oldfieldname': u'company',
-		'oldfieldtype': u'Link',
-		'options': u'Company',
-		'permlevel': 1,
-		'reqd': 1,
-		'search_index': 1
-	},
-
-	# DocField
-	{
+		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'credit_days',
 		'fieldtype': u'Int',
@@ -354,13 +370,15 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'If this Account represents a Customer, Supplier or Employee, set it here.',
 		'doctype': u'DocField',
 		'fieldname': u'master_type',
 		'fieldtype': u'Select',
 		'label': u'Master Type',
 		'oldfieldname': u'master_type',
 		'oldfieldtype': u'Select',
-		'options': u'\nNA\nSupplier\nCustomer\nEmployee',
+		'options': u'\nSupplier\nCustomer\nEmployee',
 		'permlevel': 0
 	},
 
@@ -374,116 +392,5 @@
 		'oldfieldtype': u'Link',
 		'permlevel': 0,
 		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'tds',
-		'fieldtype': u'Section Break',
-		'label': u'TDS',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'pan_number',
-		'fieldtype': u'Data',
-		'label': u'PAN Number',
-		'oldfieldname': u'pan_number',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'default': u'No',
-		'doctype': u'DocField',
-		'fieldname': u'tds_applicable',
-		'fieldtype': u'Select',
-		'label': u'TDS Applicable',
-		'oldfieldname': u'tds_applicable',
-		'oldfieldtype': u'Select',
-		'options': u'\nYes\nNo',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'tds_details',
-		'fieldtype': u'Table',
-		'label': u'TDS Details',
-		'oldfieldname': u'tds_details',
-		'oldfieldtype': u'Table',
-		'options': u'TDS Detail',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'description': u"Don't delete this field at any cost",
-		'doctype': u'DocField',
-		'fieldname': u'old_parent',
-		'fieldtype': u'Link',
-		'hidden': 1,
-		'label': u'Old Parent',
-		'no_copy': 1,
-		'oldfieldname': u'old_parent',
-		'oldfieldtype': u'Data',
-		'options': u'Account',
-		'permlevel': 0,
-		'report_hide': 1
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u"Don't delete this field at any cost",
-		'doctype': u'DocField',
-		'fieldname': u'lft',
-		'fieldtype': u'Int',
-		'hidden': 1,
-		'in_filter': 1,
-		'label': u'Lft',
-		'no_copy': 1,
-		'oldfieldname': u'lft',
-		'oldfieldtype': u'Int',
-		'permlevel': 3,
-		'print_hide': 1,
-		'report_hide': 1,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u"Don't delete this field at any cost",
-		'doctype': u'DocField',
-		'fieldname': u'rgt',
-		'fieldtype': u'Int',
-		'hidden': 1,
-		'in_filter': 1,
-		'label': u'Rgt',
-		'no_copy': 1,
-		'oldfieldname': u'rgt',
-		'oldfieldtype': u'Int',
-		'permlevel': 3,
-		'print_hide': 1,
-		'report_hide': 1,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'trash_reason',
-		'fieldtype': u'Small Text',
-		'label': u'Trash Reason',
-		'oldfieldname': u'trash_reason',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 1
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/account_balance/__init__.py b/erpnext/accounts/doctype/account_balance/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/account_balance/__init__.py
+++ b/erpnext/accounts/doctype/account_balance/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/bank_reconciliation/__init__.py b/erpnext/accounts/doctype/bank_reconciliation/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/bank_reconciliation/__init__.py
+++ b/erpnext/accounts/doctype/bank_reconciliation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
index 2c228a7..7ac603b 100644
--- a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
+++ b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/bank_reconciliation_detail/__init__.py b/erpnext/accounts/doctype/bank_reconciliation_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/bank_reconciliation_detail/__init__.py
+++ b/erpnext/accounts/doctype/bank_reconciliation_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/budget_control/__init__.py b/erpnext/accounts/doctype/budget_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/budget_control/__init__.py
+++ b/erpnext/accounts/doctype/budget_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/budget_control/budget_control.py b/erpnext/accounts/doctype/budget_control/budget_control.py
index 361e6ab..c088ade 100644
--- a/erpnext/accounts/doctype/budget_control/budget_control.py
+++ b/erpnext/accounts/doctype/budget_control/budget_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/budget_detail/__init__.py b/erpnext/accounts/doctype/budget_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/budget_detail/__init__.py
+++ b/erpnext/accounts/doctype/budget_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/budget_distribution/__init__.py b/erpnext/accounts/doctype/budget_distribution/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/budget_distribution/__init__.py
+++ b/erpnext/accounts/doctype/budget_distribution/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.js b/erpnext/accounts/doctype/budget_distribution/budget_distribution.js
index d7deb9a..c8bfe11 100644
--- a/erpnext/accounts/doctype/budget_distribution/budget_distribution.js
+++ b/erpnext/accounts/doctype/budget_distribution/budget_distribution.js
@@ -20,6 +20,11 @@
       refresh_field('budget_distribution_details');
     }
     
-    $c('runserverobj',args={'method' : 'get_months', 'docs' : compress_doclist(make_doclist(doc.doctype, doc.name))},callback1);
+    $c('runserverobj',args={'method' : 'get_months', 'docs' : 
+		compress_doclist(make_doclist(doc.doctype, doc.name))},callback1);
   }
+}
+
+cur_frm.cscript.refresh = function(doc,cdt,cdn){
+	cur_frm.toggle_display('distribution_id', doc.__islocal);
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.py b/erpnext/accounts/doctype/budget_distribution/budget_distribution.py
index 9468b60..84886cd 100644
--- a/erpnext/accounts/doctype/budget_distribution/budget_distribution.py
+++ b/erpnext/accounts/doctype/budget_distribution/budget_distribution.py
@@ -14,31 +14,21 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
+from webnotes.utils import flt
+from webnotes.model.doc import addchild
+from webnotes.model.doclist import getlist
+from webnotes import msgprint
 
 class DocType:
   def __init__(self,doc,doclist=[]):
     self.doc,self.doclist = doc,doclist
     
   def get_months(self):
-    month_list = ['January','February','March','April','May','June','July','August','September','October','November','December']
+    month_list = ['January','February','March','April','May','June','July','August','September',
+		'October','November','December']
     idx =1
     for m in month_list:
       mnth = addchild(self.doc,'budget_distribution_details','Budget Distribution Detail',1,self.doclist)
@@ -50,9 +40,5 @@
     total = 0
     for d in getlist(self.doclist,'budget_distribution_details'):
       total = flt(total) + flt(d.percentage_allocation)
-    if total > 100:
-      msgprint("Percentage Allocation should not exceed 100%.")
-      raise Exception
-    elif total < 100:
-      msgprint("Percentage Allocation should not recede 100%.")
-      raise Exception
\ No newline at end of file
+    if total != 100:
+      msgprint("Percentage Allocation should be equal to 100%%. Currently it is %s%%" % total, raise_exception=1)
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.txt b/erpnext/accounts/doctype/budget_distribution/budget_distribution.txt
index ca9b869..ab8a6c8 100644
--- a/erpnext/accounts/doctype/budget_distribution/budget_distribution.txt
+++ b/erpnext/accounts/doctype/budget_distribution/budget_distribution.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:41',
+		'creation': '2012-07-03 13:30:50',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:35:41',
+		'modified': '2012-07-11 14:37:30',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -15,6 +15,7 @@
 		'allow_trash': 1,
 		'autoname': u'field:distribution_id',
 		'colour': u'White:FFF',
+		'description': u'**Budget Distribution** helps you distribute your budget across months if you have seasonality in your business.\n\nTo distribute a budget using this distribution, set this **Budget Distribution** in the **Cost Center**',
 		'doctype': 'DocType',
 		'module': u'Accounts',
 		'name': '__common__',
@@ -22,7 +23,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 24
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -108,13 +109,16 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'Name of the Budget Distribution',
 		'doctype': u'DocField',
 		'fieldname': u'distribution_id',
 		'fieldtype': u'Data',
-		'label': u'Distribution ID',
+		'label': u'Distribution Name',
 		'oldfieldname': u'distribution_id',
 		'oldfieldtype': u'Data',
-		'permlevel': 0
+		'permlevel': 0,
+		'reqd': 1
 	},
 
 	# DocField
diff --git a/erpnext/accounts/doctype/budget_distribution_detail/__init__.py b/erpnext/accounts/doctype/budget_distribution_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/budget_distribution_detail/__init__.py
+++ b/erpnext/accounts/doctype/budget_distribution_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.txt b/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.txt
index d0912be..0acfdbc 100644
--- a/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.txt
+++ b/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:41',
+		'creation': '2012-07-03 13:30:47',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:35:41',
+		'modified': '2012-07-11 14:32:16',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -21,7 +21,7 @@
 		'section_style': u'Tray',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 6
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -60,16 +60,5 @@
 		'oldfieldname': u'percentage_allocation',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'aggregate_percentage',
-		'fieldtype': u'Currency',
-		'label': u'Aggregate Percentage',
-		'oldfieldname': u'aggregate_percentage',
-		'oldfieldtype': u'Currency',
-		'permlevel': 2
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/c_form/__init__.py b/erpnext/accounts/doctype/c_form/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/c_form/__init__.py
+++ b/erpnext/accounts/doctype/c_form/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/c_form/c_form.py b/erpnext/accounts/doctype/c_form/c_form.py
index e702c53..a39ab4e 100644
--- a/erpnext/accounts/doctype/c_form/c_form.py
+++ b/erpnext/accounts/doctype/c_form/c_form.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import add_days, cint, cstr, date_diff, default_fields, flt, getdate, now, nowdate
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
diff --git a/erpnext/accounts/doctype/c_form_invoice_detail/__init__.py b/erpnext/accounts/doctype/c_form_invoice_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/c_form_invoice_detail/__init__.py
+++ b/erpnext/accounts/doctype/c_form_invoice_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/cost_center/__init__.py b/erpnext/accounts/doctype/cost_center/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/cost_center/__init__.py
+++ b/erpnext/accounts/doctype/cost_center/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js
index ade4ee8..058ebfb 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center.js
@@ -14,7 +14,29 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
- 
+
+cur_frm.cscript.set_breadcrumbs = function(barea) {
+	cur_frm.frm_head.appframe.add_breadcrumb(cur_frm.docname);
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!Accounts Browser/Cost Center">\
+		Chart of Cost Centers</a>');
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!accounts-home">Accounts</a>');
+}
+
+cur_frm.cscript.refresh = function(doc, cdt, cdn) {
+	var intro_txt = '';
+	cur_frm.toggle_display('cost_center_name', doc.__islocal);
+	cur_frm.toggle_enable(['group_or_ledger', 'company_name'], doc.__islocal);
+
+	if(!doc.__islocal && doc.group_or_ledger=='Group') {
+		intro_txt += '<p><b>Note:</b> This is Cost Center is a <i>Group</i>, \
+			Accounting Entries are not allowed against groups.</p>';
+	}
+
+	cur_frm.cscript.hide_unhide_group_ledger(doc);
+	
+	cur_frm.toggle_display('sb1', doc.group_or_ledger=='Ledger')
+	cur_frm.set_intro(intro_txt);
+}
 
 //Account filtering for cost center
 cur_frm.fields_dict['budget_details'].grid.get_field('account').get_query = function(doc) {
@@ -38,39 +60,25 @@
 	get_server_fields('get_abbr','','',doc,cdt,cdn,1);
 }
 
-//onload if cost center is group
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-	 
-	if(!doc.__islocal && doc.docstatus == 0){
-		get_field(doc.doctype,'group_or_ledger',doc.name).permlevel = 1;
-		refresh_field('group_or_ledger');
-		get_field(doc.doctype,'company_name',doc.name).permlevel = 1;
-		refresh_field('company_name');
-	}
- 
-}
-
-cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-	cur_frm.cscript.hide_unhide_group_ledger(doc);
-}
-
 
 // Hide/unhide group or ledger
 // -----------------------------------------
 cur_frm.cscript.hide_unhide_group_ledger = function(doc) {
-	hide_field(['convert_to_group', 'convert_to_ledger']);
-	if (cstr(doc.group_or_ledger) == 'Group') unhide_field('convert_to_ledger');
-	else if (cstr(doc.group_or_ledger) == 'Ledger') unhide_field('convert_to_group');
+	if (cstr(doc.group_or_ledger) == 'Group') {
+		cur_frm.add_custom_button('Convert to Ledger', 
+			function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet')
+	} 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')
+	}
 }
 
 // Convert group to ledger
 // -----------------------------------------
 cur_frm.cscript.convert_to_ledger = function(doc, cdt, cdn) {
-	$c_obj(make_doclist(cdt,cdn),'convert_group_to_ledger','',function(r,rt) {
+	$c_obj(cur_frm.get_doclist(),'convert_group_to_ledger','',function(r,rt) {
 		if(r.message == 1) {
-			doc.group_or_ledger = 'Ledger';
-			refresh_field('group_or_ledger');
-			cur_frm.cscript.hide_unhide_group_ledger(doc);
+			cur_frm.refresh();
 		}
 	});
 }
@@ -78,11 +86,9 @@
 // Convert ledger to group
 // -----------------------------------------
 cur_frm.cscript.convert_to_group = function(doc, cdt, cdn) {
-	$c_obj(make_doclist(cdt,cdn),'convert_ledger_to_group','',function(r,rt) {
+	$c_obj(cur_frm.get_doclist(),'convert_ledger_to_group','',function(r,rt) {
 		if(r.message == 1) {
-			doc.group_or_ledger = 'Group';
-			refresh_field('group_or_ledger');
-			cur_frm.cscript.hide_unhide_group_ledger(doc);
+			cur_frm.refresh();
 		}
 	});
 }
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/erpnext/accounts/doctype/cost_center/cost_center.py
index 83ad9d2..57d9a29 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.py
+++ b/erpnext/accounts/doctype/cost_center/cost_center.py
@@ -14,26 +14,14 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
+from webnotes.model.doclist import getlist
+from webnotes import msgprint
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes.utils.nestedset import DocTypeNestedSet
 
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
-
-class DocType:
+class DocType(DocTypeNestedSet):
 	def __init__(self,d,dl):
 		self.doc, self.doclist = d,dl
 		self.nsm_parent_field = 'parent_cost_center'
@@ -41,9 +29,9 @@
 	def autoname(self):
 		self.doc.name = self.doc.cost_center_name + ' - ' + self.doc.company_abbr		
 			
-	#-------------------------------------------------------------------------
 	def get_abbr(self):
-		abbr = sql("select abbr from tabCompany where company_name='%s'"%(self.doc.company_name))[0][0] or ''
+		abbr = webnotes.conn.sql("select abbr from tabCompany where company_name=%s", 
+			self.doc.company_name)[0][0] or ''
 		ret = {
 			'company_abbr'	: abbr
 		}
@@ -56,7 +44,6 @@
 		if self.doc.cost_center_name != 'Root' and not self.doc.parent_cost_center:
 			msgprint("Please enter parent cost center", raise_exception=1)
 		
-	#-------------------------------------------------------------------------
 	def convert_group_to_ledger(self):
 		if self.check_if_child_exists():
 			msgprint("Cost Center: %s has existing child. You can not convert this cost center to ledger" % (self.doc.name), raise_exception=1)
@@ -67,7 +54,6 @@
 			self.doc.save()
 			return 1
 			
-	#-------------------------------------------------------------------------
 	def convert_ledger_to_group(self):
 		if self.check_gle_exists():
 			msgprint("Cost Center with existing transaction can not be converted to group.", raise_exception=1)
@@ -76,54 +62,31 @@
 			self.doc.save()
 			return 1
 
-	#-------------------------------------------------------------------------
 	def check_gle_exists(self):
-		return sql("select name from `tabGL Entry` where cost_center = %s and ifnull(is_cancelled, 'No') = 'No'", (self.doc.name))
+		return webnotes.conn.sql("select name from `tabGL Entry` where cost_center = %s and \
+			ifnull(is_cancelled, 'No') = 'No'", (self.doc.name))
 		
-		
-	#-------------------------------------------------------------------------
 	def check_if_child_exists(self):
-		return sql("select name from `tabCost Center` where parent_cost_center = %s and docstatus != 2", self.doc.name)
-
+		return webnotes.conn.sql("select name from `tabCost Center` where \
+			parent_cost_center = %s and docstatus != 2", self.doc.name)
 
 	def validate_budget_details(self):
 		check_acc_list = []
 		for d in getlist(self.doclist, 'budget_details'):
+			if self.doc.group_or_ledger=="Group":
+				msgprint("Budget cannot be set for Group Cost Centers", raise_exception=1)
+				
 			if [d.account, d.fiscal_year] in check_acc_list:
-				msgprint("Account " + cstr(d.account) + "has been entered more than once for fiscal year " + cstr(d.fiscal_year), raise_exception=1)
+				msgprint("Account " + d.account + "has been entered more than once for fiscal year " + d.fiscal_year, raise_exception=1)
 			else: 
 				check_acc_list.append([d.account, d.fiscal_year])
-		
 
-	#-------------------------------------------------------------------------
 	def validate(self):
 		"""
 			Cost Center name must be unique
 		"""
-		if (self.doc.__islocal or not self.doc.name) and sql("select name from `tabCost Center` where cost_center_name = %s and company_name=%s", (self.doc.cost_center_name, self.doc.company_name)):
+		if (self.doc.__islocal or not self.doc.name) and webnotes.conn.sql("select name from `tabCost Center` where cost_center_name = %s and company_name=%s", (self.doc.cost_center_name, self.doc.company_name)):
 			msgprint("Cost Center Name already exists, please rename", raise_exception=1)
 			
 		self.validate_mandatory()
 		self.validate_budget_details()
-			
-	#-------------------------------------------------------------------------
-	def update_nsm_model(self):
-		"""
-			update Nested Set Model
-		"""
-		import webnotes.utils.nestedset
-		webnotes.utils.nestedset.update_nsm(self)
-			
-	#-------------------------------------------------------------------------
-	def on_update(self):
-		self.update_nsm_model()
-		
-	# On Trash
-	#-------------------------------------------------------------------------
-	def on_trash(self):
-		if self.check_if_child_exists():
-			msgprint("Child exists for this cost center. You can not trash this account.", raise_exception=1)			
-			
-		# rebuild tree
-		set(self.doc,'old_parent', '')
-		self.update_nsm_model()
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.txt b/erpnext/accounts/doctype/cost_center/cost_center.txt
index b02d909..df65584 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.txt
+++ b/erpnext/accounts/doctype/cost_center/cost_center.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:41',
+		'creation': '2012-07-03 13:30:47',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:35:41',
+		'modified': '2012-07-11 14:41:39',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -18,6 +18,7 @@
 		'autoname': u'field:cost_center_name',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'**Chart of Accounts** is mainly for reporting information for governmental purposes and less for how business actually performs. \n\nMost businesses have multiple activities like different product lines, market segments, areas of business that share some common overheads but should ideally have their own structure to report whether they are profitable or not. For this purpose, there is an alternate structure, called the **Cost Centers**.\n\nA tree of **Cost Centers** to cab be designed to reflect the different units of an organization. Each Income / Expense entry is also tagged against a **Cost Center** and hence you can get Profit and Loss against a **Cost Center** too.\n\n### Budgeting\n\n**Cost Centers** can be used for budgeting purposes too. A budget can be set against each **Account** and the system will either stop, warn or ignore the budget based on the settings in the **Company** master.\n\nBudgets can also be distributed seasonally using **Budget Distribution**.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'in_create': 1,
@@ -27,7 +28,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 109
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -61,6 +62,42 @@
 		'cancel': 0,
 		'create': 0,
 		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Accounts Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Accounts Manager',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Accounts User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
 		'permlevel': 0,
 		'role': u'Accounts User',
 		'submit': 0,
@@ -84,40 +121,13 @@
 		'role': u'All'
 	},
 
-	# DocPerm
+	# DocField
 	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Accounts Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Accounts Manager',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Accounts User',
-		'submit': 0,
-		'write': 0
+		'doctype': u'DocField',
+		'fieldname': u'sb0',
+		'fieldtype': u'Section Break',
+		'label': u'Cost Center Details',
+		'permlevel': 0
 	},
 
 	# DocField
@@ -148,7 +158,7 @@
 
 	# DocField
 	{
-		'description': u'Select company name first.',
+		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'parent_cost_center',
 		'fieldtype': u'Link',
@@ -178,9 +188,11 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'company_abbr',
 		'fieldtype': u'Data',
+		'hidden': 1,
 		'label': u'Company Abbr',
 		'oldfieldname': u'company_abbr',
 		'oldfieldtype': u'Data',
@@ -189,6 +201,15 @@
 
 	# DocField
 	{
+		'doctype': u'DocField',
+		'fieldname': u'cb0',
+		'fieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'group_or_ledger',
@@ -209,27 +230,18 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
+		'description': u'Define Budget for this Cost Center. To set budget action, see <a href="#!List/Company">Company Master</a>',
 		'doctype': u'DocField',
-		'fieldname': u'convert_to_group',
-		'fieldtype': u'Button',
-		'label': u'Convert to Group',
-		'permlevel': 0,
-		'trigger': u'Client'
+		'fieldname': u'sb1',
+		'fieldtype': u'Section Break',
+		'label': u'Budget',
+		'permlevel': 0
 	},
 
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'convert_to_ledger',
-		'fieldtype': u'Button',
-		'label': u'Convert to Ledger',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
+		'description': u'Select Budget Distribution, if you want to track based on seasonality.',
 		'doctype': u'DocField',
 		'fieldname': u'distribution_id',
 		'fieldtype': u'Link',
@@ -242,6 +254,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'Add rows to set annual budgets on Accounts.',
 		'doctype': u'DocField',
 		'fieldname': u'budget_details',
 		'fieldtype': u'Table',
diff --git a/erpnext/accounts/doctype/fiscal_year/__init__.py b/erpnext/accounts/doctype/fiscal_year/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/fiscal_year/__init__.py
+++ b/erpnext/accounts/doctype/fiscal_year/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
index 6a03bf7..936037c 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js
@@ -1,7 +1,3 @@
 cur_frm.cscript.refresh = function(doc, dt, dn) {
-	if (doc.__islocal) {
-		hide_field(['repost_account_balances', 'repost_voucher_outstanding']);
-		set_multiple(dt, dn, {'is_fiscal_year_closed': 'No'});
-	}
-	else unhide_field(['repost_account_balances', 'repost_voucher_outstanding']);
+	cur_frm.toggle_enable('year_start_date', doc.__islocal)
 }
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
index a44b756..17027f0 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -204,9 +205,6 @@
 		if sql("select name from `tabFiscal Year` where year_start_date < %s", self.doc.year_start_date) and not self.doc.past_year:
 			msgprint("Please enter Past Year", raise_exception=1)
 
-		if not self.doc.is_fiscal_year_closed:
-			self.doc.is_fiscal_year_closed = 'No'
-
 
 	# on update
 	def on_update(self):
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.txt b/erpnext/accounts/doctype/fiscal_year/fiscal_year.txt
index ae4c5a0..68dbdb2 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.txt
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:41',
+		'creation': '2012-07-03 13:30:47',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:35:41',
+		'modified': '2012-07-11 14:56:41',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,6 +17,7 @@
 		'autoname': u'field:year',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'**Fiscal Year** represents a Financial Year. All accounting entries and other major transactions are tracked against **Fiscal Year**.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'module': u'Accounts',
@@ -24,7 +25,7 @@
 		'section_style': u'Tabbed',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 57
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -59,14 +60,14 @@
 
 	# DocPerm
 	{
-		'doctype': u'DocPerm'
+		'amend': 0,
+		'doctype': u'DocPerm',
+		'submit': 0
 	},
 
 	# DocPerm
 	{
-		'amend': 0,
-		'doctype': u'DocPerm',
-		'submit': 0
+		'doctype': u'DocPerm'
 	},
 
 	# DocField
@@ -74,7 +75,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'year_details',
 		'fieldtype': u'Section Break',
-		'label': u'Year Details',
+		'label': u'Fiscal Year Details',
 		'oldfieldtype': u'Section Break',
 		'permlevel': 0
 	},
@@ -92,6 +93,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'For e.g. 2012, 2012-13',
 		'doctype': u'DocField',
 		'fieldname': u'year',
 		'fieldtype': u'Data',
@@ -105,18 +108,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'abbreviation',
-		'fieldtype': u'Data',
-		'label': u'Abbreviation',
-		'oldfieldname': u'abbreviation',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'year_start_date',
 		'fieldtype': u'Date',
 		'label': u'Year Start Date',
@@ -128,6 +119,9 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'default': u'No',
+		'description': u'Entries are not allowed against this Fiscal Year if the year is closed.',
 		'doctype': u'DocField',
 		'fieldname': u'is_fiscal_year_closed',
 		'fieldtype': u'Select',
@@ -137,65 +131,5 @@
 		'options': u'\nNo\nYes',
 		'permlevel': 0,
 		'reqd': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u"Click on the button below to reset balances from your previous year's closing and repost your balances. You can use this if your previous year balance sheet has been changed and you wish to update your current accounts.",
-		'doctype': u'DocField',
-		'fieldname': u'repost_accounts',
-		'fieldtype': u'Section Break',
-		'label': u'Repost Accounts',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'past_year',
-		'fieldtype': u'Select',
-		'label': u'Past Year',
-		'oldfieldname': u'past_year',
-		'oldfieldtype': u'Select',
-		'options': u'link:Fiscal Year',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'company',
-		'fieldtype': u'Link',
-		'in_filter': 0,
-		'label': u'Company',
-		'oldfieldname': u'company',
-		'oldfieldtype': u'Link',
-		'options': u'Company',
-		'permlevel': 0,
-		'search_index': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'repost_account_balances',
-		'fieldtype': u'Button',
-		'label': u'Repost Account Balances',
-		'oldfieldtype': u'Button',
-		'options': u'repost',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'repost_voucher_outstanding',
-		'fieldtype': u'Button',
-		'label': u'Repost Voucher Outstanding',
-		'oldfieldtype': u'Button',
-		'options': u'update_voucher_outstanding',
-		'permlevel': 0
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/form_16a/__init__.py b/erpnext/accounts/doctype/form_16a/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/form_16a/__init__.py
+++ b/erpnext/accounts/doctype/form_16a/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/form_16a/form_16a.py b/erpnext/accounts/doctype/form_16a/form_16a.py
index fa2adb1..a254ef4 100644
--- a/erpnext/accounts/doctype/form_16a/form_16a.py
+++ b/erpnext/accounts/doctype/form_16a/form_16a.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/form_16a_ack_detail/__init__.py b/erpnext/accounts/doctype/form_16a_ack_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/form_16a_ack_detail/__init__.py
+++ b/erpnext/accounts/doctype/form_16a_ack_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/form_16a_tax_detail/__init__.py b/erpnext/accounts/doctype/form_16a_tax_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/form_16a_tax_detail/__init__.py
+++ b/erpnext/accounts/doctype/form_16a_tax_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/gl_control/__init__.py b/erpnext/accounts/doctype/gl_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/gl_control/__init__.py
+++ b/erpnext/accounts/doctype/gl_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/gl_control/gl_control.py b/erpnext/accounts/doctype/gl_control/gl_control.py
index 5853132..2acb5ef 100644
--- a/erpnext/accounts/doctype/gl_control/gl_control.py
+++ b/erpnext/accounts/doctype/gl_control/gl_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -124,6 +125,7 @@
 			ac.fields[d] = arg[d]
 		ac.old_parent = ''
 		ac_obj = get_obj(doc=ac)
+		ac_obj.doc.freeze_account='No'
 		ac_obj.validate()
 		ac_obj.doc.save(1)
 		ac_obj.on_update()
@@ -663,4 +665,4 @@
 
 	msg = hd + tbl + totals
 	recipients = new_rv.doc.notification_email_address.replace('\n', '').replace(' ', '').split(",")
-	sendmail(recipients, subject=subject, msg = msg)
\ No newline at end of file
+	sendmail(recipients, subject=subject, msg = msg)
diff --git a/erpnext/accounts/doctype/gl_entry/__init__.py b/erpnext/accounts/doctype/gl_entry/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/gl_entry/__init__.py
+++ b/erpnext/accounts/doctype/gl_entry/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index 775d222..85670ab 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/journal_voucher/__init__.py b/erpnext/accounts/doctype/journal_voucher/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/journal_voucher/__init__.py
+++ b/erpnext/accounts/doctype/journal_voucher/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index 7fed129..1c01700 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import cint, cstr, flt, fmt_money, formatdate, getTraceback, get_defaults, getdate, has_common, month_name, now, nowdate, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/journal_voucher_detail/__init__.py b/erpnext/accounts/doctype/journal_voucher_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/journal_voucher_detail/__init__.py
+++ b/erpnext/accounts/doctype/journal_voucher_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/lease_agreement/__init__.py b/erpnext/accounts/doctype/lease_agreement/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/lease_agreement/__init__.py
+++ b/erpnext/accounts/doctype/lease_agreement/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/lease_agreement/lease_agreement.py b/erpnext/accounts/doctype/lease_agreement/lease_agreement.py
index 1da2f05..f5f444c 100644
--- a/erpnext/accounts/doctype/lease_agreement/lease_agreement.py
+++ b/erpnext/accounts/doctype/lease_agreement/lease_agreement.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import make_autoname, Document, addchild
 from webnotes import msgprint
diff --git a/erpnext/accounts/doctype/lease_installment/__init__.py b/erpnext/accounts/doctype/lease_installment/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/lease_installment/__init__.py
+++ b/erpnext/accounts/doctype/lease_installment/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/mis_control/__init__.py b/erpnext/accounts/doctype/mis_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/mis_control/__init__.py
+++ b/erpnext/accounts/doctype/mis_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/mis_control/mis_control.py b/erpnext/accounts/doctype/mis_control/mis_control.py
index 06a9491..f32b3e6 100644
--- a/erpnext/accounts/doctype/mis_control/mis_control.py
+++ b/erpnext/accounts/doctype/mis_control/mis_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/mode_of_payment/__init__.py b/erpnext/accounts/doctype/mode_of_payment/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/mode_of_payment/__init__.py
+++ b/erpnext/accounts/doctype/mode_of_payment/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/multi_ledger_report/__init__.py b/erpnext/accounts/doctype/multi_ledger_report/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/accounts/doctype/multi_ledger_report/__init__.py
+++ b/erpnext/accounts/doctype/multi_ledger_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.py b/erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.py
index 864198f..53d011f 100755
--- a/erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.py
+++ b/erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import add_days, cint, cstr, flt, getdate
 from webnotes.model.doclist import getlist
diff --git a/erpnext/accounts/doctype/multi_ledger_report_detail/__init__.py b/erpnext/accounts/doctype/multi_ledger_report_detail/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/accounts/doctype/multi_ledger_report_detail/__init__.py
+++ b/erpnext/accounts/doctype/multi_ledger_report_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py
+++ b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
index d615013..d28f89b 100644
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
+++ b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_ir.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_ir.py
index d990b18..92c9e78 100644
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_ir.py
+++ b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_ir.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import unittest
 import webnotes
 
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py
+++ b/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/period_closing_voucher/__init__.py b/erpnext/accounts/doctype/period_closing_voucher/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/__init__.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
index f4cf47d..12601d2 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/pos_setting/__init__.py b/erpnext/accounts/doctype/pos_setting/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/pos_setting/__init__.py
+++ b/erpnext/accounts/doctype/pos_setting/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/pos_setting/pos_setting.py b/erpnext/accounts/doctype/pos_setting/pos_setting.py
index c1dbf2b..a485be9 100755
--- a/erpnext/accounts/doctype/pos_setting/pos_setting.py
+++ b/erpnext/accounts/doctype/pos_setting/pos_setting.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/pos_setting/pos_setting.txt b/erpnext/accounts/doctype/pos_setting/pos_setting.txt
index b1b90e6..49ab1d3 100755
--- a/erpnext/accounts/doctype/pos_setting/pos_setting.txt
+++ b/erpnext/accounts/doctype/pos_setting/pos_setting.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:46',
+		'creation': '2012-06-11 12:09:53',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:35:46',
+		'modified': '2012-07-16 16:27:51',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -22,7 +22,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 33
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -52,37 +52,6 @@
 		'name': u'POS Setting'
 	},
 
-	# DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'role': u'System Manager',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'role': u'System Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'role': u'Accounts Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'role': u'Accounts User'
-	},
-
 	# DocField
 	{
 		'doctype': u'DocField',
@@ -136,7 +105,7 @@
 		'default': u'1',
 		'doctype': u'DocField',
 		'fieldname': u'conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Conversion Rate',
 		'oldfieldname': u'conversion_rate',
 		'oldfieldtype': u'Currency',
@@ -279,5 +248,36 @@
 		'oldfieldname': u'select_print_heading',
 		'oldfieldtype': u'Select',
 		'options': u'link:Print Heading'
+	},
+
+	# DocPerm
+	{
+		'create': 1,
+		'doctype': u'DocPerm',
+		'role': u'System Manager',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'create': 1,
+		'doctype': u'DocPerm',
+		'role': u'System Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'create': 1,
+		'doctype': u'DocPerm',
+		'role': u'Accounts Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'role': u'Accounts User'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/purchase_invoice/__init__.py b/erpnext/accounts/doctype/purchase_invoice/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/purchase_invoice/__init__.py
+++ b/erpnext/accounts/doctype/purchase_invoice/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 668d2ef..fe65e95 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt
index 3c2143a..1f0e750 100755
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-13 11:56:17',
+		'creation': '2012-06-11 12:09:53',
 		'docstatus': 0,
-		'modified': '2012-05-10 14:02:05',
+		'modified': '2012-07-16 16:26:02',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -54,81 +54,6 @@
 		'name': u'Purchase Invoice'
 	},
 
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Accounts Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Accounts Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Accounts User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Purchase User'
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Purchase User',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Accounts User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'match': u'supplier',
-		'permlevel': 0,
-		'role': u'Supplier'
-	},
-
 	# DocField
 	{
 		'allow_on_submit': 0,
@@ -381,7 +306,7 @@
 		'description': u"The rate at which Bill Currency is converted into company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Bill Conversion Rate',
 		'oldfieldname': u'conversion_rate',
 		'oldfieldtype': u'Currency',
@@ -1193,5 +1118,80 @@
 		'no_copy': 1,
 		'permlevel': 0,
 		'print_hide': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Accounts Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Accounts Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Accounts User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Purchase User'
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Purchase User',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Accounts User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'match': u'supplier',
+		'permlevel': 0,
+		'role': u'Supplier'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/purchase_invoice_advance/__init__.py b/erpnext/accounts/doctype/purchase_invoice_advance/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/purchase_invoice_advance/__init__.py
+++ b/erpnext/accounts/doctype/purchase_invoice_advance/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/purchase_invoice_item/__init__.py b/erpnext/accounts/doctype/purchase_invoice_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/purchase_invoice_item/__init__.py
+++ b/erpnext/accounts/doctype/purchase_invoice_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges/__init__.py b/erpnext/accounts/doctype/purchase_taxes_and_charges/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges/__init__.py
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt b/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
index 74fd697..096050d 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:46',
+		'creation': '2012-07-03 13:30:49',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:35:46',
+		'modified': '2012-07-12 14:08:27',
 		'modified_by': u'Administrator',
 		'owner': u'wasim@webnotestech.com'
 	},
@@ -24,7 +24,7 @@
 		'section_style': u'Tray',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 13
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -45,34 +45,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'category',
-		'fieldtype': u'Select',
-		'label': u'Category',
-		'oldfieldname': u'category',
-		'oldfieldtype': u'Select',
-		'options': u'\nFor Total\nFor Valuation\nFor Both',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'default': u'Add',
-		'doctype': u'DocField',
-		'fieldname': u'add_deduct_tax',
-		'fieldtype': u'Select',
-		'label': u'Add or Deduct',
-		'oldfieldname': u'add_deduct_tax',
-		'oldfieldtype': u'Select',
-		'options': u'\nAdd\nDeduct',
-		'permlevel': 0,
-		'reqd': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'charge_type',
 		'fieldtype': u'Select',
 		'label': u'Type',
@@ -87,46 +59,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'row_id',
-		'fieldtype': u'Data',
-		'hidden': 0,
-		'label': u'Enter Row',
-		'oldfieldname': u'row_id',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'item_wise_tax_detail',
-		'fieldtype': u'Small Text',
-		'hidden': 1,
-		'label': u'Item Wise Tax Detail ',
-		'oldfieldname': u'item_wise_tax_detail',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 1,
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'description',
-		'fieldtype': u'Small Text',
-		'label': u'Description',
-		'oldfieldname': u'description',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 0,
-		'reqd': 1,
-		'width': u'300px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'account_head',
 		'fieldtype': u'Link',
 		'label': u'Account Head',
@@ -154,6 +86,19 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'description',
+		'fieldtype': u'Small Text',
+		'label': u'Description',
+		'oldfieldname': u'description',
+		'oldfieldtype': u'Small Text',
+		'permlevel': 0,
+		'reqd': 1,
+		'width': u'300px'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'rate',
 		'fieldtype': u'Currency',
 		'label': u'Rate',
@@ -182,7 +127,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'total',
 		'fieldtype': u'Currency',
-		'label': u'Aggregate Total',
+		'label': u'Total',
 		'oldfieldname': u'total',
 		'oldfieldtype': u'Currency',
 		'permlevel': 1
@@ -191,6 +136,64 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'row_id',
+		'fieldtype': u'Data',
+		'hidden': 0,
+		'label': u'Enter Row',
+		'oldfieldname': u'row_id',
+		'oldfieldtype': u'Data',
+		'permlevel': 0,
+		'trigger': u'Client'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'For Both',
+		'doctype': u'DocField',
+		'fieldname': u'category',
+		'fieldtype': u'Select',
+		'label': u'Consider Tax or Charge for',
+		'oldfieldname': u'category',
+		'oldfieldtype': u'Select',
+		'options': u'Valuation and Total\nValuation\nTotal',
+		'permlevel': 0,
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'default': u'Add',
+		'doctype': u'DocField',
+		'fieldname': u'add_deduct_tax',
+		'fieldtype': u'Select',
+		'label': u'Add or Deduct',
+		'oldfieldname': u'add_deduct_tax',
+		'oldfieldtype': u'Select',
+		'options': u'Add\nDeduct',
+		'permlevel': 0,
+		'reqd': 1,
+		'trigger': u'Client'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'doctype': u'DocField',
+		'fieldname': u'item_wise_tax_detail',
+		'fieldtype': u'Small Text',
+		'hidden': 1,
+		'label': u'Item Wise Tax Detail ',
+		'oldfieldname': u'item_wise_tax_detail',
+		'oldfieldtype': u'Small Text',
+		'permlevel': 1,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'parenttype',
 		'fieldtype': u'Data',
 		'hidden': 1,
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/__init__.py b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/__init__.py
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
index d3a32e9..fa2c836 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
@@ -22,7 +22,7 @@
 }
 
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-   
+   cur_frm.set_footnote(wn.markdown(cur_frm.meta.description));
 }
 
 cur_frm.pformat.purchase_tax_details= function(doc){
@@ -74,7 +74,7 @@
     alert("Please select Category first");
     d.add_deduct_tax = '';
   }
-  else if(d.category != 'For Total' && d.add_deduct_tax == 'Deduct'){
+  else if(d.category != 'Total' && d.add_deduct_tax == 'Deduct'){
     alert("You cannot Deduct when category is for valuation or for both(i.e total and valuation)");
     d.add_deduct_tax = '';
   }
@@ -91,8 +91,8 @@
     alert("You cannot select Charge Type as 'On Previous Row Amount' or 'On Previous Row Total' for first row");
     d.charge_type = '';
   }
-  else if((d.category == 'For Valuation' || d.category == 'For Both') && (d.charge_type == 'On Previous Row Amount' || d.charge_type == 'On Previous Row Total')){
-    alert("You cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for valuation. You can select only 'For Total' option for previous row amount or previous row total")
+  else if((d.category == 'Valuation' || d.category == 'Valuation and Total') && (d.charge_type == 'On Previous Row Amount' || d.charge_type == 'On Previous Row Total')){
+    alert("You cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for valuation. You can select only 'Total' option for previous row amount or previous row total")
     d.charge_type = '';
   }
   validated = false;
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
index a3cc0b3..7c2ca7e 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
index 1ecac40..8add7af 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:35:51',
+		'creation': '2012-07-03 13:30:50',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:35:51',
+		'modified': '2012-07-12 14:10:35',
 		'modified_by': u'Administrator',
 		'owner': u'wasim@webnotestech.com'
 	},
@@ -17,6 +17,7 @@
 		'autoname': u'field:title',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'Standard tax template that can be applied to all Purchase Transactions. This template can contain list of tax heads and also other expense heads like "Shipping", "Insurance", "Handling" etc.\n\n#### Note\n\nThe tax rate you define here will be the standard tax rate for all **Items**. If there are **Items** that have different rates, they must be added in the **Item Tax** table in the **Item** master.\n\n#### Description of Columns\n\n1. Calculation Type: \n    - This can be on **Net Total** (that is the sum of basic amount).\n    - **On Previous Row Total / Amount** (for cumulative taxes or charges). If you select this option, the tax will be applied as a percentage of the previous row (in the tax table) amount or total.\n    - **Actual** (as mentioned).\n2. Account Head: The Account ledger under which this tax will be booked\n3. Cost Center: If the tax / charge is an income (like shipping) or expense it needs to be booked against a Cost Center.\n4. Description: Description of the tax (that will be printed in invoices / quotes).\n5. Rate: Tax rate.\n6. Amount: Tax amount.\n7. Total: Cumulative total to this point.\n8. Enter Row: If based on "Previous Row Total" you can select the row number which will be taken as a base for this calculation (default is the previous row).\n9. Consider Tax or Charge for: In this section you can specify if the tax / charge is only for valuation (not a part of total) or only for total (does not add value to the item) or for both.\n10. Add or Deduct: Whether you want to add or deduct the tax.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'module': u'Accounts',
@@ -24,7 +25,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 18
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -109,22 +110,22 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'company',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'Company',
-		'options': u'Company',
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'purchase_tax_details',
 		'fieldtype': u'Table',
 		'label': u'Purchase Taxes and Charges',
 		'oldfieldname': u'purchase_tax_details',
 		'oldfieldtype': u'Table',
 		'options': u'Purchase Taxes and Charges'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'company',
+		'fieldtype': u'Link',
+		'in_filter': 1,
+		'label': u'Company',
+		'options': u'Company',
+		'reqd': 1
 	}
-]
+]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/sales_invoice/__init__.py b/erpnext/accounts/doctype/sales_invoice/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/sales_invoice/__init__.py
+++ b/erpnext/accounts/doctype/sales_invoice/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index ec327c7..97848a3 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr,date_diff, default_fields, flt, fmt_money, formatdate, generate_hash,getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common,month_name, now, nowdate, replace_newlines, sendmail, set_default,str_esc_quote, user_format, validate_email_add
@@ -40,18 +41,12 @@
 		self.fname = 'entries'
 
 
-	# Autoname
-	# ---------
 	def autoname(self):
 		self.doc.name = make_autoname(self.doc.naming_series+ '.#####')
 
 
-
-# ********************************* Trigger Functions ******************************
-
-	#Set retail related fields from pos settings
-	#-------------------------------------------------------------------------
 	def set_pos_fields(self):
+		"""Set retail related fields from pos settings"""
 		pos = webnotes.conn.sql("select * from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (session['user'], self.doc.company), as_dict=1)
 		if not pos:
 			pos = webnotes.conn.sql("select * from `tabPOS Setting` where ifnull(user,'') = '' and company = '%s'" % (self.doc.company), as_dict=1)
@@ -79,9 +74,8 @@
 			if self.doc.charge:		self.get_other_charges()
 
 
-	# Set default values related to pos for previously created sales invoice.
-	# -------------------------------------------------------------------------- 
 	def set_pos_item_values(self):
+		"""Set default values related to pos for previously created sales invoice."""
 		if cint(self.doc.is_pos) ==1:
 			dtl = webnotes.conn.sql("select income_account, warehouse, cost_center from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (session['user'], self.doc.company), as_dict=1)
 			if not dtl:
@@ -94,10 +88,8 @@
 				d.warehouse = item and item[0]['default_warehouse'] or dtl and dtl[0]['warehouse'] or d.warehouse
 
 
-			
-	# Get Account Head to which amount needs to be Debited based on Customer
-	# ----------------------------------------------------------------------
 	def get_customer_account(self):
+		"""Get Account Head to which amount needs to be Debited based on Customer"""
 		if not self.doc.company:
 			msgprint("Please select company first and re-select the customer after doing so", raise_exception=1)
 			
@@ -115,10 +107,8 @@
 		return acc_head and {'debit_to' : acc_head} or {}
 
 
-
-	# Set Due Date = Posting Date + Credit Days
-	# -----------------------------------------
 	def get_cust_and_due_date(self):
+		"""Set Due Date = Posting Date + Credit Days"""
 		credit_days = 0
 		if self.doc.debit_to:
 			credit_days = webnotes.conn.sql("select credit_days from `tabAccount` where name='%s' and docstatus != 2" % self.doc.debit_to)
@@ -134,9 +124,8 @@
 			self.doc.customer = webnotes.conn.get_value('Account',self.doc.debit_to,'master_name')
 
 
-	# Pull Details of Delivery Note or Sales Order Selected
-	# ------------------------------------------------------
 	def pull_details(self):
+		"""Pull Details of Delivery Note or Sales Order Selected"""
 		# Delivery Note
 		if self.doc.delivery_note_main:
 			self.validate_prev_docname('delivery note')
@@ -153,14 +142,14 @@
 		ret = self.get_debit_to()
 		self.doc.debit_to = ret.get('debit_to')
 					
-	# onload pull income account
-	# --------------------------
+					
 	def load_default_accounts(self):
 		"""
 			Loads default accounts from items, customer when called from mapper
 		"""
 		self.get_income_account('entries')
 		
+		
 	def get_income_account(self,doctype):		
 		for d in getlist(self.doclist, doctype):			
 			if d.item_code:
@@ -168,8 +157,7 @@
 				d.income_account = item and item[0]['default_income_account'] or ''
 				d.cost_center = item and item[0]['default_sales_cost_center'] or ''				
 
-	# Item Details
-	# -------------
+
 	def get_item_details(self, args=None):
 		import json
 		args = args and json.loads(args) or {}
@@ -215,61 +203,49 @@
 		return get_obj('Sales Common').get_barcode_details(barcode)
 
 
-	# Fetch ref rate from item master as per selected price list
 	def get_adj_percent(self, arg=''):
+		"""Fetch ref rate from item master as per selected price list"""
 		get_obj('Sales Common').get_adj_percent(self)
 
 
-	# Get tax rate if account type is tax
-	# ------------------------------------
 	def get_rate(self,arg):
+		"""Get tax rate if account type is tax"""
 		get_obj('Sales Common').get_rate(arg)
 		
 		
-	# Get Commission rate of Sales Partner
-	# -------------------------------------
 	def get_comm_rate(self, sales_partner):
+		"""Get Commission rate of Sales Partner"""
 		return get_obj('Sales Common').get_comm_rate(sales_partner, self)	
 	
- 
-	# GET TERMS & CONDITIONS
-	# -------------------------------------
+	
 	def get_tc_details(self):
 		return get_obj('Sales Common').get_tc_details(self)
 
-	# Load Default Charges
-	# ----------------------------------------------------------
+
 	def load_default_taxes(self):
 		self.doclist = get_obj('Sales Common').load_default_taxes(self)
 
-	# Get Sales Taxes and Charges Master Details
-	# --------------------------
+
 	def get_other_charges(self):
 		self.doclist = get_obj('Sales Common').get_other_charges(self)
 
-	# Get Advances
-	# -------------
+
 	def get_advances(self):
 		self.doclist = get_obj('GL Control').get_advances(self, self.doc.debit_to, 'Sales Invoice Advance', 'advance_adjustment_details', 'credit')
 
-	#pull project customer
-	#-------------------------
+	
 	def pull_project_customer(self):
 		res = webnotes.conn.sql("select customer from `tabProject` where name = '%s'"%self.doc.project_name)
 		if res:
 			get_obj('DocType Mapper', 'Project-Sales Invoice').dt_map('Project', 'Sales Invoice', self.doc.project_name, self.doc, self.doclist, "[['Project', 'Sales Invoice']]")
 
-# ********************************** Server Utility Functions ******************************
-	
-	# Get Company Abbr.
-	# ------------------
+
 	def get_company_abbr(self):
 		return webnotes.conn.sql("select abbr from tabCompany where name=%s", self.doc.company)[0][0]
 		
-	
-	# Check whether sales order / delivery note items already pulled
-	#----------------------------------------------------------------
+		
 	def validate_prev_docname(self,doctype):
+		"""Check whether sales order / delivery note items already pulled"""
 		for d in getlist(self.doclist, 'entries'): 
 			if doctype == 'delivery note' and self.doc.delivery_note_main == d.delivery_note:
 				msgprint(cstr(self.doc.delivery_note_main) + " delivery note details have already been pulled.")
@@ -279,7 +255,6 @@
 				raise Exception , "Validation Error. Sales order details have already been pulled."
 
 
-	#-----------------------------------------------------------------
 	def update_against_document_in_jv(self):
 		"""
 			Links invoice and advance voucher:
@@ -308,11 +283,8 @@
 			get_obj('GL Control').reconcile_against_document(lst)
 	
 	
-	# ------------------------------------------------------------------------
 	def validate_customer(self):
-		"""
-			Validate customer name with SO and DN
-		"""
+		"""	Validate customer name with SO and DN"""
 		for d in getlist(self.doclist,'entries'):
 			dt = d.delivery_note and 'Delivery Note' or d.sales_order and 'Sales Order' or ''
 			if dt:
@@ -322,9 +294,8 @@
 					msgprint("Customer %s does not match with customer of %s: %s." %(self.doc.customer, dt, dt_no), raise_exception=1)
 			
 
-	# Validates Debit To Account and Customer Matches
-	# ------------------------------------------------
-	def validate_debit_to_acc(self):
+	def validate_customer_account(self):
+		"""Validates Debit To Account and Customer Matches"""
 		if self.doc.customer and self.doc.debit_to and not cint(self.doc.is_pos):
 			acc_head = webnotes.conn.sql("select master_name from `tabAccount` where name = %s and docstatus != 2", self.doc.debit_to)
 			
@@ -334,11 +305,6 @@
 					and Master Name in account master." %(self.doc.debit_to, self.doc.customer,self.doc.company), raise_exception=1)
 
 
-	# Validate Debit To Account
-	# 1. Account Exists
-	# 2. Is a Debit Account
-	# 3. Is a PL Account
-	# ---------------------------
 	def validate_debit_acc(self):
 		acc = webnotes.conn.sql("select debit_or_credit, is_pl_account from tabAccount where name = '%s' and docstatus != 2" % self.doc.debit_to)
 		if not acc:
@@ -352,9 +318,8 @@
 			raise Exception
 
 
-	# Validate Fixed Asset Account and whether Income Account Entered Exists
-	# -----------------------------------------------------------------------
 	def validate_fixed_asset_account(self):
+		"""Validate Fixed Asset Account and whether Income Account Entered Exists"""
 		for d in getlist(self.doclist,'entries'):
 			item = webnotes.conn.sql("select name,is_asset_item,is_sales_item from `tabItem` where name = '%s' and (ifnull(end_of_life,'')='' or end_of_life = '0000-00-00' or end_of_life >	now())"% d.item_code)
 			acc =	webnotes.conn.sql("select account_type from `tabAccount` where name = '%s' and docstatus != 2" % d.income_account)
@@ -366,22 +331,16 @@
 				raise Exception
 
 
-
-	# Set totals in words
-	#--------------------
 	def set_in_words(self):
 		dcc = TransactionBase().get_company_currency(self.doc.company)
 		self.doc.in_words = get_obj('Sales Common').get_total_in_words(dcc, self.doc.rounded_total)
 		self.doc.in_words_export = get_obj('Sales Common').get_total_in_words(self.doc.currency, self.doc.rounded_total_export)
 
-	# Clear Advances
-	# --------------
+
 	def clear_advances(self):
 		get_obj('GL Control').clear_advances(self, 'Sales Invoice Advance','advance_adjustment_details')
 
 
-	# set aging date
-	#-------------------
 	def set_aging_date(self):
 		if self.doc.is_opening != 'Yes':
 			self.doc.aging_date = self.doc.posting_date
@@ -390,20 +349,21 @@
 			raise Exception
 			
 
-	# Set against account for debit to account
-	#------------------------------------------
 	def set_against_income_account(self):
+		"""Set against account for debit to account"""
 		against_acc = []
 		for d in getlist(self.doclist, 'entries'):
 			if d.income_account not in against_acc:
 				against_acc.append(d.income_account)
 		self.doc.against_income_account = ','.join(against_acc)
 
+
 	def add_remarks(self):
 		if not self.doc.remarks: self.doc.remarks = 'No Remarks'
 
-	#check in manage account if sales order / delivery note required or not.
+
 	def so_dn_required(self):
+		"""check in manage account if sales order / delivery note required or not."""
 		dic = {'Sales Order':'so_required','Delivery Note':'dn_required'}
 		for i in dic:	
 			if webnotes.conn.get_value('Global Defaults', 'Global Defaults', dic[i]) == 'Yes':
@@ -412,9 +372,9 @@
 						and not d.fields[i.lower().replace(' ','_')]:
 						msgprint("%s is mandatory for stock item which is not mentioed against item: %s"%(i,d.item_code), raise_exception=1)
 
-	#check for does customer belong to same project as entered..
-	#-------------------------------------------------------------------------------------------------
+
 	def validate_proj_cust(self):
+		"""check for does customer belong to same project as entered.."""
 		if self.doc.project_name and self.doc.customer:
 			res = webnotes.conn.sql("select name from `tabProject` where name = '%s' and (customer = '%s' or ifnull(customer,'')='')"%(self.doc.project_name, self.doc.customer))
 			if not res:
@@ -430,20 +390,13 @@
 			raise Exception
 
 
-	# ********* UPDATE CURRENT STOCK *****************************
-	def update_current_stock(self):
-		for d in getlist(self.doclist, 'entries'):
-			bin = webnotes.conn.sql("select actual_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
-			d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
-
 	def validate_item_code(self):
 		for d in getlist(self.doclist, 'entries'):
 			if not d.item_code:
 				msgprint("Please enter Item Code at line no : %s to update stock for POS or remove check from Update Stock in Basic Info Tab." % (d.idx))
 				raise Exception
 
-	# Validate Write Off Account
-	# -------------------------------
+
 	def validate_write_off_account(self):
 		if flt(self.doc.write_off_amount) and not self.doc.write_off_account:
 			msgprint("Please enter Write Off Account", raise_exception=1)
@@ -456,12 +409,22 @@
 					and parent = %s""", (self.doc.amended_from,	self.doc.c_form_no))
 
 			webnotes.conn.set(self.doc, 'c_form_no', '')
+			
+
+	def update_current_stock(self):
+		for d in getlist(self.doclist, 'entries'):
+			if d.item_code and d.warehouse:
+				bin = webnotes.conn.sql("select actual_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
+				d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
+
+		for d in getlist(self.doclist, 'packing_details'):
+			bin = sql("select actual_qty, projected_qty from `tabBin` where item_code =	%s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
+			d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
+			d.projected_qty = bin and flt(bin[0]['projected_qty']) or 0
 	 
-	# VALIDATE
-	# ====================================================================================
+	
 	def validate(self):
 		self.so_dn_required()
-		#self.dn_required()
 		self.validate_proj_cust()
 		sales_com_obj = get_obj('Sales Common')
 		sales_com_obj.check_stop_sales_order(self)
@@ -471,7 +434,7 @@
 		sales_com_obj.get_allocated_sum(self)	# this is to verify that the allocated % of sales persons is 100%
 		sales_com_obj.validate_fiscal_year(self.doc.fiscal_year,self.doc.posting_date,'Posting Date')
 		self.validate_customer()
-		self.validate_debit_to_acc()
+		self.validate_customer_account()
 		self.validate_debit_acc()
 		self.validate_fixed_asset_account()
 		self.add_remarks()
@@ -479,7 +442,9 @@
 			self.validate_pos()
 			self.validate_write_off_account()
 			if cint(self.doc.update_stock):
-				get_obj('Stock Ledger').validate_serial_no(self, 'entries')
+				sl = get_obj('Stock Ledger')
+				sl.validate_serial_no(self, 'entries')
+				sl.validate_serial_no(self, 'packing_details')
 				self.validate_item_code()
 				self.update_current_stock()
 		self.set_in_words()
@@ -487,14 +452,62 @@
 			self.doc.is_opening = 'No'
 		self.set_aging_date()
 		self.clear_advances()
-		# Set against account
 		self.set_against_income_account()
 		self.validate_c_form()
 
+
+	def get_warehouse(self):
+		w = webnotes.conn.sql("select warehouse from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (session['user'], self.doc.company))
+		w = w and w[0][0] or ''
+		if not w:
+			ps = webnotes.conn.sql("select name, warehouse from `tabPOS Setting` where ifnull(user,'') = '' and company = '%s'" % self.doc.company)
+			if not ps:
+				msgprint("To make POS entry, please create POS Setting from Accounts --> POS Setting page and refresh the system.")
+				raise Exception
+			elif not ps[0][1]:
+				msgprint("Please enter warehouse in POS Setting")
+			else:
+				w = ps[0][1]
+		return w
+
+	
+	def make_packing_list(self):
+		get_obj('Sales Common').make_packing_list(self,'entries')
+		sl = get_obj('Stock Ledger')
+		sl.scrub_serial_nos(self)
+		sl.scrub_serial_nos(self, 'packing_details')
+
+
+	def on_update(self):
+		# Set default warehouse from pos setting
+		if cint(self.doc.is_pos) == 1:
+			if cint(self.doc.update_stock) == 1:
+				w = self.get_warehouse()
+				if w:
+					for d in getlist(self.doclist, 'entries'):
+						if not d.warehouse:
+							d.warehouse = cstr(w)
+							
+				self.make_packing_list()
+			else:
+				self.doclist = self.doc.clear_table(self.doclist, 'packing_details')
+
+			if flt(self.doc.paid_amount) == 0:
+				if self.doc.cash_bank_account: 
+					webnotes.conn.set(self.doc, 'paid_amount', 
+						(flt(self.doc.grand_total) - flt(self.doc.write_off_amount)))
+				else:
+					# show message that the amount is not paid
+					webnotes.conn.set(self.doc,'paid_amount',0)
+					webnotes.msgprint("Note: Payment Entry will not be created since 'Cash/Bank Account' was not specified.")
+
+		else:
+			self.doclist = self.doc.clear_table(self.doclist, 'packing_details')
+			webnotes.conn.set(self.doc,'paid_amount',0)
+
+		webnotes.conn.set(self.doc,'outstanding_amount',flt(self.doc.grand_total) - flt(self.doc.total_advance) - flt(self.doc.paid_amount) - flt(self.doc.write_off_amount))
+
 		
-# *************************************************** ON SUBMIT **********************************************
-	# Check Ref Document's docstatus
-	# -------------------------------
 	def check_prev_docstatus(self):
 		for d in getlist(self.doclist,'entries'):
 			if d.sales_order:
@@ -510,56 +523,45 @@
 					raise Exception , "Validation Error."
 
 
-	#Set Actual Qty based on item code and warehouse
-	#------------------------------------------------------
-	def set_actual_qty(self):
-		for d in getlist(self.doclist, 'entries'):
-			if d.item_code and d.warehouse:
-				actual_qty = webnotes.conn.sql("select actual_qty from `tabBin` where item_code = '%s' and warehouse = '%s'" % (d.item_code, d.warehouse))
-				d.actual_qty = actual_qty and flt(actual_qty[0][0]) or 0
-
-
-
-	# ********************** Make Stock Entry ************************************
 	def make_sl_entry(self, d, wh, qty, in_value, update_stock):
-		st_uom = webnotes.conn.sql("select stock_uom from `tabItem` where name = '%s'"%d.item_code)
+		st_uom = webnotes.conn.sql("select stock_uom from `tabItem` where name = '%s'"%d['item_code'])
 		self.values.append({
-			'item_code'					 : d.item_code,
+			'item_code'					 : d['item_code'],
 			'warehouse'					 : wh,
 			'transaction_date'			: getdate(self.doc.modified).strftime('%Y-%m-%d'),
 			'posting_date'				: self.doc.posting_date,
 			'posting_time'				: self.doc.posting_time,
 			'voucher_type'				: 'Sales Invoice',
 			'voucher_no'					: cstr(self.doc.name),
-			'voucher_detail_no'	 : cstr(d.name), 
+			'voucher_detail_no'	 : cstr(d['name']), 
 			'actual_qty'					: qty, 
 			'stock_uom'					 : st_uom and st_uom[0][0] or '',
 			'incoming_rate'			 : in_value,
 			'company'						 : self.doc.company,
 			'fiscal_year'				 : self.doc.fiscal_year,
 			'is_cancelled'				: (update_stock==1) and 'No' or 'Yes',
-			'batch_no'						: cstr(d.batch_no),
-			'serial_no'					 : d.serial_no
-		})		
+			'batch_no'						: cstr(d['batch_no']),
+			'serial_no'					 : d['serial_no']
+		})	
 			
 
-	# UPDATE STOCK LEDGER
-	# ---------------------------------------------------------------------------
-	def update_stock_ledger(self, update_stock, clear = 0):
+	def update_stock_ledger(self, update_stock):
 		self.values = []
-		for d in getlist(self.doclist, 'entries'):
-			stock_item = webnotes.conn.sql("SELECT is_stock_item, is_sample_item FROM tabItem where name = '%s'"%(d.item_code), as_dict = 1) # stock ledger will be updated only if it is a stock item
+		items = get_obj('Sales Common').get_item_list(self)
+		for d in items:
+			stock_item = webnotes.conn.sql("SELECT is_stock_item, is_sample_item \
+				FROM tabItem where name = '%s'"%(d['item_code']), as_dict = 1)
 			if stock_item[0]['is_stock_item'] == "Yes":
+				if not d['warehouse']:
+					msgprint("Message: Please enter Warehouse for item %s as it is stock item." \
+						% d['item_code'], raise_exception=1)
+
 				# Reduce actual qty from warehouse
-				self.make_sl_entry( d, d.warehouse, - flt(d.qty) , 0, update_stock)
-		get_obj('Stock Ledger', 'Stock Ledger').update_stock(self.values, self.doc.amended_from and 'Yes' or 'No')
-
-
-	#-------------------POS Stock Updatation Part----------------------------------------------
-	def pos_update_stock(self):
-		self.update_stock_ledger(update_stock = 1)
+				self.make_sl_entry( d, d['warehouse'], - flt(d['qty']) , 0, update_stock)
+				
+		get_obj('Stock Ledger', 'Stock Ledger').update_stock(self.values)
 	
-	# ********** Get Actual Qty of item in warehouse selected *************
+
 	def get_actual_qty(self,args):
 		args = eval(args)
 		actual_qty = webnotes.conn.sql("select actual_qty from `tabBin` where item_code = '%s' and warehouse = '%s'" % (args['item_code'], args['warehouse']), as_dict=1)
@@ -568,23 +570,39 @@
 		}
 		return ret
 
-	# Make GL Entries
-	# -------------------------
+
 	def make_gl_entries(self, is_cancel=0):
 		mapper = self.doc.is_pos and self.doc.write_off_account and 'POS with write off' or self.doc.is_pos and not self.doc.write_off_account and 'POS' or ''
 		update_outstanding = self.doc.is_pos and self.doc.write_off_account and 'No' or 'Yes'
 		get_obj(dt='GL Control').make_gl_entries(self.doc, self.doclist,cancel = is_cancel, use_mapper = mapper, update_outstanding = update_outstanding, merge_entries = cint(self.doc.is_pos) != 1 and 1 or 0)
 		
 
-	# On Submit
-	# ---------
+	def update_c_form(self):
+		"""Update amended id in C-form"""
+		if self.doc.c_form_no and self.doc.amended_from:
+			webnotes.conn.sql("""update `tabC-Form Invoice Detail` set invoice_no = %s,
+					invoice_date = %s, territory = %s, net_total = %s,
+					grand_total = %s where invoice_no = %s and parent = %s""", (self.doc.name, self.doc.amended_from, self.doc.c_form_no))
+
+
+	def check_next_docstatus(self):
+		submit_jv = webnotes.conn.sql("select t1.name from `tabJournal Voucher` t1,`tabJournal Voucher Detail` t2 where t1.name = t2.parent and t2.against_invoice = '%s' and t1.docstatus = 1" % (self.doc.name))
+		if submit_jv:
+			msgprint("Journal Voucher : " + cstr(submit_jv[0][0]) + " has been created against " + cstr(self.doc.doctype) + ". So " + cstr(self.doc.doctype) + " cannot be Cancelled.")
+			raise Exception, "Validation Error."
+
+
 	def on_submit(self):
 		if cint(self.doc.is_pos) == 1:
 			if cint(self.doc.update_stock) == 1:
 				sl_obj = get_obj("Stock Ledger")
 				sl_obj.validate_serial_no_warehouse(self, 'entries')
+				sl_obj.validate_serial_no_warehouse(self, 'packing_details')
+				
 				sl_obj.update_serial_record(self, 'entries', is_submit = 1, is_incoming = 0)
-				self.pos_update_stock()
+				sl_obj.update_serial_record(self, 'packing_details', is_submit = 1, is_incoming = 0)
+				
+				self.update_stock_ledger(update_stock=1)
 		else:
 			self.check_prev_docstatus()
 			get_obj("Sales Common").update_prevdoc_detail(1,self)
@@ -602,31 +620,13 @@
 		self.update_c_form()
 
 
-	def update_c_form(self):
-		"""Update amended id in C-form"""
-		if self.doc.c_form_no and self.doc.amended_from:
-			webnotes.conn.sql("""update `tabC-Form Invoice Detail` set invoice_no = %s,
-					invoice_date = %s, territory = %s, net_total = %s,
-					grand_total = %s where invoice_no = %s and parent = %s""", (self.doc.name, self.doc.amended_from, self.doc.c_form_no))
-	
-
-			
-# *************************************************** ON CANCEL **********************************************
-	# Check Next Document's docstatus
-	# --------------------------------
-	def check_next_docstatus(self):
-		submit_jv = webnotes.conn.sql("select t1.name from `tabJournal Voucher` t1,`tabJournal Voucher Detail` t2 where t1.name = t2.parent and t2.against_invoice = '%s' and t1.docstatus = 1" % (self.doc.name))
-		if submit_jv:
-			msgprint("Journal Voucher : " + cstr(submit_jv[0][0]) + " has been created against " + cstr(self.doc.doctype) + ". So " + cstr(self.doc.doctype) + " cannot be Cancelled.")
-			raise Exception, "Validation Error."
-
-
-	# On Cancel
-	# ----------
 	def on_cancel(self):
 		if cint(self.doc.is_pos) == 1:
 			if cint(self.doc.update_stock) == 1:
-				get_obj('Stock Ledger').update_serial_record(self, 'entries', is_submit = 0, is_incoming = 0)
+				sl = get_obj('Stock Ledger')
+				sl.update_serial_record(self, 'entries', is_submit = 0, is_incoming = 0)
+				sl.update_serial_record(self, 'packing_details', is_submit = 0, is_incoming = 0)
+				
 				self.update_stock_ledger(update_stock = -1)
 		else:
 			sales_com_obj = get_obj(dt = 'Sales Common')
@@ -743,3 +743,4 @@
 		next_date = next_date.strftime("%Y-%m-%d")
 
 		webnotes.conn.set(self.doc, 'next_date', next_date)
+
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt b/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
index 969a7dc..b1368d1 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-06-11 12:09:54',
+		'creation': '2012-07-13 11:57:13',
 		'docstatus': 0,
-		'modified': '2012-06-17 21:37:40',
+		'modified': '2012-07-16 16:25:11',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -55,62 +55,6 @@
 		'name': u'Sales Invoice'
 	},
 
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Accounts Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Accounts Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Accounts User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Accounts User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'match': u'customer',
-		'permlevel': 0,
-		'role': u'Customer'
-	},
-
 	# DocField
 	{
 		'doctype': u'DocField',
@@ -353,6 +297,16 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'sales_bom_help',
+		'fieldtype': u'HTML',
+		'label': u'Sales BOM Help',
+		'permlevel': 0,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'section_break0',
 		'fieldtype': u'Section Break',
 		'options': u'Simple',
@@ -498,7 +452,7 @@
 		'description': u"Rate at which Price list currency is converted to customer's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'plc_conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Price List Currency Conversion Rate',
 		'permlevel': 0,
 		'print_hide': 1,
@@ -535,7 +489,7 @@
 		'description': u"Rate at which Customer Currency is converted to customer's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Conversion Rate',
 		'oldfieldname': u'conversion_rate',
 		'oldfieldtype': u'Currency',
@@ -1346,6 +1300,27 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'packing_list',
+		'fieldtype': u'Section Break',
+		'label': u'Packing List',
+		'permlevel': 0,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'packing_details',
+		'fieldtype': u'Table',
+		'label': u'Packing Details',
+		'options': u'Delivery Note Packing Item',
+		'permlevel': 0,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'sales_team_section_break',
 		'fieldtype': u'Section Break',
 		'label': u'Sales Team',
@@ -1627,5 +1602,61 @@
 		'no_copy': 1,
 		'permlevel': 0,
 		'print_hide': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Accounts Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Accounts Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Accounts User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Accounts User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'match': u'customer',
+		'permlevel': 0,
+		'role': u'Customer'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/sales_invoice_advance/__init__.py b/erpnext/accounts/doctype/sales_invoice_advance/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/sales_invoice_advance/__init__.py
+++ b/erpnext/accounts/doctype/sales_invoice_advance/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/sales_invoice_item/__init__.py b/erpnext/accounts/doctype/sales_invoice_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/sales_invoice_item/__init__.py
+++ b/erpnext/accounts/doctype/sales_invoice_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges/__init__.py b/erpnext/accounts/doctype/sales_taxes_and_charges/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges/__init__.py
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.txt b/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.txt
index 2a25a6a..66d7aae 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.txt
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-15 12:14:34',
+		'creation': '2012-07-04 16:40:13',
 		'docstatus': 0,
-		'modified': '2012-07-04 13:27:05',
+		'modified': '2012-07-12 13:50:43',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -113,7 +113,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'tax_amount',
 		'fieldtype': u'Currency',
-		'label': u'Amount*',
+		'label': u'Amount',
 		'oldfieldname': u'tax_amount',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0,
@@ -126,7 +126,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'total',
 		'fieldtype': u'Currency',
-		'label': u'Total*',
+		'label': u'Total',
 		'oldfieldname': u'total',
 		'oldfieldtype': u'Currency',
 		'permlevel': 1
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/__init__.py b/erpnext/accounts/doctype/sales_taxes_and_charges_master/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/__init__.py
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
index bae6b74..16bf1bb 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
@@ -19,9 +19,9 @@
   // 
 }
 
-/*cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-   
-}*/
+cur_frm.cscript.refresh = function(doc, cdt, cdn) {
+   cur_frm.set_footnote(wn.markdown(cur_frm.meta.description));
+}
 
 // For customizing print
 cur_frm.pformat.net_total = function(doc) {
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
index f5342ed..953269c 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
@@ -8,43 +8,26 @@
 # 
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 # GNU General Public License for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
-# Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
-
 class DocType:
-  def __init__(self, doc, doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
+	def __init__(self, doc, doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
 
-  # Get Tax Rate if account type is Tax
-  # ===================================================================
-  def get_rate(self, arg):
-    get_obj('Sales Common').get_rate(arg, self)
+	def get_rate(self, arg):
+		from webnotes.model.code import get_obj
+		return get_obj('Sales Common').get_rate(arg, self)
 
-  def update_other_default_charges(self):
-    sql("update `tabSales Taxes and Charges Master` set is_default = 0 where ifnull(is_default,0) = 1 and name != '%s' and company = '%s'" % (self.doc.name, self.doc.company))
+	def update_other_default_charges(self):
+		webnotes.conn.sql("update `tabSales Taxes and Charges Master` set is_default = 0 where ifnull(is_default,0) = 1 and name != '%s' and company = '%s'" % (self.doc.name, self.doc.company))
 
-  def on_update(self):
-    self.update_other_default_charges()
+	def on_update(self):
+		self.update_other_default_charges()
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
index 655269c..1707bf4 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:22',
+		'creation': '2012-07-03 13:30:46',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:22',
+		'modified': '2012-07-12 13:43:32',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,6 +17,7 @@
 		'autoname': u'field:title',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'Standard tax template that can be applied to all Sales Transactions. This template can contain list of tax heads and also other expense / income heads like "Shipping", "Insurance", "Handling" etc.\n\n#### Note\n\nThe tax rate you define here will be the standard tax rate for all **Items**. If there are **Items** that have different rates, they must be added in the **Item Tax** table in the **Item** master.\n\n#### Description of Columns\n\n1. Calculation Type: \n    - This can be on **Net Total** (that is the sum of basic amount).\n    - **On Previous Row Total / Amount** (for cumulative taxes or charges). If you select this option, the tax will be applied as a percentage of the previous row (in the tax table) amount or total.\n    - **Actual** (as mentioned).\n2. Account Head: The Account ledger under which this tax will be booked\n3. Cost Center: If the tax / charge is an income (like shipping) or expense it needs to be booked against a Cost Center.\n4. Description: Description of the tax (that will be printed in invoices / quotes).\n5. Rate: Tax rate.\n6. Amount: Tax amount.\n7. Total: Cumulative total to this point.\n8. Enter Row: If based on "Previous Row Total" you can select the row number which will be taken as a base for this calculation (default is the previous row).\n9. Is this Tax included in Basic Rate?: If you check this, it means that this tax will not be shown below the item table, but will be included in the Basic Rate in your main item table. This is useful where you want give a flat price (inclusive of all taxes) price to customers.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'module': u'Accounts',
@@ -24,7 +25,7 @@
 		'section_style': u'Tabbed',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 57
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -33,7 +34,8 @@
 		'name': '__common__',
 		'parent': u'Sales Taxes and Charges Master',
 		'parentfield': u'fields',
-		'parenttype': u'DocType'
+		'parenttype': u'DocType',
+		'permlevel': 0
 	},
 
 	# These values are common for all DocPerm
@@ -55,6 +57,42 @@
 	# DocPerm
 	{
 		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales Master Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
 		'cancel': 1,
 		'create': 1,
 		'doctype': u'DocPerm',
@@ -86,63 +124,6 @@
 		'write': 1
 	},
 
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales Master Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'trash_reason',
-		'fieldtype': u'Small Text',
-		'label': u'Trash Reason',
-		'oldfieldname': u'trash_reason',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'other_charges_details',
-		'fieldtype': u'Section Break',
-		'label': u'Other Charges Details',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0
-	},
-
 	# DocField
 	{
 		'doctype': u'DocField',
@@ -152,7 +133,6 @@
 		'label': u'Title',
 		'oldfieldname': u'title',
 		'oldfieldtype': u'Data',
-		'permlevel': 0,
 		'reqd': 1,
 		'search_index': 0
 	},
@@ -162,8 +142,20 @@
 		'doctype': u'DocField',
 		'fieldname': u'is_default',
 		'fieldtype': u'Check',
-		'label': u'Default',
-		'permlevel': 0
+		'label': u'Default'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'* Will be calculated in the transaction.',
+		'doctype': u'DocField',
+		'fieldname': u'other_charges',
+		'fieldtype': u'Table',
+		'label': u'Sales Taxes and Charges Master',
+		'oldfieldname': u'other_charges',
+		'oldfieldtype': u'Table',
+		'options': u'Sales Taxes and Charges'
 	},
 
 	# DocField
@@ -176,20 +168,7 @@
 		'oldfieldname': u'company',
 		'oldfieldtype': u'Link',
 		'options': u'Company',
-		'permlevel': 0,
 		'reqd': 1,
 		'search_index': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'other_charges',
-		'fieldtype': u'Table',
-		'label': u'Sales Taxes and Charges Master',
-		'oldfieldname': u'other_charges',
-		'oldfieldtype': u'Table',
-		'options': u'Sales Taxes and Charges',
-		'permlevel': 0
 	}
-]
+]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/tds_category/__init__.py b/erpnext/accounts/doctype/tds_category/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_category/__init__.py
+++ b/erpnext/accounts/doctype/tds_category/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/tds_category/tds_category.py b/erpnext/accounts/doctype/tds_category/tds_category.py
index 2053f08..027c807 100644
--- a/erpnext/accounts/doctype/tds_category/tds_category.py
+++ b/erpnext/accounts/doctype/tds_category/tds_category.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/tds_category_account/__init__.py b/erpnext/accounts/doctype/tds_category_account/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_category_account/__init__.py
+++ b/erpnext/accounts/doctype/tds_category_account/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/tds_control/__init__.py b/erpnext/accounts/doctype/tds_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_control/__init__.py
+++ b/erpnext/accounts/doctype/tds_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/tds_control/tds_control.py b/erpnext/accounts/doctype/tds_control/tds_control.py
index 5fda090..5853081 100644
--- a/erpnext/accounts/doctype/tds_control/tds_control.py
+++ b/erpnext/accounts/doctype/tds_control/tds_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/tds_detail/__init__.py b/erpnext/accounts/doctype/tds_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_detail/__init__.py
+++ b/erpnext/accounts/doctype/tds_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/tds_payment/__init__.py b/erpnext/accounts/doctype/tds_payment/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_payment/__init__.py
+++ b/erpnext/accounts/doctype/tds_payment/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/tds_payment/tds_payment.py b/erpnext/accounts/doctype/tds_payment/tds_payment.py
index c1874d9..fa14f86 100644
--- a/erpnext/accounts/doctype/tds_payment/tds_payment.py
+++ b/erpnext/accounts/doctype/tds_payment/tds_payment.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/doctype/tds_payment_detail/__init__.py b/erpnext/accounts/doctype/tds_payment_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_payment_detail/__init__.py
+++ b/erpnext/accounts/doctype/tds_payment_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/tds_rate_chart/__init__.py b/erpnext/accounts/doctype/tds_rate_chart/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_rate_chart/__init__.py
+++ b/erpnext/accounts/doctype/tds_rate_chart/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/tds_rate_detail/__init__.py b/erpnext/accounts/doctype/tds_rate_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_rate_detail/__init__.py
+++ b/erpnext/accounts/doctype/tds_rate_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/tds_return_acknowledgement/__init__.py b/erpnext/accounts/doctype/tds_return_acknowledgement/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/doctype/tds_return_acknowledgement/__init__.py
+++ b/erpnext/accounts/doctype/tds_return_acknowledgement/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/trend_analyzer_control/__init__.py b/erpnext/accounts/doctype/trend_analyzer_control/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/accounts/doctype/trend_analyzer_control/__init__.py
+++ b/erpnext/accounts/doctype/trend_analyzer_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py b/erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
index cafe20a..a97cd6c 100755
--- a/erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
+++ b/erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/accounts/page/__init__.py b/erpnext/accounts/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/page/__init__.py
+++ b/erpnext/accounts/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/page/accounts_browser/__init__.py b/erpnext/accounts/page/accounts_browser/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/page/accounts_browser/__init__.py
+++ b/erpnext/accounts/page/accounts_browser/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js
index 734e4de..5bc2e35 100644
--- a/erpnext/accounts/page/accounts_browser/accounts_browser.js
+++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js
@@ -62,7 +62,11 @@
 pscript['onshow_Accounts Browser'] = function(wrapper){
 	// set route
 	var ctype = wn.get_route()[1] || 'Account';
-	wrapper.appframe.title('Chart of '+ctype+'s');  
+
+	wrapper.appframe.clear_breadcrumbs();
+	wrapper.appframe.add_breadcrumb('Chart of '+ctype+'s');
+	document.title = 'Chart of '+ctype+'s';
+	wrapper.appframe.add_breadcrumb(' in <a href="#!accounts-home">Accounts</a>');
 
 	if(erpnext.account_chart && erpnext.account_chart.ctype != ctype) {
 		wrapper.$company_select.change();
@@ -151,13 +155,12 @@
 			fields: [
 				{fieldtype:'Data', fieldname:'account_name', label:'New Account Name', reqd:true},
 				{fieldtype:'Select', fieldname:'group_or_ledger', label:'Group or Ledger',
-					options:'Group\nLedger'},
+					options:'Group\nLedger', description:'Further accounts can be made under Groups,\
+					 	but entries can be made against Ledger'},
 				{fieldtype:'Select', fieldname:'account_type', label:'Account Type',
 					options: ['', 'Fixed Asset Account', 'Bank or Cash', 'Expense Account', 'Tax',
 						'Income Account', 'Chargeable'].join('\n') },
 				{fieldtype:'Float', fieldname:'tax_rate', label:'Tax Rate'},
-				{fieldtype:'Select', fieldname:'master_type', label:'Master Type',
-					options: ['NA', 'Supplier', 'Customer', 'Employee'].join('\n') },
 				{fieldtype:'Button', fieldname:'create_new', label:'Create New' }
 			]
 		})
@@ -168,11 +171,9 @@
 		$(fd.group_or_ledger.input).change(function() {
 			if($(this).val()=='Group') {
 				$(fd.account_type.wrapper).toggle(false);
-				$(fd.master_type.wrapper).toggle(false);
 				$(fd.tax_rate.wrapper).toggle(false);
 			} else {
 				$(fd.account_type.wrapper).toggle(true);
-				$(fd.master_type.wrapper).toggle(true);
 				if(fd.account_type.get_value()=='Tax') {
 					$(fd.tax_rate.wrapper).toggle(true);
 				}
@@ -197,6 +198,7 @@
 					
 			var node = me.selected_node();
 			v.parent_account = node.data('label');
+			v.master_type = '';
 			v.company = me.company;
 			
 		    $c_obj('GL Control', 'add_ac', v, 
@@ -222,10 +224,11 @@
 			fields: [
 				{fieldtype:'Data', fieldname:'cost_center_name', label:'New Cost Center Name', reqd:true},
 				{fieldtype:'Select', fieldname:'group_or_ledger', label:'Group or Ledger',
-					options:'Group\nLedger'},
+					options:'Group\nLedger', description:'Further accounts can be made under Groups,\
+					 	but entries can be made against Ledger'},
 				{fieldtype:'Button', fieldname:'create_new', label:'Create New' }
 			]
-		})		
+		});
 	
 		// create
 		$(d.fields_dict.create_new.input).click(function() {
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.py b/erpnext/accounts/page/accounts_browser/accounts_browser.py
index 56b79d1..f2c0d9c 100644
--- a/erpnext/accounts/page/accounts_browser/accounts_browser.py
+++ b/erpnext/accounts/page/accounts_browser/accounts_browser.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import get_defaults, cstr
 
diff --git a/erpnext/accounts/page/accounts_home/__init__.py b/erpnext/accounts/page/accounts_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/page/accounts_home/__init__.py
+++ b/erpnext/accounts/page/accounts_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/page/financial_statements/__init__.py b/erpnext/accounts/page/financial_statements/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/page/financial_statements/__init__.py
+++ b/erpnext/accounts/page/financial_statements/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/__init__.py b/erpnext/accounts/search_criteria/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/__init__.py
+++ b/erpnext/accounts/search_criteria/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/accounts_payable/__init__.py b/erpnext/accounts/search_criteria/accounts_payable/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/accounts_payable/__init__.py
+++ b/erpnext/accounts/search_criteria/accounts_payable/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/accounts_payable/accounts_payable.py b/erpnext/accounts/search_criteria/accounts_payable/accounts_payable.py
index 4ecba4a..1aaee96 100644
--- a/erpnext/accounts/search_criteria/accounts_payable/accounts_payable.py
+++ b/erpnext/accounts/search_criteria/accounts_payable/accounts_payable.py
@@ -17,6 +17,7 @@
 # Check mandatory filters
 # ------------------------------------------------------------------
 
+from __future__ import unicode_literals
 if not filter_values.get('posting_date') or not filter_values.get('posting_date1'):
 	msgprint("Please select From Posting Date and To Posting Date ")
 	raise Exception
diff --git a/erpnext/accounts/search_criteria/accounts_receivable/__init__.py b/erpnext/accounts/search_criteria/accounts_receivable/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/accounts_receivable/__init__.py
+++ b/erpnext/accounts/search_criteria/accounts_receivable/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.py b/erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.py
index 48899dc..51259e6 100644
--- a/erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.py
@@ -17,6 +17,7 @@
 
 # Check mandatory filters
 #------------------------------
+from __future__ import unicode_literals
 if not filter_values.get('posting_date') or not filter_values.get('posting_date1'):
   msgprint("Please select From Posting Date and To Posting Date in 'Set Filters' section")
   raise Exception
diff --git a/erpnext/accounts/search_criteria/bank_clearance_report/__init__.py b/erpnext/accounts/search_criteria/bank_clearance_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/bank_clearance_report/__init__.py
+++ b/erpnext/accounts/search_criteria/bank_clearance_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/bank_reconciliation_statement/__init__.py b/erpnext/accounts/search_criteria/bank_reconciliation_statement/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/bank_reconciliation_statement/__init__.py
+++ b/erpnext/accounts/search_criteria/bank_reconciliation_statement/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py b/erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py
index b9a126c..3250f02 100644
--- a/erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py
+++ b/erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #get company
+from __future__ import unicode_literals
 company = filter_values.get('company') or get_defaults()['company']
 
 # To date
diff --git a/erpnext/accounts/search_criteria/budget_variance_report/__init__.py b/erpnext/accounts/search_criteria/budget_variance_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/budget_variance_report/__init__.py
+++ b/erpnext/accounts/search_criteria/budget_variance_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.py b/erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.py
index 7000630..dbb6b2d 100644
--- a/erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.py
+++ b/erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # validate Filters
+from __future__ import unicode_literals
 flt_dict = {'fiscal_year': 'Fiscal Year', 'period': 'Period'}
 for f in flt_dict:
   if not filter_values.get(f):
diff --git a/erpnext/accounts/search_criteria/business_associate_commission_report/__init__.py b/erpnext/accounts/search_criteria/business_associate_commission_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/business_associate_commission_report/__init__.py
+++ b/erpnext/accounts/search_criteria/business_associate_commission_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.py b/erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.py
index e30fa00..6aa7529 100644
--- a/erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.py
+++ b/erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 colwidths[col_idx['Business Associate']] = '200px'
 
 coltypes[col_idx['Average Commission Rate']] = 'Currency'
diff --git a/erpnext/accounts/search_criteria/cash_flow_statement/__init__.py b/erpnext/accounts/search_criteria/cash_flow_statement/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/cash_flow_statement/__init__.py
+++ b/erpnext/accounts/search_criteria/cash_flow_statement/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/cash_flow_statement/cash_flow_statement.py b/erpnext/accounts/search_criteria/cash_flow_statement/cash_flow_statement.py
index 4c29803..cf7d075 100644
--- a/erpnext/accounts/search_criteria/cash_flow_statement/cash_flow_statement.py
+++ b/erpnext/accounts/search_criteria/cash_flow_statement/cash_flow_statement.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 cl = [['Account','Data', '200px'],['Debit/Credit', 'Data', '100px'], ['Group/Ledger', 'Data', '100px'], ['Opening','Data', '100px'],['Closing', 'Data', '100px'],['Inc in Cash','Data','100px']]
 
 for c in cl:
diff --git a/erpnext/accounts/search_criteria/collection_report/__init__.py b/erpnext/accounts/search_criteria/collection_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/collection_report/__init__.py
+++ b/erpnext/accounts/search_criteria/collection_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/collection_report/collection_report.py b/erpnext/accounts/search_criteria/collection_report/collection_report.py
index f08fe5c..bc40a69 100644
--- a/erpnext/accounts/search_criteria/collection_report/collection_report.py
+++ b/erpnext/accounts/search_criteria/collection_report/collection_report.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #check mandatory
+from __future__ import unicode_literals
 if not filter_values.get('posting_date') or not filter_values.get('posting_date1'):
   msgprint("Please select From Posting Date and To Posting Date ")
   raise Exception
diff --git a/erpnext/accounts/search_criteria/cost_center_wise_expense/__init__.py b/erpnext/accounts/search_criteria/cost_center_wise_expense/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/cost_center_wise_expense/__init__.py
+++ b/erpnext/accounts/search_criteria/cost_center_wise_expense/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.py b/erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.py
index d08599f..1c73501 100644
--- a/erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.py
+++ b/erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.py
@@ -16,6 +16,7 @@
 
 # Add columns
 # -----------
+from __future__ import unicode_literals
 row_list = [['Cost Center','Data','160px'],
             ['Account','Data','160px'],
             ['Debit','Currency','120px'],
diff --git a/erpnext/accounts/search_criteria/creditors_ledger/__init__.py b/erpnext/accounts/search_criteria/creditors_ledger/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/creditors_ledger/__init__.py
+++ b/erpnext/accounts/search_criteria/creditors_ledger/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.py b/erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.py
index a2fa8ed..6635922 100644
--- a/erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.py
+++ b/erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #get company
+from __future__ import unicode_literals
 company = filter_values.get('company') or get_defaults()['company']
 
 #get company letter head
diff --git a/erpnext/accounts/search_criteria/debtors_ledger/__init__.py b/erpnext/accounts/search_criteria/debtors_ledger/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/debtors_ledger/__init__.py
+++ b/erpnext/accounts/search_criteria/debtors_ledger/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.py b/erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.py
index a2fa8ed..6635922 100644
--- a/erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.py
+++ b/erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #get company
+from __future__ import unicode_literals
 company = filter_values.get('company') or get_defaults()['company']
 
 #get company letter head
diff --git a/erpnext/accounts/search_criteria/general_ledger/__init__.py b/erpnext/accounts/search_criteria/general_ledger/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/general_ledger/__init__.py
+++ b/erpnext/accounts/search_criteria/general_ledger/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/general_ledger/general_ledger.py b/erpnext/accounts/search_criteria/general_ledger/general_ledger.py
index c78b584..1f02478 100644
--- a/erpnext/accounts/search_criteria/general_ledger/general_ledger.py
+++ b/erpnext/accounts/search_criteria/general_ledger/general_ledger.py
@@ -16,6 +16,7 @@
 
 #get company letter head
 #---------------------------------------------------------------------
+from __future__ import unicode_literals
 l_head = sql("select content from `tabLetter Head` where ifnull(is_default, 0) = 1 and ifnull(disabled, 0) = 0")
 l_head = l_head and l_head[0][0] or ''
 
diff --git a/erpnext/accounts/search_criteria/invoices_overdue/__init__.py b/erpnext/accounts/search_criteria/invoices_overdue/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/invoices_overdue/__init__.py
+++ b/erpnext/accounts/search_criteria/invoices_overdue/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/itemwise_purchase_register/__init__.py b/erpnext/accounts/search_criteria/itemwise_purchase_register/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/itemwise_purchase_register/__init__.py
+++ b/erpnext/accounts/search_criteria/itemwise_purchase_register/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/itemwise_sales_register/__init__.py b/erpnext/accounts/search_criteria/itemwise_sales_register/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/itemwise_sales_register/__init__.py
+++ b/erpnext/accounts/search_criteria/itemwise_sales_register/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/monthly_transaction_summary/__init__.py b/erpnext/accounts/search_criteria/monthly_transaction_summary/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/monthly_transaction_summary/__init__.py
+++ b/erpnext/accounts/search_criteria/monthly_transaction_summary/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.py b/erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.py
index 8a7d8c4..7660fe9 100644
--- a/erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.py
+++ b/erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 if filter_values.get('period'):
   period_values = filter_values.get('period').split(NEWLINE)
 
diff --git a/erpnext/accounts/search_criteria/payment_receipt_report/__init__.py b/erpnext/accounts/search_criteria/payment_receipt_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/payment_receipt_report/__init__.py
+++ b/erpnext/accounts/search_criteria/payment_receipt_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py b/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
index fd7ce58..84cbbec 100644
--- a/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
+++ b/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 if not filter_values.get('posting_date'):
   msgprint("Enter From Posting Date.")
   raise Exception
diff --git a/erpnext/accounts/search_criteria/purchase_register/__init__.py b/erpnext/accounts/search_criteria/purchase_register/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/purchase_register/__init__.py
+++ b/erpnext/accounts/search_criteria/purchase_register/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/purchase_register/purchase_register.py b/erpnext/accounts/search_criteria/purchase_register/purchase_register.py
index bb58d77..5e77d5c 100644
--- a/erpnext/accounts/search_criteria/purchase_register/purchase_register.py
+++ b/erpnext/accounts/search_criteria/purchase_register/purchase_register.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # add expense head columns
+from __future__ import unicode_literals
 from webnotes.utils import flt, cint, cstr
 
 expense_acc = [c[0] for c in sql("""select distinct expense_head 
diff --git a/erpnext/accounts/search_criteria/sales_register/__init__.py b/erpnext/accounts/search_criteria/sales_register/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/sales_register/__init__.py
+++ b/erpnext/accounts/search_criteria/sales_register/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/sales_register/sales_register.py b/erpnext/accounts/search_criteria/sales_register/sales_register.py
index c99948e..ef9374a 100644
--- a/erpnext/accounts/search_criteria/sales_register/sales_register.py
+++ b/erpnext/accounts/search_criteria/sales_register/sales_register.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # add additional columns
+from __future__ import unicode_literals
 from webnotes.utils import flt, cint, cstr
 
 cl = [c[0] for c in sql("""select distinct account_head 
diff --git a/erpnext/accounts/search_criteria/tds_return/__init__.py b/erpnext/accounts/search_criteria/tds_return/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/tds_return/__init__.py
+++ b/erpnext/accounts/search_criteria/tds_return/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/tds_return/tds_return.py b/erpnext/accounts/search_criteria/tds_return/tds_return.py
index 24e7308..41693b6 100644
--- a/erpnext/accounts/search_criteria/tds_return/tds_return.py
+++ b/erpnext/accounts/search_criteria/tds_return/tds_return.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 if not filter_values.get('tds_category'):
   msgprint("Please enter TDS Category")
   raise Exception
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/__init__.py b/erpnext/accounts/search_criteria/trend_analyzer/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/trend_analyzer/__init__.py
+++ b/erpnext/accounts/search_criteria/trend_analyzer/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py b/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py
index 4a7d093..53a17ba 100644
--- a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py
+++ b/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # ********************************************* INITIALIZATION *******************************************
+from __future__ import unicode_literals
 out = []
 
 # Filter Values
diff --git a/erpnext/accounts/search_criteria/trial_balance/__init__.py b/erpnext/accounts/search_criteria/trial_balance/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/trial_balance/__init__.py
+++ b/erpnext/accounts/search_criteria/trial_balance/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/trial_balance/trial_balance.py b/erpnext/accounts/search_criteria/trial_balance/trial_balance.py
index d9f00d1..8d798fa 100644
--- a/erpnext/accounts/search_criteria/trial_balance/trial_balance.py
+++ b/erpnext/accounts/search_criteria/trial_balance/trial_balance.py
@@ -16,6 +16,7 @@
 
 # Columns
 #----------
+from __future__ import unicode_literals
 cl = [['Account','Data', '200px'],['Debit/Credit', 'Data', '100px'], ['Group/Ledger', 'Data', '100px'], ['Is PL Account', 'Data', '100px'], ['Opening (Dr)','Data', '100px'], ['Opening (Cr)','Data', '100px'],['Debit', 'Data', '100px'],['Credit', 'Data', '100px'],['Closing (Dr)', 'Data', '100px'],['Closing (Cr)', 'Data', '100px']]
 for c in cl:
 	colnames.append(c[0])
diff --git a/erpnext/accounts/search_criteria/voucher_wise_tax_details/__init__.py b/erpnext/accounts/search_criteria/voucher_wise_tax_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/voucher_wise_tax_details/__init__.py
+++ b/erpnext/accounts/search_criteria/voucher_wise_tax_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.py b/erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.py
index 43dd954..0f99d0b 100644
--- a/erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.py
+++ b/erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 if filter_values.get('based_on') == 'Sales Invoice':
   based_on_dt = 'Sales Invoice'
 else:
diff --git a/erpnext/accounts/search_criteria/yearly_transaction_summary/__init__.py b/erpnext/accounts/search_criteria/yearly_transaction_summary/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/accounts/search_criteria/yearly_transaction_summary/__init__.py
+++ b/erpnext/accounts/search_criteria/yearly_transaction_summary/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.py b/erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.py
index 99465a8..1e163b3 100644
--- a/erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.py
+++ b/erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 if not filter_values.get('from_fiscal_year'):
   msgprint("Please Select From Fiscal Year")
   raise Exception
diff --git a/erpnext/accounts/utils/__init__.py b/erpnext/accounts/utils/__init__.py
index f98c79e..05d2391f 100644
--- a/erpnext/accounts/utils/__init__.py
+++ b/erpnext/accounts/utils/__init__.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 from webnotes.model.doc import make_autoname, Document, addchild
 # Posts JV
 
diff --git a/erpnext/buying/__init__.py b/erpnext/buying/__init__.py
index 1bcab3d..d9bbbcc 100644
--- a/erpnext/buying/__init__.py
+++ b/erpnext/buying/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{"doctype":"Role", "role_name":"Purchase Manager", "name":"Purchase Manager"},
 	{"doctype":"Role", "role_name":"Purchase User", "name":"Purchase User"},
diff --git a/erpnext/buying/doctype/__init__.py b/erpnext/buying/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/__init__.py
+++ b/erpnext/buying/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/purchase_common/__init__.py b/erpnext/buying/doctype/purchase_common/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/purchase_common/__init__.py
+++ b/erpnext/buying/doctype/purchase_common/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index 522a704..8a1c9ee 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -635,7 +635,7 @@
 }
 
 cur_frm.cscript.toggle_contact_section = function(doc) {
-	doc.supplier ? unhide_field("contact_section") : hide_field("contact_section");
+	cur_frm.toggle_display("contact_section", doc.supplier);
 }
 
 cur_frm.cscript.project_name = function(doc, cdt, cdn) {
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.py b/erpnext/buying/doctype/purchase_common/purchase_common.py
index 5a65d52..b9e689f 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.py
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/buying/doctype/purchase_order/__init__.py b/erpnext/buying/doctype/purchase_order/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/purchase_order/__init__.py
+++ b/erpnext/buying/doctype/purchase_order/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index d84d06e..533e8ad 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.txt b/erpnext/buying/doctype/purchase_order/purchase_order.txt
index d5e8df5..b1a70bb 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.txt
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.txt
@@ -56,114 +56,6 @@
 		'name': u'Purchase Order'
 	},
 
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Production Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Purchase Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Purchase Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 0,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Purchase User',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'All',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Supplier',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 2,
-		'role': u'All',
-		'submit': 0,
-		'write': 1
-	},
-
 	# DocField
 	{
 		'colour': u'White:FFF',
@@ -428,7 +320,7 @@
 		'description': u"Rate at which supplier's currency is converted to company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'hidden': 0,
 		'label': u'Conversion Rate',
 		'no_copy': 1,
@@ -1102,5 +994,88 @@
 		'no_copy': 1,
 		'permlevel': 0,
 		'print_hide': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Purchase Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Purchase Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Purchase User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'All'
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'match': u'supplier',
+		'permlevel': 0,
+		'role': u'Supplier'
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 2,
+		'role': u'All',
+		'write': 1
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/buying/doctype/purchase_order_item/__init__.py b/erpnext/buying/doctype/purchase_order_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/purchase_order_item/__init__.py
+++ b/erpnext/buying/doctype/purchase_order_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/purchase_order_item_supplied/__init__.py b/erpnext/buying/doctype/purchase_order_item_supplied/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/purchase_order_item_supplied/__init__.py
+++ b/erpnext/buying/doctype/purchase_order_item_supplied/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/purchase_receipt_item_supplied/__init__.py b/erpnext/buying/doctype/purchase_receipt_item_supplied/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/purchase_receipt_item_supplied/__init__.py
+++ b/erpnext/buying/doctype/purchase_receipt_item_supplied/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/purchase_request/__init__.py b/erpnext/buying/doctype/purchase_request/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/purchase_request/__init__.py
+++ b/erpnext/buying/doctype/purchase_request/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/purchase_request/purchase_request.py b/erpnext/buying/doctype/purchase_request/purchase_request.py
index afa58d4..324af2a 100644
--- a/erpnext/buying/doctype/purchase_request/purchase_request.py
+++ b/erpnext/buying/doctype/purchase_request/purchase_request.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/buying/doctype/purchase_request_item/__init__.py b/erpnext/buying/doctype/purchase_request_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/purchase_request_item/__init__.py
+++ b/erpnext/buying/doctype/purchase_request_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/quality_inspection/__init__.py b/erpnext/buying/doctype/quality_inspection/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/quality_inspection/__init__.py
+++ b/erpnext/buying/doctype/quality_inspection/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/quality_inspection/quality_inspection.py b/erpnext/buying/doctype/quality_inspection/quality_inspection.py
index 698c1a2..1baac21 100644
--- a/erpnext/buying/doctype/quality_inspection/quality_inspection.py
+++ b/erpnext/buying/doctype/quality_inspection/quality_inspection.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/buying/doctype/quality_inspection_reading/__init__.py b/erpnext/buying/doctype/quality_inspection_reading/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/quality_inspection_reading/__init__.py
+++ b/erpnext/buying/doctype/quality_inspection_reading/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/supplier/__init__.py b/erpnext/buying/doctype/supplier/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/supplier/__init__.py
+++ b/erpnext/buying/doctype/supplier/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py
index 20de364..d77be88 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/erpnext/buying/doctype/supplier/supplier.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/buying/doctype/supplier_quotation/__init__.py b/erpnext/buying/doctype/supplier_quotation/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/supplier_quotation/__init__.py
+++ b/erpnext/buying/doctype/supplier_quotation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index f5b9335..1577eab 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.code import get_obj
 from utilities.transaction_base import TransactionBase
diff --git a/erpnext/buying/doctype/supplier_quotation_item/__init__.py b/erpnext/buying/doctype/supplier_quotation_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/doctype/supplier_quotation_item/__init__.py
+++ b/erpnext/buying/doctype/supplier_quotation_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/page/__init__.py b/erpnext/buying/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/page/__init__.py
+++ b/erpnext/buying/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/page/buying_home/__init__.py b/erpnext/buying/page/buying_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/page/buying_home/__init__.py
+++ b/erpnext/buying/page/buying_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/Report/Supplier Quotations/Supplier Quotations.txt b/erpnext/buying/report/supplier_quotations/supplier_quotations.txt
similarity index 100%
rename from erpnext/buying/Report/Supplier Quotations/Supplier Quotations.txt
rename to erpnext/buying/report/supplier_quotations/supplier_quotations.txt
diff --git a/erpnext/buying/search_criteria/__init__.py b/erpnext/buying/search_criteria/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/search_criteria/__init__.py
+++ b/erpnext/buying/search_criteria/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/search_criteria/itemwise_purchase_details/__init__.py b/erpnext/buying/search_criteria/itemwise_purchase_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/search_criteria/itemwise_purchase_details/__init__.py
+++ b/erpnext/buying/search_criteria/itemwise_purchase_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_bill/__init__.py b/erpnext/buying/search_criteria/pending_po_items_to_bill/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/search_criteria/pending_po_items_to_bill/__init__.py
+++ b/erpnext/buying/search_criteria/pending_po_items_to_bill/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_receive/__init__.py b/erpnext/buying/search_criteria/pending_po_items_to_receive/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/search_criteria/pending_po_items_to_receive/__init__.py
+++ b/erpnext/buying/search_criteria/pending_po_items_to_receive/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.py b/erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.py
index 066882b..e7ada4f 100644
--- a/erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.py
+++ b/erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.py
@@ -14,5 +14,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 colwidths[col_idx['Pending Quantity To Receive']] = '200px'
 colwidths[col_idx['Pending Amount To Receive']] = '200px'
diff --git a/erpnext/buying/search_criteria/purchase_in_transit/__init__.py b/erpnext/buying/search_criteria/purchase_in_transit/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/search_criteria/purchase_in_transit/__init__.py
+++ b/erpnext/buying/search_criteria/purchase_in_transit/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.py b/erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.py
index 8ecf88c..c8739bb 100644
--- a/erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.py
+++ b/erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #check mendatory
+from __future__ import unicode_literals
 if not filter_values.get('posting_date') or not filter_values.get('posting_date1'):
   msgprint("Please select From Posting Date and To Posting Date in 'Set Filters' section")
   raise Exception
diff --git a/erpnext/home/__init__.py b/erpnext/home/__init__.py
index 97106bd..436e8ec 100644
--- a/erpnext/home/__init__.py
+++ b/erpnext/home/__init__.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes import msgprint
 
diff --git a/erpnext/home/doctype/__init__.py b/erpnext/home/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/doctype/__init__.py
+++ b/erpnext/home/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/doctype/company_control/__init__.py b/erpnext/home/doctype/company_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/doctype/company_control/__init__.py
+++ b/erpnext/home/doctype/company_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/doctype/company_control/company_control.py b/erpnext/home/doctype/company_control/company_control.py
index 793da25..2e2d302 100644
--- a/erpnext/home/doctype/company_control/company_control.py
+++ b/erpnext/home/doctype/company_control/company_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/home/doctype/feed/__init__.py b/erpnext/home/doctype/feed/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/doctype/feed/__init__.py
+++ b/erpnext/home/doctype/feed/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/doctype/feed/feed.py b/erpnext/home/doctype/feed/feed.py
index 6d0f6f3..23ab4a3 100644
--- a/erpnext/home/doctype/feed/feed.py
+++ b/erpnext/home/doctype/feed/feed.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/home/doctype/home_control/__init__.py b/erpnext/home/doctype/home_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/doctype/home_control/__init__.py
+++ b/erpnext/home/doctype/home_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/doctype/home_control/home_control.py b/erpnext/home/doctype/home_control/home_control.py
index b1ddda4..1a8be78 100644
--- a/erpnext/home/doctype/home_control/home_control.py
+++ b/erpnext/home/doctype/home_control/home_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/home/page/__init__.py b/erpnext/home/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/page/__init__.py
+++ b/erpnext/home/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/page/activity/__init__.py b/erpnext/home/page/activity/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/page/activity/__init__.py
+++ b/erpnext/home/page/activity/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/page/activity/activity.py b/erpnext/home/page/activity/activity.py
index 8b8faf3..cbd28ec 100644
--- a/erpnext/home/page/activity/activity.py
+++ b/erpnext/home/page/activity/activity.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 
 @webnotes.whitelist()
diff --git a/erpnext/home/page/attributions/__init__.py b/erpnext/home/page/attributions/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/page/attributions/__init__.py
+++ b/erpnext/home/page/attributions/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/page/attributions/attributions.html b/erpnext/home/page/attributions/attributions.html
index f76c248..63919d0 100644
--- a/erpnext/home/page/attributions/attributions.html
+++ b/erpnext/home/page/attributions/attributions.html
@@ -40,10 +40,9 @@
 			<li>Ace - code editor</li>
 			<li>Slick Grid - report grid</li>
 			<li>jQPlot - graphs</li>
+			<li><a href="http://taitems.github.com/jQuery.Gantt/">JQuery.Gantt</a> - Gantt Chart</li>
 			<li>JSON2 - JSON builder, parser</li>
 			<li>JSColor - color picker</li>
-			<li>sprintf - string formatting</li>
-			<li>historyjs - AJAX history</li>
 		</ul>
 	</ul>
 
diff --git a/erpnext/home/page/attributions/attributions.py b/erpnext/home/page/attributions/attributions.py
index f807eb0..fbba099 100644
--- a/erpnext/home/page/attributions/attributions.py
+++ b/erpnext/home/page/attributions/attributions.py
@@ -1 +1,2 @@
+from __future__ import unicode_literals
 import webnotes
\ No newline at end of file
diff --git a/erpnext/home/page/dashboard/__init__.py b/erpnext/home/page/dashboard/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/page/dashboard/__init__.py
+++ b/erpnext/home/page/dashboard/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/page/dashboard/dashboard.py b/erpnext/home/page/dashboard/dashboard.py
index 29f1502..71ce805 100644
--- a/erpnext/home/page/dashboard/dashboard.py
+++ b/erpnext/home/page/dashboard/dashboard.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 dashboards = [
 	{
 		'type': 'account',
diff --git a/erpnext/home/page/desktop/__init__.py b/erpnext/home/page/desktop/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/page/desktop/__init__.py
+++ b/erpnext/home/page/desktop/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/page/profile_settings/__init__.py b/erpnext/home/page/profile_settings/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/home/page/profile_settings/__init__.py
+++ b/erpnext/home/page/profile_settings/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/home/page/profile_settings/profile_settings.py b/erpnext/home/page/profile_settings/profile_settings.py
index 4e48eee..97d286e 100644
--- a/erpnext/home/page/profile_settings/profile_settings.py
+++ b/erpnext/home/page/profile_settings/profile_settings.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import load_json, cint, nowdate
diff --git a/erpnext/hr/__init__.py b/erpnext/hr/__init__.py
index 930b9ee..96bd47b 100644
--- a/erpnext/hr/__init__.py
+++ b/erpnext/hr/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{"doctype":"Role", "role_name":"Employee", "name":"Employee"},
 	{"doctype":"Role", "role_name":"HR Manager", "name":"HR Manager"},
diff --git a/erpnext/hr/doctype/__init__.py b/erpnext/hr/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/__init__.py
+++ b/erpnext/hr/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/appraisal/__init__.py b/erpnext/hr/doctype/appraisal/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/appraisal/__init__.py
+++ b/erpnext/hr/doctype/appraisal/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/appraisal/appraisal.py b/erpnext/hr/doctype/appraisal/appraisal.py
index a889e5f..13d2f3f 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.py
+++ b/erpnext/hr/doctype/appraisal/appraisal.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/appraisal_goal/__init__.py b/erpnext/hr/doctype/appraisal_goal/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/appraisal_goal/__init__.py
+++ b/erpnext/hr/doctype/appraisal_goal/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/appraisal_template/__init__.py b/erpnext/hr/doctype/appraisal_template/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/appraisal_template/__init__.py
+++ b/erpnext/hr/doctype/appraisal_template/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/appraisal_template_goal/__init__.py b/erpnext/hr/doctype/appraisal_template_goal/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/appraisal_template_goal/__init__.py
+++ b/erpnext/hr/doctype/appraisal_template_goal/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/attendance/__init__.py b/erpnext/hr/doctype/attendance/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/attendance/__init__.py
+++ b/erpnext/hr/doctype/attendance/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/attendance/attendance.py b/erpnext/hr/doctype/attendance/attendance.py
index ec0a604..9d52a8b 100644
--- a/erpnext/hr/doctype/attendance/attendance.py
+++ b/erpnext/hr/doctype/attendance/attendance.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/attendance_control_panel/__init__.py b/erpnext/hr/doctype/attendance_control_panel/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/attendance_control_panel/__init__.py
+++ b/erpnext/hr/doctype/attendance_control_panel/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py b/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py
index 7726980..d845d10 100644
--- a/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py
+++ b/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -48,7 +49,7 @@
 		res = sql("select name, employee_name from `tabEmployee` where status = 'Active' and docstatus !=2") 
 	 
 		for d in dt:
-			for r in res:			 
+			for r in res:
 				lst.append([r[0],r[1],d,'',fy,comp,sr])
 
 		return lst
@@ -68,7 +69,7 @@
 		else:
 			r = 1
 		dateList = [getdate(self.doc.att_fr_date)+datetime.timedelta(days=i) for i in range(0,r)]
-		dt=([str(date) for date in dateList])
+		dt=([formatdate(cstr(date)) for date in dateList])
 		
 		return dt
 
diff --git a/erpnext/hr/doctype/branch/__init__.py b/erpnext/hr/doctype/branch/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/branch/__init__.py
+++ b/erpnext/hr/doctype/branch/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/deduction_type/__init__.py b/erpnext/hr/doctype/deduction_type/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/deduction_type/__init__.py
+++ b/erpnext/hr/doctype/deduction_type/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/department/__init__.py b/erpnext/hr/doctype/department/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/department/__init__.py
+++ b/erpnext/hr/doctype/department/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/designation/__init__.py b/erpnext/hr/doctype/designation/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/designation/__init__.py
+++ b/erpnext/hr/doctype/designation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/earning_type/__init__.py b/erpnext/hr/doctype/earning_type/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/earning_type/__init__.py
+++ b/erpnext/hr/doctype/earning_type/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/employee/__init__.py b/erpnext/hr/doctype/employee/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/employee/__init__.py
+++ b/erpnext/hr/doctype/employee/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 85fbbc1..bb9a4ef 100644
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/employee_education/__init__.py b/erpnext/hr/doctype/employee_education/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/employee_education/__init__.py
+++ b/erpnext/hr/doctype/employee_education/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/employee_external_work_history/__init__.py b/erpnext/hr/doctype/employee_external_work_history/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/employee_external_work_history/__init__.py
+++ b/erpnext/hr/doctype/employee_external_work_history/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/employee_internal_work_history/__init__.py b/erpnext/hr/doctype/employee_internal_work_history/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/employee_internal_work_history/__init__.py
+++ b/erpnext/hr/doctype/employee_internal_work_history/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/employee_training/__init__.py b/erpnext/hr/doctype/employee_training/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/employee_training/__init__.py
+++ b/erpnext/hr/doctype/employee_training/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/employment_type/__init__.py b/erpnext/hr/doctype/employment_type/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/employment_type/__init__.py
+++ b/erpnext/hr/doctype/employment_type/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/expense_claim/__init__.py b/erpnext/hr/doctype/expense_claim/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/expense_claim/__init__.py
+++ b/erpnext/hr/doctype/expense_claim/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index 206d208..eabb476 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -51,7 +51,7 @@
 		$c_obj(make_doclist(doc.doctype, doc.name),'set_approver','', function(r,rt){
 			if(r.message){
 				doc.employee_name = r.message['emp_nm'];
-				get_field(doc.doctype, 'exp_approver' , doc.name).options = r.message['app_lst'];				
+				wn.meta.get_docfield(doc.doctype, 'exp_approver' , doc.name).options = r.message['app_lst'];				
 				refresh_many(['exp_approver','employee_name']);
 			}		
 		});
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index 94761a1..ee02dc3 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/expense_claim_detail/__init__.py b/erpnext/hr/doctype/expense_claim_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/expense_claim_detail/__init__.py
+++ b/erpnext/hr/doctype/expense_claim_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/expense_claim_type/__init__.py b/erpnext/hr/doctype/expense_claim_type/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/expense_claim_type/__init__.py
+++ b/erpnext/hr/doctype/expense_claim_type/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/grade/__init__.py b/erpnext/hr/doctype/grade/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/grade/__init__.py
+++ b/erpnext/hr/doctype/grade/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/holiday/__init__.py b/erpnext/hr/doctype/holiday/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/holiday/__init__.py
+++ b/erpnext/hr/doctype/holiday/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/holiday_list/__init__.py b/erpnext/hr/doctype/holiday_list/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/holiday_list/__init__.py
+++ b/erpnext/hr/doctype/holiday_list/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/holiday_list/holiday_list.py b/erpnext/hr/doctype/holiday_list/holiday_list.py
index 78c9e33..dc75e9a 100644
--- a/erpnext/hr/doctype/holiday_list/holiday_list.py
+++ b/erpnext/hr/doctype/holiday_list/holiday_list.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/leave_allocation/__init__.py b/erpnext/hr/doctype/leave_allocation/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/hr/doctype/leave_allocation/__init__.py
+++ b/erpnext/hr/doctype/leave_allocation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
index c6776ad..bf10468 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/leave_application/__init__.py b/erpnext/hr/doctype/leave_application/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/hr/doctype/leave_application/__init__.py
+++ b/erpnext/hr/doctype/leave_application/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 9b1b6fc..b17b91f 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/leave_control_panel/__init__.py b/erpnext/hr/doctype/leave_control_panel/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/leave_control_panel/__init__.py
+++ b/erpnext/hr/doctype/leave_control_panel/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py
index c41a95e..13c886e 100644
--- a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py
+++ b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/leave_type/__init__.py b/erpnext/hr/doctype/leave_type/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/leave_type/__init__.py
+++ b/erpnext/hr/doctype/leave_type/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/other_income_detail/__init__.py b/erpnext/hr/doctype/other_income_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/other_income_detail/__init__.py
+++ b/erpnext/hr/doctype/other_income_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/salary_manager/__init__.py b/erpnext/hr/doctype/salary_manager/__init__.py
index ca974f3..3405b48 100644
--- a/erpnext/hr/doctype/salary_manager/__init__.py
+++ b/erpnext/hr/doctype/salary_manager/__init__.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 from webnotes import ValidationError
 
 class SalarySlipExistsError(ValidationError): pass
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.py b/erpnext/hr/doctype/salary_manager/salary_manager.py
index 111366b..317e72d 100644
--- a/erpnext/hr/doctype/salary_manager/salary_manager.py
+++ b/erpnext/hr/doctype/salary_manager/salary_manager.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -24,7 +25,6 @@
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
 from webnotes import session, form, is_testing, msgprint, errprint
 
-set = webnotes.conn.set
 sql = webnotes.conn.sql
 get_value = webnotes.conn.get_value
 in_transaction = webnotes.conn.in_transaction
@@ -46,14 +46,14 @@
 		"""
 		
 		cond = self.get_filter_condition()
+		cond += self.get_joining_releiving_condition()
 		
 		emp_list = sql("""
 			select t1.name
 			from `tabEmployee` t1, `tabSalary Structure` t2 
 			where t1.docstatus!=2 and t2.docstatus != 2 
-			and ifnull(t1.status, 'Left') = 'Active' and ifnull(t2.is_active, 'No') = 'Yes' 
 			and t1.name = t2.employee
-		%s """% cond)
+		%s """% cond, debug=1)
 
 		return emp_list
 		
@@ -64,9 +64,19 @@
 		cond = ''
 		for f in ['company', 'branch', 'department', 'designation', 'grade']:
 			if self.doc.fields.get(f):
-				cond += " and t1." + f + " = '" + self.doc.fields.get(f) + "'"
-				
+				cond += " and t1." + f + " = '" + self.doc.fields.get(f) + "'"		
+		
 		return cond
+
+		
+	def get_joining_releiving_condition(self):
+		m = self.get_month_details(self.doc.fiscal_year, self.doc.month)
+		cond = """
+			and ifnull(t1.date_of_joining, '0000-00-00') <= '%(month_end_date)s' 
+			and ifnull(t1.relieving_date, '2199-12-31') >= '%(month_start_date)s' 
+		""" % m
+		return cond
+		
 		
 		
 	def check_mandatory(self):
@@ -74,6 +84,26 @@
 			if not self.doc.fields[f]:
 				msgprint("Please select %s to proceed" % f, raise_exception=1)
 		
+	
+	def get_month_details(self, year, month):
+		ysd = sql("select year_start_date from `tabFiscal Year` where name ='%s'"%year)[0][0]
+		if ysd:
+			from dateutil.relativedelta import relativedelta
+			import calendar, datetime
+			diff_mnt = cint(month)-cint(ysd.month)
+			if diff_mnt<0:
+				diff_mnt = 12-int(ysd.month)+cint(month)
+			msd = ysd + relativedelta(months=diff_mnt) # month start date
+			month_days = cint(calendar.monthrange(cint(msd.year) ,cint(month))[1]) # days in month
+			med = datetime.date(msd.year, cint(month), month_days) # month end date
+			return {
+				'year': msd.year, 
+				'month_start_date': msd, 
+				'month_end_date': med, 
+				'month_days': month_days
+			}
+
+		
 		
 	def create_sal_slip(self):
 		"""
@@ -82,12 +112,7 @@
 		"""
 		
 		emp_list = self.get_emp_list()
-		log = ""
-		if emp_list:
-			log = "<table><tr><td colspan = 2>Following Salary Slip has been created: </td></tr><tr><td><u>SAL SLIP ID</u></td><td><u>EMPLOYEE NAME</u></td></tr>"
-		else:
-			log = "<table><tr><td colspan = 2>No employee found for the above selected criteria</td></tr>"
-			
+		ss_list = []
 		for emp in emp_list:
 			if not sql("""select name from `tabSalary Slip` 
 					where docstatus!= 2 and employee = %s and month = %s and fiscal_year = %s and company = %s
@@ -111,9 +136,18 @@
 				for d in getlist(ss_obj.doclist, 'deduction_details'):
 					d.save()
 					
-				log += '<tr><td>' + ss.name + '</td><td>' + ss_obj.doc.employee_name + '</td></tr>'
-		log += '</table>'
-		return log	
+				ss_list.append(ss.name)
+		
+		return self.create_log(ss_list)
+	
+		
+	def create_log(self, ss_list):
+		log = "<b>No employee for the above selected criteria OR salary slip already created</b>"
+		if ss_list:
+			log = "<b>Created Salary Slip has been created: </b>\
+			<br><br>%s" % '<br>'.join(ss_list)
+		return log
+	
 				
 	def get_sal_slip_list(self):
 		"""
@@ -132,28 +166,49 @@
 		"""
 			Submit all salary slips based on selected criteria
 		"""
-		ss_list = self.get_sal_slip_list()
-		log = ""
-		if ss_list:
-			log = 	"""<table>
-						<tr>
-							<td colspan = 2>Following Salary Slip has been submitted: </td>
-						</tr>
-						<tr>
-							<td><u>SAL SLIP ID</u></td>
-							<td><u>EMPLOYEE NAME</u></td>
-						</tr>
-					"""
-		else:
-			log = "<table><tr><td colspan = 2>No salary slip found to submit for the above selected criteria</td></tr>"
-			
+		ss_list = self.get_sal_slip_list()		
+		not_submitted_ss = []
 		for ss in ss_list:
 			ss_obj = get_obj("Salary Slip",ss[0],with_children=1)
-			set(ss_obj.doc, 'docstatus', 1)
-			ss_obj.on_submit()
+			try:
+				webnotes.conn.set(ss_obj.doc, 'email_check', cint(self.doc.send_mail))
+				if cint(self.doc.send_email) == 1:
+					ss_obj.send_mail_funct()
+					
+				webnotes.conn.set(ss_obj.doc, 'docstatus', 1)
+			except Exception,e:
+				not_submitted_ss.append(ss[0])
+				msgprint(e)
+				continue
+				
+		return self.create_submit_log(ss_list, not_submitted_ss)
+		
+		
+	def create_submit_log(self, all_ss, not_submitted_ss):
+		log = ''
+		if not all_ss:
+			log = "No salary slip found to submit for the above selected criteria"
+		else:
+			all_ss = [d[0] for d in all_ss]
 			
-			log += '<tr><td>' + ss[0] + '</td><td>' + ss_obj.doc.employee_name + '</td></tr>'
-		log += '</table>'	
+		submitted_ss = list(set(all_ss) - set(not_submitted_ss))		
+		if submitted_ss:
+			mail_sent_msg = self.doc.send_email and " (Mail has been sent to the employee)" or ""
+			log = """
+			<b>Submitted Salary Slips%s:</b>\
+			<br><br> %s <br><br>
+			""" % (mail_sent_msg, '<br>'.join(submitted_ss))
+			
+		if not_submitted_ss:
+			log += """
+				<b>Not Submitted Salary Slips: </b>\
+				<br><br> %s <br><br> \
+				Reason: <br>\
+				May be company email id specified in employee master is not valid. <br> \
+				Please mention correct email id in employee master or if you don't want to \
+				send mail, uncheck 'Send Email' checkbox. <br>\
+				Then try to submit Salary Slip again.
+			"""% ('<br>'.join(not_submitted_ss))
 		return log	
 			
 			
@@ -168,7 +223,7 @@
 		""" % (self.doc.month, self.doc.fiscal_year, cond))
 		
 		return flt(tot[0][0])
-		
+	
 		
 	def get_acc_details(self):
 		"""
diff --git a/erpnext/hr/doctype/salary_manager/test_salary_manager.py b/erpnext/hr/doctype/salary_manager/test_salary_manager.py
index 8cea105..b689b51 100644
--- a/erpnext/hr/doctype/salary_manager/test_salary_manager.py
+++ b/erpnext/hr/doctype/salary_manager/test_salary_manager.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import unittest
 import webnotes
 
diff --git a/erpnext/hr/doctype/salary_slip/__init__.py b/erpnext/hr/doctype/salary_slip/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/salary_slip/__init__.py
+++ b/erpnext/hr/doctype/salary_slip/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index 5fe93a6..3e61665 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -45,9 +45,13 @@
 // Calculate total if lwp exists
 // ------------------------------------------------------------------------
 cur_frm.cscript.leave_without_pay = function(doc,dt,dn){
-	doc.payment_days = flt(doc.total_days_in_month) - flt(doc.leave_without_pay);
-	refresh_field('payment_days');
-	calculate_all(doc, dt, dn);
+	if (doc.employee && doc.fiscal_year && doc.month) {
+		$c_obj(make_doclist(doc.doctype,doc.name), 'get_leave_details',doc.leave_without_pay,function(r, rt) {
+			var doc = locals[dt][dn];
+			cur_frm.refresh();
+			calculate_all(doc, dt, dn);
+		});
+	}
 }
 
 // Calculate all
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index 3439fc8..ff72652 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
@@ -39,27 +40,22 @@
 		self.doclist = doclist
 		
 		
-	# autoname
-	#=======================================================
 	def autoname(self):
 		self.doc.name = make_autoname('Sal Slip/' +self.doc.employee + '/.#####') 
 
-	# Get employee details
-	#=======================================================
-	def get_emp_and_leave_details(self):
-		# Get payment days
-		if self.doc.fiscal_year and self.doc.month:
-			self.get_leave_details()
 
-		# check sal structure
+	def get_emp_and_leave_details(self):
 		if self.doc.employee:
+			# Get payment days
+			if self.doc.fiscal_year and self.doc.month:
+				self.get_leave_details()
+
+			# check sal structure
 			struct = self.check_sal_struct()
 			if struct:
 				self.pull_sal_struct(struct)
 
 
-	# Check sal structure
-	#=======================================================
 	def check_sal_struct(self):
 		struct = sql("select name from `tabSalary Structure` where employee ='%s' and is_active = 'Yes' "%self.doc.employee)
 		if not struct:
@@ -67,8 +63,7 @@
 			self.doc.employee = ''
 		return struct and struct[0][0] or ''
 
-	# Pull struct details
-	#=======================================================
+
 	def pull_sal_struct(self, struct):
 		self.doclist = self.doc.clear_table(self.doclist, 'earning_details')
 		self.doclist = self.doc.clear_table(self.doclist, 'deduction_details')
@@ -81,41 +76,48 @@
 		self.doc.esic_no = basic_info[0][2]
 		self.doc.pf_no = basic_info[0][3]
 
-	# Get leave details
-	#=======================================================
-	def get_leave_details(self):
-		m = self.get_month_details()
-		lwp = self.calculate_lwp(m)
-		self.doc.total_days_in_month = m[3]
+
+	def get_leave_details(self, lwp=None):
+		m = get_obj('Salary Manager').get_month_details(self.doc.fiscal_year, self.doc.month)
+		
+		if not lwp:
+			lwp = self.calculate_lwp(m)
+		self.doc.total_days_in_month = m['month_days']
 		self.doc.leave_without_pay = lwp
-		self.doc.payment_days = flt(m[3]) - flt(lwp)
+		payment_days = flt(self.get_payment_days(m)) - flt(lwp)
+		self.doc.payment_days = payment_days > 0 and payment_days or 0
+		
 
-	# Get month details
-	#=======================================================
-	def get_month_details(self):
-		ysd = sql("select year_start_date from `tabFiscal Year` where name ='%s'"%self.doc.fiscal_year)[0][0]
-		if ysd:
-			from dateutil.relativedelta import relativedelta
-			import calendar, datetime
-			mnt = int(self.doc.month)
-			diff_mnt = int(mnt)-int(ysd.month)
-			if diff_mnt<0:
-				diff_mnt = 12-int(ysd.month)+int(mnt)
-			msd = ysd + relativedelta(months=diff_mnt) # month start date
-			month_days = cint(calendar.monthrange(cint(msd.year) ,cint(self.doc.month))[1]) # days in month
-			med = datetime.date(msd.year, cint(self.doc.month), month_days) # month end date
-			return msd.year, msd, med, month_days
+	def get_payment_days(self, m):
+		payment_days = m['month_days']
+		emp = webnotes.conn.sql("select date_of_joining, relieving_date from `tabEmployee` \
+			where name = %s", self.doc.employee, as_dict=1)[0]
+			
+		if emp['relieving_date']:
+			if getdate(emp['relieving_date']) > m['month_start_date'] and getdate(emp['relieving_date']) < m['month_end_date']:
+				payment_days = getdate(emp['relieving_date']).day
+			elif getdate(emp['relieving_date']) < m['month_start_date']:
+				payment_days = 0
+			
+		if emp['date_of_joining']:
+			if getdate(emp['date_of_joining']) > m['month_start_date'] and getdate(emp['date_of_joining']) < m['month_end_date']:
+				payment_days = payment_days - getdate(emp['date_of_joining']).day + 1
+			elif getdate(emp['date_of_joining']) > m['month_end_date']:
+				payment_days = 0
 
-	# Calculate LWP
-	#=======================================================
+		return payment_days
+
+
+
+
 	def calculate_lwp(self, m):
-		holidays = sql("select t1.holiday_date from `tabHoliday` t1, tabEmployee t2 where t1.parent = t2.holiday_list and t2.name = '%s' and t1.holiday_date between '%s' and '%s'" % (self.doc.employee, m[1], m[2]))
+		holidays = sql("select t1.holiday_date from `tabHoliday` t1, tabEmployee t2 where t1.parent = t2.holiday_list and t2.name = '%s' and t1.holiday_date between '%s' and '%s'" % (self.doc.employee, m['month_start_date'], m['month_end_date']))
 		if not holidays:
 			holidays = sql("select t1.holiday_date from `tabHoliday` t1, `tabHoliday List` t2 where t1.parent = t2.name and ifnull(t2.is_default, 0) = 1 and t2.fiscal_year = '%s'" % self.doc.fiscal_year)
 		holidays = [cstr(i[0]) for i in holidays]
 		lwp = 0
-		for d in range(m[3]):
-			dt = add_days(cstr(m[1]), d)
+		for d in range(m['month_days']):
+			dt = add_days(cstr(m['month_start_date']), d)
 			if dt not in holidays:
 				leave = sql("""
 					select t1.name, t1.half_day
@@ -130,8 +132,7 @@
 					lwp = cint(leave[0][1]) and lwp + 0.5 or lwp + 1
 		return lwp
 					
-	# Check existing
-	#=======================================================
+
 	def check_existing(self):
 		ret_exist = sql("select name from `tabSalary Slip` where month = '%s' and fiscal_year = '%s' and docstatus != 2 and employee = '%s' and name !='%s'" % (self.doc.month,self.doc.fiscal_year,self.doc.employee,self.doc.name))
 		if ret_exist:
@@ -139,8 +140,7 @@
 			self.doc.employee = ''
 			raise Exception
 
-	# Validate
-	#=======================================================
+
 	def validate(self):
 		self.check_existing()
 		dcc = TransactionBase().get_company_currency(self.doc.company)
@@ -155,6 +155,8 @@
 		for d in getlist(self.doclist, 'earning_details'):
 			if cint(d.e_depends_on_lwp) == 1:
 				d.e_modified_amount = round(flt(d.e_amount)*flt(self.doc.payment_days)/cint(self.doc.total_days_in_month), 2)
+			elif not self.doc.payment_days:
+				d.e_modified_amount = 0
 			self.doc.gross_pay += d.e_modified_amount
 	
 	def calculate_ded_total(self):
@@ -165,6 +167,9 @@
 		for d in getlist(self.doclist, 'deduction_details'):
 			if cint(d.d_depends_on_lwp) == 1:
 				d.d_modified_amount = round(flt(d.d_amount)*flt(self.doc.payment_days)/cint(self.doc.total_days_in_month), 2)
+			elif not self.doc.payment_days:
+				d.d_modified_amount = 0
+			
 			self.doc.total_deduction += d.d_modified_amount
 				
 	def calculate_net_pay(self):
@@ -176,17 +181,12 @@
 		self.doc.net_pay = flt(self.doc.gross_pay) - flt(self.doc.total_deduction)
 		self.doc.rounded_total = round(self.doc.net_pay)
 		
-	# ON SUBMIT
-	#=======================================================
+
 	def on_submit(self):
 		if(self.doc.email_check == 1):			
 			self.send_mail_funct()
 			
-	
 
-
-	# Send mail
-	#=======================================================
 	def send_mail_funct(self):	 
 		from webnotes.utils.email_lib import sendmail
 		emailid_ret=sql("select company_email from `tabEmployee` where name = '%s'"%self.doc.employee)
@@ -281,4 +281,4 @@
 			</table></div>'''%(cstr(letter_head[0][0]),cstr(self.doc.employee), cstr(self.doc.employee_name), cstr(self.doc.month), cstr(self.doc.fiscal_year), cstr(self.doc.department), cstr(self.doc.branch), cstr(self.doc.designation), cstr(self.doc.grade), cstr(self.doc.bank_account_no), cstr(self.doc.bank_name), cstr(self.doc.arrear_amount), cstr(self.doc.payment_days), earn_table, ded_table, cstr(flt(self.doc.gross_pay)), cstr(flt(self.doc.total_deduction)), cstr(flt(self.doc.net_pay)), cstr(self.doc.total_in_words))
 			sendmail([receiver], subject=subj, msg = msg)
 		else:
-			msgprint("Company Email ID not found.")
+			msgprint("Company Email ID not found, hence mail not sent")
diff --git a/erpnext/hr/doctype/salary_slip_deduction/__init__.py b/erpnext/hr/doctype/salary_slip_deduction/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/salary_slip_deduction/__init__.py
+++ b/erpnext/hr/doctype/salary_slip_deduction/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/salary_slip_earning/__init__.py b/erpnext/hr/doctype/salary_slip_earning/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/salary_slip_earning/__init__.py
+++ b/erpnext/hr/doctype/salary_slip_earning/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/salary_structure/__init__.py b/erpnext/hr/doctype/salary_structure/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/salary_structure/__init__.py
+++ b/erpnext/hr/doctype/salary_structure/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/salary_structure/listview.js b/erpnext/hr/doctype/salary_structure/listview.js
new file mode 100644
index 0000000..77259b5
--- /dev/null
+++ b/erpnext/hr/doctype/salary_structure/listview.js
@@ -0,0 +1,47 @@
+// render
+wn.doclistviews['Salary Structure'] = wn.views.ListView.extend({
+	init: function(d) {
+		this._super(d)
+		this.fields = this.fields.concat([
+			"`tabSalary Structure`.employee_name",
+			"`tabSalary Structure`.designation",
+			"`tabSalary Structure`.branch",
+			"`tabSalary Structure`.net_pay",
+			"`tabSalary Structure`.from_date",
+			"`tabSalary Structure`.to_date",
+			"`tabSalary Structure`.company"
+		]);
+		this.stats = this.stats.concat(['company']);
+	},
+
+	prepare_data: function(data) {
+		this._super(data);
+		var concat_list = [];
+		data.designation && concat_list.push(data.designation);
+		data.branch && concat_list.push(data.branch);
+		data.description = concat_list.join(", ");
+		data.period = data.from_date + (data.to_date && ' to ' + data.to_date);
+	},
+	
+	columns: [
+		{width: '2%', content: 'check'},
+		{width: '2%', content: 'docstatus'},
+		{width: '13%', content: 'name'},
+		{width: '18%', content: 'employee_name'},
+		{width: '24%', content: 'description+tags', css: {'color': '#aaa'}},
+		{width: '26%', content:'period', css: {'text-align': 'right', 'color':'#aaa'}},
+		{
+			width: '15%',
+			content: function(parent, data) {
+				$(parent).html(
+					(
+						data.company
+						? wn.boot.company[data.company].default_currency
+						: sys_defaults.currency
+					)
+					+ ' ' + fmt_money(data.net_pay));
+			},
+			css: {'text-align': 'right'},
+		},
+]
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/erpnext/hr/doctype/salary_structure/salary_structure.js
index 2cfab81..27ed19e 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.js
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.js
@@ -29,11 +29,10 @@
 //=======================================================================
 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']);
-  
-    get_field(doc.doctype, 'employee', doc.name).permlevel = 1;
-    refresh_field('employee');
+    cur_frm.add_custom_button('Make Salary Slip', cur_frm.cscript['Make Salary Slip']);  
   }
+
+  cur_frm.toggle_enable('employee', doc.__islocal);
 }
 
 
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index b2d10b8..c4fd54a 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/hr/doctype/salary_structure_deduction/__init__.py b/erpnext/hr/doctype/salary_structure_deduction/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/salary_structure_deduction/__init__.py
+++ b/erpnext/hr/doctype/salary_structure_deduction/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/doctype/salary_structure_earning/__init__.py b/erpnext/hr/doctype/salary_structure_earning/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/doctype/salary_structure_earning/__init__.py
+++ b/erpnext/hr/doctype/salary_structure_earning/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/page/__init__.py b/erpnext/hr/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/page/__init__.py
+++ b/erpnext/hr/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/page/hr_home/__init__.py b/erpnext/hr/page/hr_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/page/hr_home/__init__.py
+++ b/erpnext/hr/page/hr_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/__init__.py b/erpnext/hr/search_criteria/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/__init__.py
+++ b/erpnext/hr/search_criteria/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/employee_appraisals/__init__.py b/erpnext/hr/search_criteria/employee_appraisals/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/employee_appraisals/__init__.py
+++ b/erpnext/hr/search_criteria/employee_appraisals/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/employee_information/__init__.py b/erpnext/hr/search_criteria/employee_information/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/employee_information/__init__.py
+++ b/erpnext/hr/search_criteria/employee_information/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/employee_information/employee_information.py b/erpnext/hr/search_criteria/employee_information/employee_information.py
index 74dd259..6e08872 100644
--- a/erpnext/hr/search_criteria/employee_information/employee_information.py
+++ b/erpnext/hr/search_criteria/employee_information/employee_information.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 for c in range(0,len(colnames)):
   l = (len(colnames[c])*9) 
   if l < 150 : col_width = '150px'
diff --git a/erpnext/hr/search_criteria/employees_birthday/__init__.py b/erpnext/hr/search_criteria/employees_birthday/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/employees_birthday/__init__.py
+++ b/erpnext/hr/search_criteria/employees_birthday/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/employeewise_balance_leave_report/__init__.py b/erpnext/hr/search_criteria/employeewise_balance_leave_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/employeewise_balance_leave_report/__init__.py
+++ b/erpnext/hr/search_criteria/employeewise_balance_leave_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.py b/erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.py
index 2721a6b..cb82210 100644
--- a/erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.py
+++ b/erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 leave_types = sql("""
 	SELECT name FROM `tabLeave Type`
 	WHERE
diff --git a/erpnext/hr/search_criteria/expense_claims/__init__.py b/erpnext/hr/search_criteria/expense_claims/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/expense_claims/__init__.py
+++ b/erpnext/hr/search_criteria/expense_claims/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/monthly_attendance_details/__init__.py b/erpnext/hr/search_criteria/monthly_attendance_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/monthly_attendance_details/__init__.py
+++ b/erpnext/hr/search_criteria/monthly_attendance_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.py b/erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.py
index a45c09d..dff95df 100644
--- a/erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.py
+++ b/erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.py
@@ -16,6 +16,7 @@
 
 #add column employee, employee name
 #--------------------------------------------------------------------------------------
+from __future__ import unicode_literals
 col =[['Employee','Link','155px','Employee'],['Employee Name','Data','150px','']]
 
 for c in col:
diff --git a/erpnext/hr/search_criteria/monthly_salary_register/__init__.py b/erpnext/hr/search_criteria/monthly_salary_register/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/monthly_salary_register/__init__.py
+++ b/erpnext/hr/search_criteria/monthly_salary_register/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/monthly_salary_register/monthly_salary_register.py b/erpnext/hr/search_criteria/monthly_salary_register/monthly_salary_register.py
index bbf6fb0..b22c32a 100644
--- a/erpnext/hr/search_criteria/monthly_salary_register/monthly_salary_register.py
+++ b/erpnext/hr/search_criteria/monthly_salary_register/monthly_salary_register.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 colwidths[col_idx['Employee Name']]="120px" 
 colwidths[col_idx['Leave Without Pay']] = '120px'
 
diff --git a/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/__init__.py b/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/__init__.py
+++ b/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.py b/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.py
index f116d90..7d5feca 100644
--- a/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.py
+++ b/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 status = filter_values.get('status')
 month = filter_values.get('month')
 
diff --git a/erpnext/hr/search_criteria/salary_register/__init__.py b/erpnext/hr/search_criteria/salary_register/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/salary_register/__init__.py
+++ b/erpnext/hr/search_criteria/salary_register/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/salary_register/salary_register.py b/erpnext/hr/search_criteria/salary_register/salary_register.py
index 875c7db..088b9bb 100644
--- a/erpnext/hr/search_criteria/salary_register/salary_register.py
+++ b/erpnext/hr/search_criteria/salary_register/salary_register.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 sal_slips_ids = ''
 for r in res:
   if not sal_slips_ids == '': sal_slips_ids +=","
diff --git a/erpnext/hr/search_criteria/salary_slips/__init__.py b/erpnext/hr/search_criteria/salary_slips/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/salary_slips/__init__.py
+++ b/erpnext/hr/search_criteria/salary_slips/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/hr/search_criteria/salary_structure_details/__init__.py b/erpnext/hr/search_criteria/salary_structure_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/hr/search_criteria/salary_structure_details/__init__.py
+++ b/erpnext/hr/search_criteria/salary_structure_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/__init__.py b/erpnext/patches/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/__init__.py
+++ b/erpnext/patches/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/april_2012/__init__.py b/erpnext/patches/april_2012/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/april_2012/__init__.py
+++ b/erpnext/patches/april_2012/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/april_2012/after_sync_cleanup.py b/erpnext/patches/april_2012/after_sync_cleanup.py
index 33840a0..1856ee9 100644
--- a/erpnext/patches/april_2012/after_sync_cleanup.py
+++ b/erpnext/patches/april_2012/after_sync_cleanup.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model import delete_doc
diff --git a/erpnext/patches/april_2012/change_cacheitem_schema.py b/erpnext/patches/april_2012/change_cacheitem_schema.py
index dc3c253..4d46f2c 100644
--- a/erpnext/patches/april_2012/change_cacheitem_schema.py
+++ b/erpnext/patches/april_2012/change_cacheitem_schema.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.commit()
diff --git a/erpnext/patches/april_2012/delete_about_contact.py b/erpnext/patches/april_2012/delete_about_contact.py
index e7173d9..4bd10d7 100644
--- a/erpnext/patches/april_2012/delete_about_contact.py
+++ b/erpnext/patches/april_2012/delete_about_contact.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model import delete_doc
diff --git a/erpnext/patches/april_2012/naming_series_patch.py b/erpnext/patches/april_2012/naming_series_patch.py
index 574d036..434d1a4 100644
--- a/erpnext/patches/april_2012/naming_series_patch.py
+++ b/erpnext/patches/april_2012/naming_series_patch.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.code import get_obj
diff --git a/erpnext/patches/april_2012/reload_c_form.py b/erpnext/patches/april_2012/reload_c_form.py
index bebca6f..0b10904 100644
--- a/erpnext/patches/april_2012/reload_c_form.py
+++ b/erpnext/patches/april_2012/reload_c_form.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/april_2012/remove_default_from_rv_detail.py b/erpnext/patches/april_2012/remove_default_from_rv_detail.py
index cf81f6d..9ce5e24 100644
--- a/erpnext/patches/april_2012/remove_default_from_rv_detail.py
+++ b/erpnext/patches/april_2012/remove_default_from_rv_detail.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocField` set `default` = '' where fieldname = 'cost_center' and parent = 'RV Detail' and `default` = 'Purchase - TC'")
diff --git a/erpnext/patches/april_2012/repost_stock_for_posting_time.py b/erpnext/patches/april_2012/repost_stock_for_posting_time.py
index 095449a..a1283a0 100644
--- a/erpnext/patches/april_2012/repost_stock_for_posting_time.py
+++ b/erpnext/patches/april_2012/repost_stock_for_posting_time.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.code import get_obj
diff --git a/erpnext/patches/april_2012/serial_no_fixes.py b/erpnext/patches/april_2012/serial_no_fixes.py
index f291e10..be6fbeb 100644
--- a/erpnext/patches/april_2012/serial_no_fixes.py
+++ b/erpnext/patches/april_2012/serial_no_fixes.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/april_2012/update_appraisal_permission.py b/erpnext/patches/april_2012/update_appraisal_permission.py
index bd4578f..5afcdbb 100644
--- a/erpnext/patches/april_2012/update_appraisal_permission.py
+++ b/erpnext/patches/april_2012/update_appraisal_permission.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.doc import addchild
diff --git a/erpnext/patches/april_2012/update_permlevel_in_address.py b/erpnext/patches/april_2012/update_permlevel_in_address.py
index f8deb2c..96d5adc 100644
--- a/erpnext/patches/april_2012/update_permlevel_in_address.py
+++ b/erpnext/patches/april_2012/update_permlevel_in_address.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocPerm` set permlevel = 0 where parent = 'Address'")
diff --git a/erpnext/patches/april_2012/update_role_in_address.py b/erpnext/patches/april_2012/update_role_in_address.py
index 6917da4..3a65c30 100644
--- a/erpnext/patches/april_2012/update_role_in_address.py
+++ b/erpnext/patches/april_2012/update_role_in_address.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.doc import addchild
diff --git a/erpnext/patches/august_2012/__init__.py b/erpnext/patches/august_2012/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/august_2012/__init__.py
+++ b/erpnext/patches/august_2012/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/august_2012/change_profile_permission.py b/erpnext/patches/august_2012/change_profile_permission.py
new file mode 100644
index 0000000..27169d8
--- /dev/null
+++ b/erpnext/patches/august_2012/change_profile_permission.py
@@ -0,0 +1,35 @@
+from __future__ import unicode_literals
+def execute():
+	import webnotes
+	import webnotes.model.doc
+	webnotes.conn.sql("delete from `tabDocPerm` where parent='Profile' and permlevel=1")
+	new_perms = [
+		{
+			'parent': 'Profile',
+			'parentfield': 'permissions',
+			'parenttype': 'DocType',
+			'role': 'Administrator',			
+			'permlevel': 1,
+			'read': 1,
+			'write': 1
+		},
+		{
+			'parent': 'Profile',
+			'parentfield': 'permissions',
+			'parenttype': 'DocType',
+			'role': 'System Manager',
+			'permlevel': 1,
+			'read': 1,
+			'write': 1
+		},
+		
+	]
+	for perms in new_perms:
+		doc = webnotes.model.doc.Document('DocPerm')
+		doc.fields.update(perms)
+		doc.save()
+	webnotes.conn.commit()
+	webnotes.conn.begin()
+	
+	import webnotes.model.sync
+	webnotes.model.sync.sync('core', 'profile')
\ No newline at end of file
diff --git a/erpnext/patches/august_2012/report_supplier_quotations.py b/erpnext/patches/august_2012/report_supplier_quotations.py
index c0e6b3c..8eaf707 100644
--- a/erpnext/patches/august_2012/report_supplier_quotations.py
+++ b/erpnext/patches/august_2012/report_supplier_quotations.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	from webnotes.modules import reload_doc
-	reload_doc("Buying", "Report", "Supplier Quotations")
\ No newline at end of file
+	reload_doc("buying", "report", "supplier_quotations")
diff --git a/erpnext/patches/august_2012/task_allocated_to_assigned.py b/erpnext/patches/august_2012/task_allocated_to_assigned.py
new file mode 100644
index 0000000..1bbc447
--- /dev/null
+++ b/erpnext/patches/august_2012/task_allocated_to_assigned.py
@@ -0,0 +1,15 @@
+from __future__ import unicode_literals
+import webnotes
+
+def execute():
+	from webnotes.widgets.form.assign_to import add
+	for t in webnotes.conn.sql("""select * from tabTask 
+		where ifnull(allocated_to, '')!=''""", as_dict=1):
+		add({
+			'doctype': "Task",
+			'name': t['name'],
+			'assign_to': t['allocated_to'],
+			'assigned_by': t['owner'],
+			'description': t['subject'],
+			'date': t['creation']
+		})
\ No newline at end of file
diff --git a/erpnext/patches/before_jan_2012/Discount_purchase_cycle.py b/erpnext/patches/before_jan_2012/Discount_purchase_cycle.py
index 4214576..8ddcbf5 100644
--- a/erpnext/patches/before_jan_2012/Discount_purchase_cycle.py
+++ b/erpnext/patches/before_jan_2012/Discount_purchase_cycle.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/__init__.py b/erpnext/patches/before_jan_2012/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/before_jan_2012/__init__.py
+++ b/erpnext/patches/before_jan_2012/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/before_jan_2012/accounts_default_form.py b/erpnext/patches/before_jan_2012/accounts_default_form.py
index eb8f586..51e41aa 100644
--- a/erpnext/patches/before_jan_2012/accounts_default_form.py
+++ b/erpnext/patches/before_jan_2012/accounts_default_form.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
         import webnotes
         from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/auto_indent.py b/erpnext/patches/before_jan_2012/auto_indent.py
index a472d80..6018681 100644
--- a/erpnext/patches/before_jan_2012/auto_indent.py
+++ b/erpnext/patches/before_jan_2012/auto_indent.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/c_form_patch.py b/erpnext/patches/before_jan_2012/c_form_patch.py
index 76e3646..37b9983 100644
--- a/erpnext/patches/before_jan_2012/c_form_patch.py
+++ b/erpnext/patches/before_jan_2012/c_form_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/delivery_billing_status_patch.py b/erpnext/patches/before_jan_2012/delivery_billing_status_patch.py
index 424ef4a..ca022f3 100644
--- a/erpnext/patches/before_jan_2012/delivery_billing_status_patch.py
+++ b/erpnext/patches/before_jan_2012/delivery_billing_status_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 sql = webnotes.conn.sql
 
diff --git a/erpnext/patches/before_jan_2012/deploy_email_digest.py b/erpnext/patches/before_jan_2012/deploy_email_digest.py
index 8474b64..238ff00 100644
--- a/erpnext/patches/before_jan_2012/deploy_email_digest.py
+++ b/erpnext/patches/before_jan_2012/deploy_email_digest.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
diff --git a/erpnext/patches/before_jan_2012/edigest_enable_income_year_to_date.py b/erpnext/patches/before_jan_2012/edigest_enable_income_year_to_date.py
index 7d5b856..0403e01 100644
--- a/erpnext/patches/before_jan_2012/edigest_enable_income_year_to_date.py
+++ b/erpnext/patches/before_jan_2012/edigest_enable_income_year_to_date.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import Document
 
diff --git a/erpnext/patches/before_jan_2012/employeewise_balance_leave_report.py b/erpnext/patches/before_jan_2012/employeewise_balance_leave_report.py
index 83f2143..315b784 100644
--- a/erpnext/patches/before_jan_2012/employeewise_balance_leave_report.py
+++ b/erpnext/patches/before_jan_2012/employeewise_balance_leave_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """
 	This patch changes criteria name
 	of search criteria "employeewise_balance_leave_report"
diff --git a/erpnext/patches/before_jan_2012/erpnext_structure_cleanup.py b/erpnext/patches/before_jan_2012/erpnext_structure_cleanup.py
index 0e0e68f..2b9a8af 100644
--- a/erpnext/patches/before_jan_2012/erpnext_structure_cleanup.py
+++ b/erpnext/patches/before_jan_2012/erpnext_structure_cleanup.py
@@ -17,6 +17,7 @@
 #Cleanup all unwanted documents and restructure of moduloes
 #----------------------------------------------------------
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model import delete_doc
 from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/index_patch.py b/erpnext/patches/before_jan_2012/index_patch.py
index fef48de..7cdc12e 100644
--- a/erpnext/patches/before_jan_2012/index_patch.py
+++ b/erpnext/patches/before_jan_2012/index_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """
 	This patch removes wrong indexs and add proper indexes in tables
 """
diff --git a/erpnext/patches/before_jan_2012/install_print_formats.py b/erpnext/patches/before_jan_2012/install_print_formats.py
index 92bd60c..d3d8789 100644
--- a/erpnext/patches/before_jan_2012/install_print_formats.py
+++ b/erpnext/patches/before_jan_2012/install_print_formats.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import os, sys
 import webnotes
 
diff --git a/erpnext/patches/before_jan_2012/lcw_patch.py b/erpnext/patches/before_jan_2012/lcw_patch.py
index dbf2f6d..f5ed4c7 100644
--- a/erpnext/patches/before_jan_2012/lcw_patch.py
+++ b/erpnext/patches/before_jan_2012/lcw_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/p1.py b/erpnext/patches/before_jan_2012/p1.py
index 74d8470..10df020 100644
--- a/erpnext/patches/before_jan_2012/p1.py
+++ b/erpnext/patches/before_jan_2012/p1.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	if not webnotes.conn.sql("select name from tabDocFormat where parent = 'Sales Invoice' and format != 'POS Invoice'"):
diff --git a/erpnext/patches/before_jan_2012/packing_slip.py b/erpnext/patches/before_jan_2012/packing_slip.py
index 7fe2d5d..10ffa86 100644
--- a/erpnext/patches/before_jan_2012/packing_slip.py
+++ b/erpnext/patches/before_jan_2012/packing_slip.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/price_list_patch.py b/erpnext/patches/before_jan_2012/price_list_patch.py
index d5d673e..41fbd5e 100644
--- a/erpnext/patches/before_jan_2012/price_list_patch.py
+++ b/erpnext/patches/before_jan_2012/price_list_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/print_hide_price_list.py b/erpnext/patches/before_jan_2012/print_hide_price_list.py
index 8940ef3..4295ab4 100644
--- a/erpnext/patches/before_jan_2012/print_hide_price_list.py
+++ b/erpnext/patches/before_jan_2012/print_hide_price_list.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocField` set print_hide = 1 where fieldname in ('price_list_currency', 'plc_conversion_rate')")
diff --git a/erpnext/patches/before_jan_2012/profile_mark_not_in_create.py b/erpnext/patches/before_jan_2012/profile_mark_not_in_create.py
index 559266d..aae0694 100644
--- a/erpnext/patches/before_jan_2012/profile_mark_not_in_create.py
+++ b/erpnext/patches/before_jan_2012/profile_mark_not_in_create.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 def execute():
 	"""
diff --git a/erpnext/patches/before_jan_2012/project_patch.py b/erpnext/patches/before_jan_2012/project_patch.py
index 8090029..735714d 100644
--- a/erpnext/patches/before_jan_2012/project_patch.py
+++ b/erpnext/patches/before_jan_2012/project_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_address.py b/erpnext/patches/before_jan_2012/reload_address.py
index ae68f6f..781a00b 100644
--- a/erpnext/patches/before_jan_2012/reload_address.py
+++ b/erpnext/patches/before_jan_2012/reload_address.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_bom.py b/erpnext/patches/before_jan_2012/reload_bom.py
index cbacce1..0492d72 100644
--- a/erpnext/patches/before_jan_2012/reload_bom.py
+++ b/erpnext/patches/before_jan_2012/reload_bom.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_doclayer.py b/erpnext/patches/before_jan_2012/reload_doclayer.py
index 6c694a0..deb6f05 100644
--- a/erpnext/patches/before_jan_2012/reload_doclayer.py
+++ b/erpnext/patches/before_jan_2012/reload_doclayer.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """
 	Reload Customize Form, Customize Form Field and Print Format doctypes
 """
diff --git a/erpnext/patches/before_jan_2012/reload_email_digest.py b/erpnext/patches/before_jan_2012/reload_email_digest.py
index 15cbfc3..8e0852c 100644
--- a/erpnext/patches/before_jan_2012/reload_email_digest.py
+++ b/erpnext/patches/before_jan_2012/reload_email_digest.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	from webnotes.modules import reload_doc
 	reload_doc('Setup', 'DocType', 'Email Digest')
diff --git a/erpnext/patches/before_jan_2012/reload_employeewise_balance_leave_report.py b/erpnext/patches/before_jan_2012/reload_employeewise_balance_leave_report.py
index 53183cb..1e8ce40 100644
--- a/erpnext/patches/before_jan_2012/reload_employeewise_balance_leave_report.py
+++ b/erpnext/patches/before_jan_2012/reload_employeewise_balance_leave_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_flat_bom.py b/erpnext/patches/before_jan_2012/reload_flat_bom.py
index 020bd7e..7c648ff 100644
--- a/erpnext/patches/before_jan_2012/reload_flat_bom.py
+++ b/erpnext/patches/before_jan_2012/reload_flat_bom.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	from webnotes.modules import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_gl_mapper.py b/erpnext/patches/before_jan_2012/reload_gl_mapper.py
index c43ab67..cf67c5c 100644
--- a/erpnext/patches/before_jan_2012/reload_gl_mapper.py
+++ b/erpnext/patches/before_jan_2012/reload_gl_mapper.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_lc_wizard.py b/erpnext/patches/before_jan_2012/reload_lc_wizard.py
index ac65177..3de71da 100644
--- a/erpnext/patches/before_jan_2012/reload_lc_wizard.py
+++ b/erpnext/patches/before_jan_2012/reload_lc_wizard.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_print_format.py b/erpnext/patches/before_jan_2012/reload_print_format.py
index cac8d6e..d775c0c 100644
--- a/erpnext/patches/before_jan_2012/reload_print_format.py
+++ b/erpnext/patches/before_jan_2012/reload_print_format.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_project_task.py b/erpnext/patches/before_jan_2012/reload_project_task.py
index b21135b..c6b38d5 100644
--- a/erpnext/patches/before_jan_2012/reload_project_task.py
+++ b/erpnext/patches/before_jan_2012/reload_project_task.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """
 	Reload Task Doctype of Project Module
 """
diff --git a/erpnext/patches/before_jan_2012/reload_reco.py b/erpnext/patches/before_jan_2012/reload_reco.py
index 782fc7f..2c303c5 100644
--- a/erpnext/patches/before_jan_2012/reload_reco.py
+++ b/erpnext/patches/before_jan_2012/reload_reco.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_rv.py b/erpnext/patches/before_jan_2012/reload_rv.py
index 4365563..3c7b5be 100644
--- a/erpnext/patches/before_jan_2012/reload_rv.py
+++ b/erpnext/patches/before_jan_2012/reload_rv.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/reload_support_ticket.py b/erpnext/patches/before_jan_2012/reload_support_ticket.py
index f889687..0fe611b 100644
--- a/erpnext/patches/before_jan_2012/reload_support_ticket.py
+++ b/erpnext/patches/before_jan_2012/reload_support_ticket.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/remove_duplicate_table_mapper_detail.py b/erpnext/patches/before_jan_2012/remove_duplicate_table_mapper_detail.py
index fcc40d1..3594a70 100644
--- a/erpnext/patches/before_jan_2012/remove_duplicate_table_mapper_detail.py
+++ b/erpnext/patches/before_jan_2012/remove_duplicate_table_mapper_detail.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """
 	Removes duplicate entries created in 
 """
diff --git a/erpnext/patches/before_jan_2012/remove_extra_button_from_email_digest.py b/erpnext/patches/before_jan_2012/remove_extra_button_from_email_digest.py
index 1129f06..fa2481d 100644
--- a/erpnext/patches/before_jan_2012/remove_extra_button_from_email_digest.py
+++ b/erpnext/patches/before_jan_2012/remove_extra_button_from_email_digest.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""
diff --git a/erpnext/patches/before_jan_2012/remove_old_cp_email_settings.py b/erpnext/patches/before_jan_2012/remove_old_cp_email_settings.py
index 17d9c33..6417441 100644
--- a/erpnext/patches/before_jan_2012/remove_old_cp_email_settings.py
+++ b/erpnext/patches/before_jan_2012/remove_old_cp_email_settings.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	"""
 		remove control panel email settings if automail.webnotestech.com
diff --git a/erpnext/patches/before_jan_2012/remove_page_break_from_defaults.py b/erpnext/patches/before_jan_2012/remove_page_break_from_defaults.py
index 4687c1e..8ee441a 100644
--- a/erpnext/patches/before_jan_2012/remove_page_break_from_defaults.py
+++ b/erpnext/patches/before_jan_2012/remove_page_break_from_defaults.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""delete from `tabDefaultValue` where defkey in ('page_break', 'projects', 'packing_details', 'discounts', 'brands', 'item_batch_nos', 'after_sales_installations', 'item_searial_nos', 'item_group_in_details', 'exports', 'imports', 'item_advanced', 'sales_extras', 'more_info', 'quality', 'manufacturing', 'pos', 'item_serial_nos', 'purchase_discounts', 'recurring_invoice') and parent = 'Control Panel'""")
diff --git a/erpnext/patches/before_jan_2012/remove_previous_field_property_setter.py b/erpnext/patches/before_jan_2012/remove_previous_field_property_setter.py
index c8e0029..a993a25 100644
--- a/erpnext/patches/before_jan_2012/remove_previous_field_property_setter.py
+++ b/erpnext/patches/before_jan_2012/remove_previous_field_property_setter.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 def execute():
 	webnotes.conn.sql("""\
diff --git a/erpnext/patches/before_jan_2012/repost_account_bal.py b/erpnext/patches/before_jan_2012/repost_account_bal.py
index e44a49a..a87bfe0 100644
--- a/erpnext/patches/before_jan_2012/repost_account_bal.py
+++ b/erpnext/patches/before_jan_2012/repost_account_bal.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	sql = webnotes.conn.sql
diff --git a/erpnext/patches/before_jan_2012/repost_stock.py b/erpnext/patches/before_jan_2012/repost_stock.py
index d8267ff..3976eba 100644
--- a/erpnext/patches/before_jan_2012/repost_stock.py
+++ b/erpnext/patches/before_jan_2012/repost_stock.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
     import webnotes
     sql = webnotes.conn.sql
diff --git a/erpnext/patches/before_jan_2012/sal_man_patch.py b/erpnext/patches/before_jan_2012/sal_man_patch.py
index 626d2e3..b6dd6f0 100644
--- a/erpnext/patches/before_jan_2012/sal_man_patch.py
+++ b/erpnext/patches/before_jan_2012/sal_man_patch.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/task_email_notification.py b/erpnext/patches/before_jan_2012/task_email_notification.py
index 9f7669a..5e8b394 100644
--- a/erpnext/patches/before_jan_2012/task_email_notification.py
+++ b/erpnext/patches/before_jan_2012/task_email_notification.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/before_jan_2012/update_0_idx.py b/erpnext/patches/before_jan_2012/update_0_idx.py
index ec38b8a..9a192e5 100644
--- a/erpnext/patches/before_jan_2012/update_0_idx.py
+++ b/erpnext/patches/before_jan_2012/update_0_idx.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 def execute():
 	doc_type_list = webnotes.conn.sql("""SELECT DISTINCT parent FROM `tabDocField` where idx=0""")
diff --git a/erpnext/patches/before_jan_2012/update_gle_against_voucher_for_jv.py b/erpnext/patches/before_jan_2012/update_gle_against_voucher_for_jv.py
index 6f6f6b9..b262778 100644
--- a/erpnext/patches/before_jan_2012/update_gle_against_voucher_for_jv.py
+++ b/erpnext/patches/before_jan_2012/update_gle_against_voucher_for_jv.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.code import get_obj
diff --git a/erpnext/patches/jan_mar_2012/__init__.py b/erpnext/patches/jan_mar_2012/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/jan_mar_2012/__init__.py
+++ b/erpnext/patches/jan_mar_2012/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/jan_mar_2012/account_type_patch.py b/erpnext/patches/jan_mar_2012/account_type_patch.py
index 2029a3a..c6ac05c 100644
--- a/erpnext/patches/jan_mar_2012/account_type_patch.py
+++ b/erpnext/patches/jan_mar_2012/account_type_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""update `tabAccount` 
diff --git a/erpnext/patches/jan_mar_2012/add_roles_to_admin.py b/erpnext/patches/jan_mar_2012/add_roles_to_admin.py
index 402675a..f2e91e9 100644
--- a/erpnext/patches/jan_mar_2012/add_roles_to_admin.py
+++ b/erpnext/patches/jan_mar_2012/add_roles_to_admin.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""
 		Adds various roles to Administrator. This patch is for making master db
diff --git a/erpnext/patches/jan_mar_2012/allocated_to_profile.py b/erpnext/patches/jan_mar_2012/allocated_to_profile.py
index ef0ee97..b38f97b 100644
--- a/erpnext/patches/jan_mar_2012/allocated_to_profile.py
+++ b/erpnext/patches/jan_mar_2012/allocated_to_profile.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	"""
 		Changes allocated_to option to Profile in
diff --git a/erpnext/patches/jan_mar_2012/apps/__init__.py b/erpnext/patches/jan_mar_2012/apps/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/jan_mar_2012/apps/__init__.py
+++ b/erpnext/patches/jan_mar_2012/apps/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/jan_mar_2012/apps/todo_item.py b/erpnext/patches/jan_mar_2012/apps/todo_item.py
index f9a02bd..ed0acc4 100644
--- a/erpnext/patches/jan_mar_2012/apps/todo_item.py
+++ b/erpnext/patches/jan_mar_2012/apps/todo_item.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	"""
 		* Reload ToDo
diff --git a/erpnext/patches/jan_mar_2012/cancel_purchase_returned.py b/erpnext/patches/jan_mar_2012/cancel_purchase_returned.py
index 8a6aaa8..ff287c5 100644
--- a/erpnext/patches/jan_mar_2012/cancel_purchase_returned.py
+++ b/erpnext/patches/jan_mar_2012/cancel_purchase_returned.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	"""
 		Set docstatus = 2 where status = 'Purchase Returned' for serial no
diff --git a/erpnext/patches/jan_mar_2012/clear_session_cache.py b/erpnext/patches/jan_mar_2012/clear_session_cache.py
index 5ba2104..0490f50 100644
--- a/erpnext/patches/jan_mar_2012/clear_session_cache.py
+++ b/erpnext/patches/jan_mar_2012/clear_session_cache.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.clear_cache()
diff --git a/erpnext/patches/jan_mar_2012/convert_tables_to_utf8.py b/erpnext/patches/jan_mar_2012/convert_tables_to_utf8.py
index dad5da4..9378aba 100644
--- a/erpnext/patches/jan_mar_2012/convert_tables_to_utf8.py
+++ b/erpnext/patches/jan_mar_2012/convert_tables_to_utf8.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
diff --git a/erpnext/patches/jan_mar_2012/customer_address_contact_patch.py b/erpnext/patches/jan_mar_2012/customer_address_contact_patch.py
index 32a2125..8a3e67a 100644
--- a/erpnext/patches/jan_mar_2012/customer_address_contact_patch.py
+++ b/erpnext/patches/jan_mar_2012/customer_address_contact_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
diff --git a/erpnext/patches/jan_mar_2012/delete_pur_of_service.py b/erpnext/patches/jan_mar_2012/delete_pur_of_service.py
index da31300..18ded0d 100644
--- a/erpnext/patches/jan_mar_2012/delete_pur_of_service.py
+++ b/erpnext/patches/jan_mar_2012/delete_pur_of_service.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model import delete_doc
diff --git a/erpnext/patches/jan_mar_2012/deploy_packing_slip.py b/erpnext/patches/jan_mar_2012/deploy_packing_slip.py
index d349dbc..a6ec881 100644
--- a/erpnext/patches/jan_mar_2012/deploy_packing_slip.py
+++ b/erpnext/patches/jan_mar_2012/deploy_packing_slip.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.modules import reload_doc
 
diff --git a/erpnext/patches/jan_mar_2012/doclabel_in_doclayer.py b/erpnext/patches/jan_mar_2012/doclabel_in_doclayer.py
index 9091e95..4e6260e 100644
--- a/erpnext/patches/jan_mar_2012/doclabel_in_doclayer.py
+++ b/erpnext/patches/jan_mar_2012/doclabel_in_doclayer.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 def execute():
 	"""
diff --git a/erpnext/patches/jan_mar_2012/dt_map_fix.py b/erpnext/patches/jan_mar_2012/dt_map_fix.py
index 37732df..d682102 100644
--- a/erpnext/patches/jan_mar_2012/dt_map_fix.py
+++ b/erpnext/patches/jan_mar_2012/dt_map_fix.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/email_settings_reload.py b/erpnext/patches/jan_mar_2012/email_settings_reload.py
index 85c683e..fe6b260 100644
--- a/erpnext/patches/jan_mar_2012/email_settings_reload.py
+++ b/erpnext/patches/jan_mar_2012/email_settings_reload.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	"""
 		* Change type of mail_port field to int
diff --git a/erpnext/patches/jan_mar_2012/fix_packing_slip.py b/erpnext/patches/jan_mar_2012/fix_packing_slip.py
index fb3a4da..218d89d 100644
--- a/erpnext/patches/jan_mar_2012/fix_packing_slip.py
+++ b/erpnext/patches/jan_mar_2012/fix_packing_slip.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	"""
 		* Change DN to PS mapper
diff --git a/erpnext/patches/jan_mar_2012/jan_production_patches.py b/erpnext/patches/jan_mar_2012/jan_production_patches.py
index 65dd5a8..87b9205 100644
--- a/erpnext/patches/jan_mar_2012/jan_production_patches.py
+++ b/erpnext/patches/jan_mar_2012/jan_production_patches.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 def execute():
 	"""
diff --git a/erpnext/patches/jan_mar_2012/label_cleanup.py b/erpnext/patches/jan_mar_2012/label_cleanup.py
index 642140b..4f4fc4e 100644
--- a/erpnext/patches/jan_mar_2012/label_cleanup.py
+++ b/erpnext/patches/jan_mar_2012/label_cleanup.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model import delete_doc
diff --git a/erpnext/patches/jan_mar_2012/map_conversion_rate.py b/erpnext/patches/jan_mar_2012/map_conversion_rate.py
index dcb212d..7e5e7c5 100644
--- a/erpnext/patches/jan_mar_2012/map_conversion_rate.py
+++ b/erpnext/patches/jan_mar_2012/map_conversion_rate.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.code import get_obj
 from webnotes.model.doc import addchild
diff --git a/erpnext/patches/jan_mar_2012/mapper_fix.py b/erpnext/patches/jan_mar_2012/mapper_fix.py
index a9b1a9b..e8e68e0 100644
--- a/erpnext/patches/jan_mar_2012/mapper_fix.py
+++ b/erpnext/patches/jan_mar_2012/mapper_fix.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("delete from `tabTable Mapper Detail` where to_table = 'Sales Invoice Item' and parent = 'Delivery Note-Sales Invoice' and validation_logic = 'amount > ifnull(billed_amt, 0) and docstatus = 1'")
diff --git a/erpnext/patches/jan_mar_2012/navupdate.py b/erpnext/patches/jan_mar_2012/navupdate.py
index 1cfa879..a99f924 100644
--- a/erpnext/patches/jan_mar_2012/navupdate.py
+++ b/erpnext/patches/jan_mar_2012/navupdate.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 import _mysql_exceptions
 
diff --git a/erpnext/patches/jan_mar_2012/no_copy_patch.py b/erpnext/patches/jan_mar_2012/no_copy_patch.py
index fb12824..c7d33cb 100644
--- a/erpnext/patches/jan_mar_2012/no_copy_patch.py
+++ b/erpnext/patches/jan_mar_2012/no_copy_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocField` set no_copy = 1 where fieldname = 'insert_after' and parent = 'Custom Field'")
diff --git a/erpnext/patches/jan_mar_2012/pending_patches.py b/erpnext/patches/jan_mar_2012/pending_patches.py
index c21030a..c1d19e7 100644
--- a/erpnext/patches/jan_mar_2012/pending_patches.py
+++ b/erpnext/patches/jan_mar_2012/pending_patches.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.code import get_obj
diff --git a/erpnext/patches/jan_mar_2012/pos_setting_patch.py b/erpnext/patches/jan_mar_2012/pos_setting_patch.py
index c974b35..436f1b9 100644
--- a/erpnext/patches/jan_mar_2012/pos_setting_patch.py
+++ b/erpnext/patches/jan_mar_2012/pos_setting_patch.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocField` set `default` = 1 where fieldname = 'conversion_rate' and parent = 'POS Setting'")
diff --git a/erpnext/patches/jan_mar_2012/print_hide_totals.py b/erpnext/patches/jan_mar_2012/print_hide_totals.py
index bf16a77..02aef92 100644
--- a/erpnext/patches/jan_mar_2012/print_hide_totals.py
+++ b/erpnext/patches/jan_mar_2012/print_hide_totals.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
diff --git a/erpnext/patches/jan_mar_2012/production_cleanup.py b/erpnext/patches/jan_mar_2012/production_cleanup.py
index e724ab8..4e5134a 100644
--- a/erpnext/patches/jan_mar_2012/production_cleanup.py
+++ b/erpnext/patches/jan_mar_2012/production_cleanup.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/reload_doctype.py b/erpnext/patches/jan_mar_2012/reload_doctype.py
index 957864b..f05ee76 100644
--- a/erpnext/patches/jan_mar_2012/reload_doctype.py
+++ b/erpnext/patches/jan_mar_2012/reload_doctype.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/reload_item.py b/erpnext/patches/jan_mar_2012/reload_item.py
index e42b50b..47800a2 100644
--- a/erpnext/patches/jan_mar_2012/reload_item.py
+++ b/erpnext/patches/jan_mar_2012/reload_item.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/reload_mapper.py b/erpnext/patches/jan_mar_2012/reload_mapper.py
index 987d4a7..146747c 100644
--- a/erpnext/patches/jan_mar_2012/reload_mapper.py
+++ b/erpnext/patches/jan_mar_2012/reload_mapper.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/reload_po_pr_mapper.py b/erpnext/patches/jan_mar_2012/reload_po_pr_mapper.py
index 5866429..6bed3b1 100644
--- a/erpnext/patches/jan_mar_2012/reload_po_pr_mapper.py
+++ b/erpnext/patches/jan_mar_2012/reload_po_pr_mapper.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/reload_quote.py b/erpnext/patches/jan_mar_2012/reload_quote.py
index 8df293f..4d23f23 100644
--- a/erpnext/patches/jan_mar_2012/reload_quote.py
+++ b/erpnext/patches/jan_mar_2012/reload_quote.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/reload_table.py b/erpnext/patches/jan_mar_2012/reload_table.py
index 5358320..1bd4873 100644
--- a/erpnext/patches/jan_mar_2012/reload_table.py
+++ b/erpnext/patches/jan_mar_2012/reload_table.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	pass
 
diff --git a/erpnext/patches/jan_mar_2012/remove_archive.py b/erpnext/patches/jan_mar_2012/remove_archive.py
index 5f5cea6..43bb111 100644
--- a/erpnext/patches/jan_mar_2012/remove_archive.py
+++ b/erpnext/patches/jan_mar_2012/remove_archive.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # TODO take backup before running this patch
+from __future__ import unicode_literals
 def execute():
 	"""
 		* Restore archived data from arc tables
diff --git a/erpnext/patches/jan_mar_2012/remove_get_tds_button.py b/erpnext/patches/jan_mar_2012/remove_get_tds_button.py
index 8549e0d..9d254c3 100644
--- a/erpnext/patches/jan_mar_2012/remove_get_tds_button.py
+++ b/erpnext/patches/jan_mar_2012/remove_get_tds_button.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	"""
 		Remove One Get TDS button, which is appearing twice in JV
diff --git a/erpnext/patches/jan_mar_2012/remove_series_defval.py b/erpnext/patches/jan_mar_2012/remove_series_defval.py
index 45eed57..84117cf 100644
--- a/erpnext/patches/jan_mar_2012/remove_series_defval.py
+++ b/erpnext/patches/jan_mar_2012/remove_series_defval.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocField` set `default`='' where parent = 'Sales Invoice' and fieldname = 'naming_series' and `default` = 'INV'")
diff --git a/erpnext/patches/jan_mar_2012/rename_dt.py b/erpnext/patches/jan_mar_2012/rename_dt.py
index a507a1c..31a434c 100644
--- a/erpnext/patches/jan_mar_2012/rename_dt.py
+++ b/erpnext/patches/jan_mar_2012/rename_dt.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 import conf
 import webnotes.model
diff --git a/erpnext/patches/jan_mar_2012/serial_no_add_opt.py b/erpnext/patches/jan_mar_2012/serial_no_add_opt.py
index ec45c27..7693fae 100644
--- a/erpnext/patches/jan_mar_2012/serial_no_add_opt.py
+++ b/erpnext/patches/jan_mar_2012/serial_no_add_opt.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	opts = webnotes.conn.sql("""\
diff --git a/erpnext/patches/jan_mar_2012/stable_branch_shift_09_01_12.py b/erpnext/patches/jan_mar_2012/stable_branch_shift_09_01_12.py
index 99366be..177eb81 100644
--- a/erpnext/patches/jan_mar_2012/stable_branch_shift_09_01_12.py
+++ b/erpnext/patches/jan_mar_2012/stable_branch_shift_09_01_12.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.modules import reload_doc
 	
diff --git a/erpnext/patches/jan_mar_2012/stock_entry_others_patch.py b/erpnext/patches/jan_mar_2012/stock_entry_others_patch.py
index 7562fca..03cc105 100644
--- a/erpnext/patches/jan_mar_2012/stock_entry_others_patch.py
+++ b/erpnext/patches/jan_mar_2012/stock_entry_others_patch.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/subcon_default_val.py b/erpnext/patches/jan_mar_2012/subcon_default_val.py
index 8164b0a..2d0891d 100644
--- a/erpnext/patches/jan_mar_2012/subcon_default_val.py
+++ b/erpnext/patches/jan_mar_2012/subcon_default_val.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""
diff --git a/erpnext/patches/jan_mar_2012/sync_ref_db.py b/erpnext/patches/jan_mar_2012/sync_ref_db.py
index 91a5359..5af1e54 100644
--- a/erpnext/patches/jan_mar_2012/sync_ref_db.py
+++ b/erpnext/patches/jan_mar_2012/sync_ref_db.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 sql = webnotes.conn.sql
 from webnotes.model import delete_doc
diff --git a/erpnext/patches/jan_mar_2012/update_purpose_se.py b/erpnext/patches/jan_mar_2012/update_purpose_se.py
index e2b7d9f..721ec46 100644
--- a/erpnext/patches/jan_mar_2012/update_purpose_se.py
+++ b/erpnext/patches/jan_mar_2012/update_purpose_se.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocField` set options = replace(options, 'Others', 'Other') where fieldname = 'purpose' and parent = 'Stock Entry'")
diff --git a/erpnext/patches/jan_mar_2012/update_se_fld_options.py b/erpnext/patches/jan_mar_2012/update_se_fld_options.py
index 0428fc9..61512d3 100644
--- a/erpnext/patches/jan_mar_2012/update_se_fld_options.py
+++ b/erpnext/patches/jan_mar_2012/update_se_fld_options.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocField` set options = 'BOM' where fieldname = 'bom_no' and parent = 'Stock Entry'")
diff --git a/erpnext/patches/jan_mar_2012/update_stockreco_perm.py b/erpnext/patches/jan_mar_2012/update_stockreco_perm.py
index 9c3c697..b5d270f 100644
--- a/erpnext/patches/jan_mar_2012/update_stockreco_perm.py
+++ b/erpnext/patches/jan_mar_2012/update_stockreco_perm.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocPerm` set cancel = 1 where parent = 'Stock Reconciliation' and ifnull(submit, 0) = 1")
diff --git a/erpnext/patches/jan_mar_2012/website/__init__.py b/erpnext/patches/jan_mar_2012/website/__init__.py
index 680c79a..eb05a23 100644
--- a/erpnext/patches/jan_mar_2012/website/__init__.py
+++ b/erpnext/patches/jan_mar_2012/website/__init__.py
@@ -1,2 +1,3 @@
 
+from __future__ import unicode_literals
 	
\ No newline at end of file
diff --git a/erpnext/patches/jan_mar_2012/website/all.py b/erpnext/patches/jan_mar_2012/website/all.py
index 47be62a..fbb2e9d 100644
--- a/erpnext/patches/jan_mar_2012/website/all.py
+++ b/erpnext/patches/jan_mar_2012/website/all.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import patches.jan_mar_2012.website.login
 import patches.jan_mar_2012.website.feed
 import patches.jan_mar_2012.website.website
diff --git a/erpnext/patches/jan_mar_2012/website/allow_product_delete.py b/erpnext/patches/jan_mar_2012/website/allow_product_delete.py
index effec2e..21dd451 100644
--- a/erpnext/patches/jan_mar_2012/website/allow_product_delete.py
+++ b/erpnext/patches/jan_mar_2012/website/allow_product_delete.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	"""
 		Allow deletion of products
diff --git a/erpnext/patches/jan_mar_2012/website/analytics.py b/erpnext/patches/jan_mar_2012/website/analytics.py
index b8afb59..b86c8ce 100644
--- a/erpnext/patches/jan_mar_2012/website/analytics.py
+++ b/erpnext/patches/jan_mar_2012/website/analytics.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():	
 	from webnotes.modules import reload_doc
 	reload_doc('website', 'doctype', 'website_settings')
diff --git a/erpnext/patches/jan_mar_2012/website/cleanups.py b/erpnext/patches/jan_mar_2012/website/cleanups.py
index 16297d2..25cc63a 100644
--- a/erpnext/patches/jan_mar_2012/website/cleanups.py
+++ b/erpnext/patches/jan_mar_2012/website/cleanups.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
diff --git a/erpnext/patches/jan_mar_2012/website/domain_list.py b/erpnext/patches/jan_mar_2012/website/domain_list.py
index 26824a4..bbac836 100644
--- a/erpnext/patches/jan_mar_2012/website/domain_list.py
+++ b/erpnext/patches/jan_mar_2012/website/domain_list.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/website/feed.py b/erpnext/patches/jan_mar_2012/website/feed.py
index 4af0140..b815698 100644
--- a/erpnext/patches/jan_mar_2012/website/feed.py
+++ b/erpnext/patches/jan_mar_2012/website/feed.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import Document
 from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/website/file_data_rename.py b/erpnext/patches/jan_mar_2012/website/file_data_rename.py
index dc4110b..1871a78 100644
--- a/erpnext/patches/jan_mar_2012/website/file_data_rename.py
+++ b/erpnext/patches/jan_mar_2012/website/file_data_rename.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
diff --git a/erpnext/patches/jan_mar_2012/website/getfile_rename.py b/erpnext/patches/jan_mar_2012/website/getfile_rename.py
index d6d4c57..58f70c5 100644
--- a/erpnext/patches/jan_mar_2012/website/getfile_rename.py
+++ b/erpnext/patches/jan_mar_2012/website/getfile_rename.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
diff --git a/erpnext/patches/jan_mar_2012/website/login.py b/erpnext/patches/jan_mar_2012/website/login.py
index babd550..dfd8517 100644
--- a/erpnext/patches/jan_mar_2012/website/login.py
+++ b/erpnext/patches/jan_mar_2012/website/login.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import Document
 from webnotes.modules import reload_doc
diff --git a/erpnext/patches/jan_mar_2012/website/website.py b/erpnext/patches/jan_mar_2012/website/website.py
index c6403e5..8c154ca 100644
--- a/erpnext/patches/jan_mar_2012/website/website.py
+++ b/erpnext/patches/jan_mar_2012/website/website.py
@@ -16,6 +16,7 @@
 
 # website patch
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import Document
 
diff --git a/erpnext/patches/july_2012/__init__.py b/erpnext/patches/july_2012/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/july_2012/__init__.py
+++ b/erpnext/patches/july_2012/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/july_2012/address_contact_perms.py b/erpnext/patches/july_2012/address_contact_perms.py
index 1f14bd0..5b79f22 100644
--- a/erpnext/patches/july_2012/address_contact_perms.py
+++ b/erpnext/patches/july_2012/address_contact_perms.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""\
diff --git a/erpnext/patches/july_2012/auth_table.py b/erpnext/patches/july_2012/auth_table.py
new file mode 100644
index 0000000..9700495
--- /dev/null
+++ b/erpnext/patches/july_2012/auth_table.py
@@ -0,0 +1,14 @@
+from __future__ import unicode_literals
+import webnotes
+def execute():
+	webnotes.conn.commit()
+	
+	from webnotes.install_lib.install import Installer
+	Installer(None, None).create_auth_table()
+
+	webnotes.conn.begin()
+	
+	for user, password in webnotes.conn.sql("""select name, password from tabProfile"""):
+		if password:
+			webnotes.conn.sql("""insert into __Auth (user, `password`) values (%s, %s)""",
+				(user, password))
diff --git a/erpnext/patches/july_2012/bin_permission.py b/erpnext/patches/july_2012/bin_permission.py
index e1d0ea6..d48460c 100644
--- a/erpnext/patches/july_2012/bin_permission.py
+++ b/erpnext/patches/july_2012/bin_permission.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabDocPerm` set permlevel = 0 where parent = 'Bin'")
\ No newline at end of file
diff --git a/erpnext/patches/july_2012/blog_guest_permission.py b/erpnext/patches/july_2012/blog_guest_permission.py
index eb254b1..bc42a9d 100644
--- a/erpnext/patches/july_2012/blog_guest_permission.py
+++ b/erpnext/patches/july_2012/blog_guest_permission.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""allocate read write permission to guest for doctype 'Blog'"""
 	import webnotes
diff --git a/erpnext/patches/july_2012/default_freeze_account.py b/erpnext/patches/july_2012/default_freeze_account.py
new file mode 100644
index 0000000..ddc025c
--- /dev/null
+++ b/erpnext/patches/july_2012/default_freeze_account.py
@@ -0,0 +1,10 @@
+from __future__ import unicode_literals
+def execute():
+	import webnotes
+	webnotes.conn.sql("""update tabAccount set freeze_account='No' where freeze_account is null""")
+	webnotes.conn.sql("""update `tabPurchase Taxes and Charges` 
+		set category='Valuation and Total' where category='For Both'""")
+	webnotes.conn.sql("""update `tabPurchase Taxes and Charges` 
+		set category='Valuation' where category='For Valuation'""")
+	webnotes.conn.sql("""update `tabPurchase Taxes and Charges` 
+		set category='Total' where category='For Total'""")	
\ No newline at end of file
diff --git a/erpnext/patches/july_2012/deprecate_bulk_rename.py b/erpnext/patches/july_2012/deprecate_bulk_rename.py
new file mode 100644
index 0000000..06f1a21
--- /dev/null
+++ b/erpnext/patches/july_2012/deprecate_bulk_rename.py
@@ -0,0 +1,8 @@
+from __future__ import unicode_literals
+def execute():
+	import webnotes
+	from webnotes.model import delete_doc
+	delete_doc('DocType', 'Bulk Rename Tool')
+	webnotes.conn.commit()
+	webnotes.conn.sql("drop table `tabBulk Rename Tool`")
+	webnotes.conn.begin()
\ No newline at end of file
diff --git a/erpnext/patches/july_2012/deprecate_import_data_control.py b/erpnext/patches/july_2012/deprecate_import_data_control.py
index d0cd7de..d0a92a0 100644
--- a/erpnext/patches/july_2012/deprecate_import_data_control.py
+++ b/erpnext/patches/july_2012/deprecate_import_data_control.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""
 		deprecate:
diff --git a/erpnext/patches/july_2012/packing_list_cleanup_and_serial_no.py b/erpnext/patches/july_2012/packing_list_cleanup_and_serial_no.py
index 53cba4c..e65ae99 100644
--- a/erpnext/patches/july_2012/packing_list_cleanup_and_serial_no.py
+++ b/erpnext/patches/july_2012/packing_list_cleanup_and_serial_no.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.utils import flt
diff --git a/erpnext/patches/july_2012/project_patch_repeat.py b/erpnext/patches/july_2012/project_patch_repeat.py
index 4bb549c..bd52522 100644
--- a/erpnext/patches/july_2012/project_patch_repeat.py
+++ b/erpnext/patches/july_2012/project_patch_repeat.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""update `tabPurchase Order Item` t1, `tabPurchase Order` t2
diff --git a/erpnext/patches/july_2012/reload_pr_po_mapper.py b/erpnext/patches/july_2012/reload_pr_po_mapper.py
index 75ee5c4..74b68c7 100644
--- a/erpnext/patches/july_2012/reload_pr_po_mapper.py
+++ b/erpnext/patches/july_2012/reload_pr_po_mapper.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/july_2012/remove_event_role_owner_match.py b/erpnext/patches/july_2012/remove_event_role_owner_match.py
index a74ef80..21ee224 100644
--- a/erpnext/patches/july_2012/remove_event_role_owner_match.py
+++ b/erpnext/patches/july_2012/remove_event_role_owner_match.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""\
diff --git a/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py b/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
index be4d450..b552021 100644
--- a/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
+++ b/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
@@ -89,4 +90,4 @@
 	bin = webnotes.conn.sql("select name from `tabBin` \
 		where item_code = %s and warehouse = %s", (item, wh))
 			
-	get_obj('Bin', bin[0][0]).update_entries_after(posting_date = '2012-07-01', posting_time = '12:05')
\ No newline at end of file
+	get_obj('Bin', bin[0][0]).update_entries_after(posting_date = '2012-07-01', posting_time = '12:05')
diff --git a/erpnext/patches/july_2012/supplier_quotation.py b/erpnext/patches/july_2012/supplier_quotation.py
index 023ead2..84809e5 100644
--- a/erpnext/patches/july_2012/supplier_quotation.py
+++ b/erpnext/patches/july_2012/supplier_quotation.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""sync supplier quotatoin and create supplier quotation mappers"""
 	from webnotes.model.sync import sync
diff --git a/erpnext/patches/july_2012/sync_trial_balance.py b/erpnext/patches/july_2012/sync_trial_balance.py
index 41e4cdf..3755ed4 100644
--- a/erpnext/patches/july_2012/sync_trial_balance.py
+++ b/erpnext/patches/july_2012/sync_trial_balance.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/july_2012/unicode_conf.py b/erpnext/patches/july_2012/unicode_conf.py
new file mode 100644
index 0000000..24ceed4
--- /dev/null
+++ b/erpnext/patches/july_2012/unicode_conf.py
@@ -0,0 +1,6 @@
+from __future__ import unicode_literals
+
+def execute():
+	"""appends from __future__ import unicode_literals to py files if necessary"""
+	import wnf
+	wnf.append_future_import()
\ No newline at end of file
diff --git a/erpnext/patches/july_2012/update_purchase_tax.py b/erpnext/patches/july_2012/update_purchase_tax.py
new file mode 100644
index 0000000..3f785e5
--- /dev/null
+++ b/erpnext/patches/july_2012/update_purchase_tax.py
@@ -0,0 +1,9 @@
+from __future__ import unicode_literals
+def execute():
+	import webnotes
+	webnotes.conn.sql("""update `tabPurchase Taxes and Charges` 
+		set category='Valuation and Total' where category='For Both'""")
+	webnotes.conn.sql("""update `tabPurchase Taxes and Charges` 
+		set category='Valuation' where category='For Valuation'""")
+	webnotes.conn.sql("""update `tabPurchase Taxes and Charges` 
+		set category='Total' where category='For Total'""")
\ No newline at end of file
diff --git a/erpnext/patches/june_2012/__init__.py b/erpnext/patches/june_2012/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/june_2012/__init__.py
+++ b/erpnext/patches/june_2012/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/june_2012/alter_tabsessions.py b/erpnext/patches/june_2012/alter_tabsessions.py
index 1ea4d7c..4e0310b 100644
--- a/erpnext/patches/june_2012/alter_tabsessions.py
+++ b/erpnext/patches/june_2012/alter_tabsessions.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.commit()
diff --git a/erpnext/patches/june_2012/barcode_in_feature_setup.py b/erpnext/patches/june_2012/barcode_in_feature_setup.py
index fae75bf..4e5217a 100644
--- a/erpnext/patches/june_2012/barcode_in_feature_setup.py
+++ b/erpnext/patches/june_2012/barcode_in_feature_setup.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.code import get_obj
diff --git a/erpnext/patches/june_2012/cache_item_table.py b/erpnext/patches/june_2012/cache_item_table.py
index 552fe7d..771b409 100644
--- a/erpnext/patches/june_2012/cache_item_table.py
+++ b/erpnext/patches/june_2012/cache_item_table.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""drop and create __CacheItem table again"""
 	import webnotes
diff --git a/erpnext/patches/june_2012/cms2.py b/erpnext/patches/june_2012/cms2.py
index cf494c0..673214f 100644
--- a/erpnext/patches/june_2012/cms2.py
+++ b/erpnext/patches/june_2012/cms2.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	import webnotes.model.sync
diff --git a/erpnext/patches/june_2012/copy_uom_for_pur_inv_item.py b/erpnext/patches/june_2012/copy_uom_for_pur_inv_item.py
index 83012e8..b374249 100644
--- a/erpnext/patches/june_2012/copy_uom_for_pur_inv_item.py
+++ b/erpnext/patches/june_2012/copy_uom_for_pur_inv_item.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	
diff --git a/erpnext/patches/june_2012/delete_old_parent_entries.py b/erpnext/patches/june_2012/delete_old_parent_entries.py
index c74f609..6a87ff5 100644
--- a/erpnext/patches/june_2012/delete_old_parent_entries.py
+++ b/erpnext/patches/june_2012/delete_old_parent_entries.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""delete entries of child table having parent like old_par%% or ''"""
 	import webnotes
diff --git a/erpnext/patches/june_2012/fetch_organization_from_lead.py b/erpnext/patches/june_2012/fetch_organization_from_lead.py
index 1d24852..b3f1edd 100644
--- a/erpnext/patches/june_2012/fetch_organization_from_lead.py
+++ b/erpnext/patches/june_2012/fetch_organization_from_lead.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("update `tabQuotation` t1, `tabLead` t2 set t1.organization = t2.company_name where ifnull(t1.lead, '') != ''  and t1.quotation_to = 'Lead' and ifnull(t1.organization, '') = '' and t1.lead = t2.name")
\ No newline at end of file
diff --git a/erpnext/patches/june_2012/reports_list_permission.py b/erpnext/patches/june_2012/reports_list_permission.py
index c713a7e..a02f4fa 100644
--- a/erpnext/patches/june_2012/reports_list_permission.py
+++ b/erpnext/patches/june_2012/reports_list_permission.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""allow read permission to all for report list"""
 	import webnotes
diff --git a/erpnext/patches/june_2012/series_unique_patch.py b/erpnext/patches/june_2012/series_unique_patch.py
index 6f85f21..b04e08e 100644
--- a/erpnext/patches/june_2012/series_unique_patch.py
+++ b/erpnext/patches/june_2012/series_unique_patch.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""add unique constraint to series table's name column"""
 	import webnotes
diff --git a/erpnext/patches/june_2012/set_recurring_type.py b/erpnext/patches/june_2012/set_recurring_type.py
index bfb925c..79dd286 100644
--- a/erpnext/patches/june_2012/set_recurring_type.py
+++ b/erpnext/patches/june_2012/set_recurring_type.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.sync import sync
diff --git a/erpnext/patches/june_2012/support_ticket_autoreply.py b/erpnext/patches/june_2012/support_ticket_autoreply.py
index cdb47a2..9fb0534 100644
--- a/erpnext/patches/june_2012/support_ticket_autoreply.py
+++ b/erpnext/patches/june_2012/support_ticket_autoreply.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""New Send Autoreply checkbox in Email Settings"""
 	import webnotes
diff --git a/erpnext/patches/mar_2012/__init__.py b/erpnext/patches/mar_2012/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/mar_2012/__init__.py
+++ b/erpnext/patches/mar_2012/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/mar_2012/add_fieldnames.py b/erpnext/patches/mar_2012/add_fieldnames.py
index 3f96380..d0ea04b 100644
--- a/erpnext/patches/mar_2012/add_fieldnames.py
+++ b/erpnext/patches/mar_2012/add_fieldnames.py
@@ -1,4 +1,5 @@
 # do not run this patch
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	import webnotes.modules
diff --git a/erpnext/patches/mar_2012/clean_property_setter.py b/erpnext/patches/mar_2012/clean_property_setter.py
index 2d83fb1..08a0a94 100644
--- a/erpnext/patches/mar_2012/clean_property_setter.py
+++ b/erpnext/patches/mar_2012/clean_property_setter.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 
 def execute():
diff --git a/erpnext/patches/mar_2012/cleanup_control_panel.py b/erpnext/patches/mar_2012/cleanup_control_panel.py
index f26db15..93dd769 100644
--- a/erpnext/patches/mar_2012/cleanup_control_panel.py
+++ b/erpnext/patches/mar_2012/cleanup_control_panel.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 def execute():
 	webnotes.conn.sql("""\
diff --git a/erpnext/patches/mar_2012/create_custom_fields.py b/erpnext/patches/mar_2012/create_custom_fields.py
index 759a4d5..d4c1a13 100644
--- a/erpnext/patches/mar_2012/create_custom_fields.py
+++ b/erpnext/patches/mar_2012/create_custom_fields.py
@@ -1,4 +1,5 @@
 # do not run this patch
+from __future__ import unicode_literals
 field_list = [
 ['Contact', 'notes'],
 ['Contact', 'birthday'],
diff --git a/erpnext/patches/mar_2012/delete_docformat.py b/erpnext/patches/mar_2012/delete_docformat.py
index 77a6c82..1b5b94e 100644
--- a/erpnext/patches/mar_2012/delete_docformat.py
+++ b/erpnext/patches/mar_2012/delete_docformat.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("DELETE FROM `tabDocField` WHERE options='DocFormat'")
diff --git a/erpnext/patches/mar_2012/doctype_get_refactor.py b/erpnext/patches/mar_2012/doctype_get_refactor.py
index 147fb93..26cee77 100644
--- a/erpnext/patches/mar_2012/doctype_get_refactor.py
+++ b/erpnext/patches/mar_2012/doctype_get_refactor.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 def execute():
 	"""
diff --git a/erpnext/patches/mar_2012/earning_deduction_type_patch.py b/erpnext/patches/mar_2012/earning_deduction_type_patch.py
index 438b34e..39216d0 100644
--- a/erpnext/patches/mar_2012/earning_deduction_type_patch.py
+++ b/erpnext/patches/mar_2012/earning_deduction_type_patch.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""
diff --git a/erpnext/patches/mar_2012/is_submittable_patch.py b/erpnext/patches/mar_2012/is_submittable_patch.py
index d49160c..d97f856 100644
--- a/erpnext/patches/mar_2012/is_submittable_patch.py
+++ b/erpnext/patches/mar_2012/is_submittable_patch.py
@@ -1,4 +1,5 @@
 # dont run this patch
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	import webnotes.model.doctype
diff --git a/erpnext/patches/mar_2012/pos_invoice_fix.py b/erpnext/patches/mar_2012/pos_invoice_fix.py
index 9848eb8..d359408 100644
--- a/erpnext/patches/mar_2012/pos_invoice_fix.py
+++ b/erpnext/patches/mar_2012/pos_invoice_fix.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	from webnotes.modules import reload_doc
 	reload_doc('accounts', 'Print Format', 'POS Invoice')
diff --git a/erpnext/patches/mar_2012/so_rv_mapper_fix.py b/erpnext/patches/mar_2012/so_rv_mapper_fix.py
index 5d60b3c..e018cf5 100644
--- a/erpnext/patches/mar_2012/so_rv_mapper_fix.py
+++ b/erpnext/patches/mar_2012/so_rv_mapper_fix.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	count = webnotes.conn.sql("""SELECT COUNT(*) FROM `tabTable Mapper Detail`
diff --git a/erpnext/patches/mar_2012/usertags.py b/erpnext/patches/mar_2012/usertags.py
index eff2543..f583b63 100644
--- a/erpnext/patches/mar_2012/usertags.py
+++ b/erpnext/patches/mar_2012/usertags.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	doctype_list = webnotes.conn.sql("""SELECT name FROM `tabDocType`
diff --git a/erpnext/patches/may_2012/__init__.py b/erpnext/patches/may_2012/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/patches/may_2012/__init__.py
+++ b/erpnext/patches/may_2012/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/may_2012/cleanup_notification_control.py b/erpnext/patches/may_2012/cleanup_notification_control.py
index ef65250..25a704e 100644
--- a/erpnext/patches/may_2012/cleanup_notification_control.py
+++ b/erpnext/patches/may_2012/cleanup_notification_control.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("""
diff --git a/erpnext/patches/may_2012/cleanup_property_setter.py b/erpnext/patches/may_2012/cleanup_property_setter.py
index f4e3ef8..e06de32 100644
--- a/erpnext/patches/may_2012/cleanup_property_setter.py
+++ b/erpnext/patches/may_2012/cleanup_property_setter.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("delete from `tabProperty Setter` where property in ('width', 'previous_field')")
diff --git a/erpnext/patches/may_2012/clear_session_cache.py b/erpnext/patches/may_2012/clear_session_cache.py
index fee33dc..2b10129 100644
--- a/erpnext/patches/may_2012/clear_session_cache.py
+++ b/erpnext/patches/may_2012/clear_session_cache.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("delete from __SessionCache")
\ No newline at end of file
diff --git a/erpnext/patches/may_2012/create_report_manager_role.py b/erpnext/patches/may_2012/create_report_manager_role.py
index 6952bc0..8912eb1 100644
--- a/erpnext/patches/may_2012/create_report_manager_role.py
+++ b/erpnext/patches/may_2012/create_report_manager_role.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.doc import Document
diff --git a/erpnext/patches/may_2012/cs_server_readonly.py b/erpnext/patches/may_2012/cs_server_readonly.py
index 0ad74f5..b680606 100644
--- a/erpnext/patches/may_2012/cs_server_readonly.py
+++ b/erpnext/patches/may_2012/cs_server_readonly.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""Make server custom script readonly for system manager"""
 	import webnotes.model.doc
diff --git a/erpnext/patches/may_2012/customize_form_cleanup.py b/erpnext/patches/may_2012/customize_form_cleanup.py
index c81bd22..a04eb79 100644
--- a/erpnext/patches/may_2012/customize_form_cleanup.py
+++ b/erpnext/patches/may_2012/customize_form_cleanup.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	webnotes.conn.sql("delete from `tabCustomize Form Field`")
diff --git a/erpnext/patches/may_2012/page_role_series_fix.py b/erpnext/patches/may_2012/page_role_series_fix.py
index a44e0f8..7533e9d 100644
--- a/erpnext/patches/may_2012/page_role_series_fix.py
+++ b/erpnext/patches/may_2012/page_role_series_fix.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	sr = webnotes.conn.sql("select max(name) from `tabPage Role`")
diff --git a/erpnext/patches/may_2012/profile_perm_patch.py b/erpnext/patches/may_2012/profile_perm_patch.py
index fe24787..4423fdb 100644
--- a/erpnext/patches/may_2012/profile_perm_patch.py
+++ b/erpnext/patches/may_2012/profile_perm_patch.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""Make profile readonly for role All"""
 	import webnotes.model.doc
diff --git a/erpnext/patches/may_2012/reload_customer_address_contact.py b/erpnext/patches/may_2012/reload_customer_address_contact.py
index 9a31079..4aec19d 100644
--- a/erpnext/patches/may_2012/reload_customer_address_contact.py
+++ b/erpnext/patches/may_2012/reload_customer_address_contact.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	import webnotes.modules
diff --git a/erpnext/patches/may_2012/reload_reports.py b/erpnext/patches/may_2012/reload_reports.py
index 3ac6960..1cee3a0 100644
--- a/erpnext/patches/may_2012/reload_reports.py
+++ b/erpnext/patches/may_2012/reload_reports.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/may_2012/reload_sales_invoice_pf.py b/erpnext/patches/may_2012/reload_sales_invoice_pf.py
index 63acbed..b784469 100644
--- a/erpnext/patches/may_2012/reload_sales_invoice_pf.py
+++ b/erpnext/patches/may_2012/reload_sales_invoice_pf.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	import webnotes.modules
diff --git a/erpnext/patches/may_2012/reload_so_pending_items.py b/erpnext/patches/may_2012/reload_so_pending_items.py
index 8c9aee7..999004e 100644
--- a/erpnext/patches/may_2012/reload_so_pending_items.py
+++ b/erpnext/patches/may_2012/reload_so_pending_items.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model import delete_doc
diff --git a/erpnext/patches/may_2012/remove_communication_log.py b/erpnext/patches/may_2012/remove_communication_log.py
index 6ca05a7..28bfca1 100644
--- a/erpnext/patches/may_2012/remove_communication_log.py
+++ b/erpnext/patches/may_2012/remove_communication_log.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	import webnotes.model.sync
diff --git a/erpnext/patches/may_2012/remove_euro_currency.py b/erpnext/patches/may_2012/remove_euro_currency.py
index 2fb5373..edf27e1 100644
--- a/erpnext/patches/may_2012/remove_euro_currency.py
+++ b/erpnext/patches/may_2012/remove_euro_currency.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""
 		* Replace EURO with EUR
diff --git a/erpnext/patches/may_2012/rename_prev_doctype.py b/erpnext/patches/may_2012/rename_prev_doctype.py
index 162fb04..135b81d 100644
--- a/erpnext/patches/may_2012/rename_prev_doctype.py
+++ b/erpnext/patches/may_2012/rename_prev_doctype.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	dt_list = webnotes.conn.sql("select parent, fieldname from `tabDocField` where fieldname in ('against_doctype', 'prevdoc_doctype')")
diff --git a/erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py b/erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py
index 3ac1f8e..a5f7350 100644
--- a/erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py
+++ b/erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	rendt = {
diff --git a/erpnext/patches/may_2012/same_purchase_rate_patch.py b/erpnext/patches/may_2012/same_purchase_rate_patch.py
index 6cca178..d7b8d89 100644
--- a/erpnext/patches/may_2012/same_purchase_rate_patch.py
+++ b/erpnext/patches/may_2012/same_purchase_rate_patch.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.model.code import get_obj
diff --git a/erpnext/patches/may_2012/std_pf_readonly.py b/erpnext/patches/may_2012/std_pf_readonly.py
index d758159..83b5813 100644
--- a/erpnext/patches/may_2012/std_pf_readonly.py
+++ b/erpnext/patches/may_2012/std_pf_readonly.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	"""Make standard print formats readonly for system manager"""
 	import webnotes.model.doc
diff --git a/erpnext/patches/may_2012/stock_reco_patch.py b/erpnext/patches/may_2012/stock_reco_patch.py
index 7eb050f..96b071f 100644
--- a/erpnext/patches/may_2012/stock_reco_patch.py
+++ b/erpnext/patches/may_2012/stock_reco_patch.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 def execute():
 	import webnotes
 	from webnotes.modules import reload_doc
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index 83da5c3..71fc6b3 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 patch_list = [
 	{
 		'patch_module': 'patches.jan_mar_2012',
@@ -483,10 +484,23 @@
 		'description': "deprecate doctype - Import Data Control and page - Import Data"
 	},
 	{
-		'patch_module': 'patches.june_2012',
+		'patch_module': 'patches.july_2012',
+		'patch_file': 'default_freeze_account',
+		'description': "set default freeze_account as 'No' where NULL"
+	},
+	{
+		'patch_module': 'patches.july_2012',
+		'patch_file': 'update_purchase_tax',
+		'description': "rename options in purchase taxes and charges"
+	},
+	{	'patch_module': 'patches.june_2012',
 		'patch_file': 'cms2',
 		'description': 'cms2 release patches'
 	},
+	{	'patch_module': 'patches.july_2012',
+		'patch_file': 'auth_table',
+		'description': 'create new __Auth table'
+	},
 	{
 		'patch_module': 'patches.july_2012',
 		'patch_file': 'remove_event_role_owner_match',
@@ -494,6 +508,16 @@
 	},
 	{
 		'patch_module': 'patches.july_2012',
+		'patch_file': 'deprecate_bulk_rename',
+		'description': "Remove Bulk Rename Tool"
+	},
+	{
+		'patch_module': 'patches.july_2012',
+		'patch_file': 'unicode_conf',
+		'description': "appends from __future__ import unicode_literals to py files if necessary"
+	},
+	{
+		'patch_module': 'patches.july_2012',
 		'patch_file': 'sync_trial_balance',
 		'description': "sync trial balance"
 	},
@@ -521,4 +545,12 @@
 		'patch_module': 'patches.august_2012',
 		'patch_file': 'report_supplier_quotations',
 	},
+	{
+		'patch_module': 'patches.august_2012',
+		'patch_file': 'task_allocated_to_assigned',
+	},
+	{
+		'patch_module': 'patches.august_2012',
+		'patch_file': 'change_profile_permission',
+	}
 ]
\ No newline at end of file
diff --git a/erpnext/production/__init__.py b/erpnext/production/__init__.py
index 4fb00a3..9ca5e3b 100644
--- a/erpnext/production/__init__.py
+++ b/erpnext/production/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{"doctype":"Role", "role_name":"Production Manager", "name":"Production Manager"},
 	{"doctype":"Role", "role_name":"Production User", "name":"Production User"},
diff --git a/erpnext/production/doctype/__init__.py b/erpnext/production/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/__init__.py
+++ b/erpnext/production/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/bom/__init__.py b/erpnext/production/doctype/bom/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/bom/__init__.py
+++ b/erpnext/production/doctype/bom/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/bom/bom.py b/erpnext/production/doctype/bom/bom.py
index 81297b4..83a3165 100644
--- a/erpnext/production/doctype/bom/bom.py
+++ b/erpnext/production/doctype/bom/bom.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import cint, cstr, flt, get_defaults, getdate, now, nowdate
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
@@ -106,7 +107,6 @@
 		return ret_item
 
 
-
 	def get_rm_rate(self, arg):
 		"""	Get raw material rate as per selected method, if bom exists takes bom cost """
 
@@ -293,7 +293,6 @@
 		self.validate_main_item()
 		self.validate_operations()
 		self.validate_materials()
-		self.validate_operations()
 
 
 
@@ -353,8 +352,6 @@
 			})
 
 
-
-
 	# Get Current Flat BOM Items
 	# -----------------------------
 	def get_current_flat_bom_items(self):
diff --git a/erpnext/production/doctype/bom_control/__init__.py b/erpnext/production/doctype/bom_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/bom_control/__init__.py
+++ b/erpnext/production/doctype/bom_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/bom_control/bom_control.py b/erpnext/production/doctype/bom_control/bom_control.py
index 7638173..cc32533 100644
--- a/erpnext/production/doctype/bom_control/bom_control.py
+++ b/erpnext/production/doctype/bom_control/bom_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import cint, flt
diff --git a/erpnext/production/doctype/bom_explosion_item/__init__.py b/erpnext/production/doctype/bom_explosion_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/bom_explosion_item/__init__.py
+++ b/erpnext/production/doctype/bom_explosion_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/bom_item/__init__.py b/erpnext/production/doctype/bom_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/bom_item/__init__.py
+++ b/erpnext/production/doctype/bom_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/bom_operation/__init__.py b/erpnext/production/doctype/bom_operation/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/bom_operation/__init__.py
+++ b/erpnext/production/doctype/bom_operation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/production_control/__init__.py b/erpnext/production/doctype/production_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/production_control/__init__.py
+++ b/erpnext/production/doctype/production_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/production_control/production_control.py b/erpnext/production/doctype/production_control/production_control.py
index 8fb7edd..b7ce73c 100644
--- a/erpnext/production/doctype/production_control/production_control.py
+++ b/erpnext/production/doctype/production_control/production_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/production/doctype/production_order/__init__.py b/erpnext/production/doctype/production_order/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/production_order/__init__.py
+++ b/erpnext/production/doctype/production_order/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/production_order/production_order.py b/erpnext/production/doctype/production_order/production_order.py
index ba50ea2..19b3f33 100644
--- a/erpnext/production/doctype/production_order/production_order.py
+++ b/erpnext/production/doctype/production_order/production_order.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/production/doctype/production_plan_item/__init__.py b/erpnext/production/doctype/production_plan_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/production_plan_item/__init__.py
+++ b/erpnext/production/doctype/production_plan_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/production_plan_sales_order/__init__.py b/erpnext/production/doctype/production_plan_sales_order/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/production_plan_sales_order/__init__.py
+++ b/erpnext/production/doctype/production_plan_sales_order/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/production_planning_tool/__init__.py b/erpnext/production/doctype/production_planning_tool/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/production_planning_tool/__init__.py
+++ b/erpnext/production/doctype/production_planning_tool/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/production_planning_tool/production_planning_tool.py b/erpnext/production/doctype/production_planning_tool/production_planning_tool.py
index 21ef599..8c66b53 100644
--- a/erpnext/production/doctype/production_planning_tool/production_planning_tool.py
+++ b/erpnext/production/doctype/production_planning_tool/production_planning_tool.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import cint, cstr, flt, getdate, now, nowdate
 from webnotes.model.doc import addchild
diff --git a/erpnext/production/doctype/workstation/__init__.py b/erpnext/production/doctype/workstation/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/doctype/workstation/__init__.py
+++ b/erpnext/production/doctype/workstation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/doctype/workstation/workstation.py b/erpnext/production/doctype/workstation/workstation.py
index 3f30e03..6d9f3ae 100644
--- a/erpnext/production/doctype/workstation/workstation.py
+++ b/erpnext/production/doctype/workstation/workstation.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/production/page/__init__.py b/erpnext/production/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/page/__init__.py
+++ b/erpnext/production/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/page/production_home/__init__.py b/erpnext/production/page/production_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/page/production_home/__init__.py
+++ b/erpnext/production/page/production_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/search_criteria/__init__.py b/erpnext/production/search_criteria/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/search_criteria/__init__.py
+++ b/erpnext/production/search_criteria/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/search_criteria/consumption_against_production/__init__.py b/erpnext/production/search_criteria/consumption_against_production/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/search_criteria/consumption_against_production/__init__.py
+++ b/erpnext/production/search_criteria/consumption_against_production/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/search_criteria/itemwise_production_report/__init__.py b/erpnext/production/search_criteria/itemwise_production_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/search_criteria/itemwise_production_report/__init__.py
+++ b/erpnext/production/search_criteria/itemwise_production_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/production/search_criteria/production_orders_in_process/__init__.py b/erpnext/production/search_criteria/production_orders_in_process/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/production/search_criteria/production_orders_in_process/__init__.py
+++ b/erpnext/production/search_criteria/production_orders_in_process/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/__init__.py b/erpnext/projects/__init__.py
index 61a6eb6..8f35855 100644
--- a/erpnext/projects/__init__.py
+++ b/erpnext/projects/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{"doctype":"Role", "role_name":"Projects User", "name":"Projects User"},
 ]
diff --git a/erpnext/projects/doctype/__init__.py b/erpnext/projects/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/doctype/__init__.py
+++ b/erpnext/projects/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/doctype/activity_type/__init__.py b/erpnext/projects/doctype/activity_type/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/projects/doctype/activity_type/__init__.py
+++ /dev/null
diff --git a/erpnext/projects/doctype/activity_type/activity_type.txt b/erpnext/projects/doctype/activity_type/activity_type.txt
deleted file mode 100644
index 46ed917..0000000
--- a/erpnext/projects/doctype/activity_type/activity_type.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-# DocType, Activity Type
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:05',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:05',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
-	},
-
-	# These values are common for all DocType
-	{
-		'autoname': u'field:activity_type',
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'in_dialog': 1,
-		'module': u'Projects',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'version': 12
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'activity_type',
-		'fieldtype': u'Data',
-		'label': u'Activity Type',
-		'name': '__common__',
-		'parent': u'Activity Type',
-		'parentfield': u'fields',
-		'parenttype': u'DocType',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# These values are common for all DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'name': '__common__',
-		'parent': u'Activity Type',
-		'parentfield': u'permissions',
-		'parenttype': u'DocType',
-		'permlevel': 0,
-		'read': 1,
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocType, Activity Type
-	{
-		'doctype': 'DocType',
-		'name': u'Activity Type'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'role': u'System Manager'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'role': u'Projects User'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project/__init__.py b/erpnext/projects/doctype/project/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/doctype/project/__init__.py
+++ b/erpnext/projects/doctype/project/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js
index faa175f..eca9261 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/erpnext/projects/doctype/project/project.js
@@ -14,42 +14,16 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-//-------------------------- Onload ---------------------------
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-  if(!doc.status) set_multiple(cdt,cdn,{status:'Draft'});
-}
+// show tasks
 
-//-------------------  Get Contact Person based on customer selected ---------------------------
-cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-  if(doc.customer)
-    return 'SELECT `tabContact`.contact_name FROM `tabContact` WHERE (`tabContact`.is_customer = 1 AND `tabContact`.customer_name = "'+ doc.customer+'") AND `tabContact`.docstatus != 2 AND `tabContact`.contact_name LIKE "%s" ORDER BY `tabContact`.contact_name ASC LIMIT 50';
-  else
-    msgprint("Please select Customer first")
-}
-
-//-------------------------------- get query select Territory ------------------------------------------
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-  return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` FROM `tabTerritory` WHERE `tabTerritory`.`is_group` = "No" AND `tabTerritory`.`docstatus`!= 2 AND `tabTerritory`.%(key)s LIKE "%s"  ORDER BY  `tabTerritory`.`name` ASC LIMIT 50';
-}
-
-//------------------------ Customer and its primary contact Details ------------------------------------
-cur_frm.cscript.customer = function(doc, cdt, cdn) {
-  if(doc.customer) get_server_fields('get_customer_details', '','', doc, cdt, cdn, 1);
-}
-
-//--------------------- Customer's Contact Person Details --------------------------------------------
-cur_frm.cscript.contact_person = function(doc, cdt, cdn) {
-  if(doc.contact_person) {
-    get_server_fields('get_contact_details','','',doc, cdt, cdn, 1);
-  }
-}
-
-//--------- calculate gross profit --------------------------------
-cur_frm.cscript.project_value = function(doc, cdt, cdn){
-  get_server_fields('get_gross_profit','','',doc, cdt, cdn, 1);
-}
-
-//--------- calculate gross profit --------------------------------
-cur_frm.cscript.est_material_cost = function(doc, cdt, cdn){
-  get_server_fields('get_gross_profit','','',doc, cdt, cdn, 1);
-}
+cur_frm.cscript.refresh = function(doc) {
+	if(!doc.__islocal) {
+		// refresh gantt chart
+		wn.require('erpnext/projects/gantt_task.js');
+		if(!cur_frm.gantt_area)
+			cur_frm.gantt_area = $('<div>')
+				.appendTo(cur_frm.fields_dict.project_tasks.wrapper);
+		cur_frm.gantt_area.empty();
+		erpnext.show_task_gantt(cur_frm.gantt_area, cur_frm.docname);		
+	}
+}
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 3db66f0..659e757 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -108,4 +109,4 @@
 		event.event_type = 'Public'
 		event.ref_type = 'Project'
 		event.ref_name = self.doc.name
-		event.save(1)
\ No newline at end of file
+		event.save(1)
diff --git a/erpnext/projects/doctype/project/project.txt b/erpnext/projects/doctype/project/project.txt
index 43cab39..1463f78 100644
--- a/erpnext/projects/doctype/project/project.txt
+++ b/erpnext/projects/doctype/project/project.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-03 18:41:42',
+		'creation': '2012-08-08 13:25:19',
 		'docstatus': 0,
-		'modified': '2012-08-07 15:48:47',
+		'modified': '2012-08-08 13:55:01',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -225,6 +225,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'Milestones will be added as Events in the Calendar',
 		'doctype': u'DocField',
 		'fieldname': u'project_milestones',
 		'fieldtype': u'Table',
@@ -239,6 +241,26 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'Tasks belonging to this Project.',
+		'doctype': u'DocField',
+		'fieldname': u'sb_tasks',
+		'fieldtype': u'Section Break',
+		'label': u'Tasks',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'project_tasks',
+		'fieldtype': u'HTML',
+		'label': u'Project Tasks',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
 		'doctype': u'DocField',
 		'fieldname': u'section_break0',
 		'fieldtype': u'Section Break',
@@ -282,7 +304,7 @@
 		'oldfieldname': u'project_value',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0,
-		'reqd': 1,
+		'reqd': 0,
 		'search_index': 0,
 		'trigger': u'Client'
 	},
@@ -322,7 +344,7 @@
 		'oldfieldname': u'gross_margin_value',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0,
-		'reqd': 1,
+		'reqd': 0,
 		'search_index': 0
 	},
 
@@ -336,7 +358,7 @@
 		'oldfieldname': u'per_gross_margin',
 		'oldfieldtype': u'Currency',
 		'permlevel': 0,
-		'reqd': 1,
+		'reqd': 0,
 		'search_index': 0
 	},
 
diff --git a/erpnext/projects/doctype/project/project_list.js b/erpnext/projects/doctype/project/project_list.js
index 0ed42ca..9adbe72 100644
--- a/erpnext/projects/doctype/project/project_list.js
+++ b/erpnext/projects/doctype/project/project_list.js
@@ -9,7 +9,7 @@
 			'`tabProject`.priority',
 			'IFNULL(`tabProject`.project_value, 0) as project_value',
 			'IFNULL(`tabProject`.per_gross_margin, 0) as per_gross_margin',
-			'`tabProject`.completion_date',
+			'`tabProject`.creation',
 		]);
 		//this.stats = this.stats.concat(['company']);
 	},
@@ -46,8 +46,8 @@
 			},
 			css: {'text-align': 'right'},
 		},
-		{width: '12%', content:'completion_date', css: {
-			'text-align': 'right', 'color':'#777'
-		}},
+		{
+			width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}
+		},
 	]
 });
diff --git a/erpnext/projects/doctype/project_activity/__init__.py b/erpnext/projects/doctype/project_activity/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/projects/doctype/project_activity/__init__.py
+++ /dev/null
diff --git a/erpnext/projects/doctype/project_activity/project_activity.js b/erpnext/projects/doctype/project_activity/project_activity.js
deleted file mode 100644
index ad33e3c..0000000
--- a/erpnext/projects/doctype/project_activity/project_activity.js
+++ /dev/null
@@ -1,99 +0,0 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-// 
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-cur_frm.cscript.onload = function(doc, dt, dn) {
-  // created?
-  if(cur_frm.mylist) {
-     cur_frm.mylist.run();
-     return;
-  } else {
-
-    // create a new listing
-    var lst = new Listing('Activities Updates');
-
-    lst.colwidths = ['5%','30%','40%','25%'];
- 
-    // define options
-    var opts = {};
-
-    opts.head_main_style = {};
-    opts.cell_style = { padding:'3px 2px', borderRight : '0px', borderBottom : '1px solid #AAA', verticalAlign: 'top'}
-    opts.head_style = { padding:'3px 2px', borderBottom : '1px solid #AAA'}
-    opts.alt_cell_style = {};
-    opts.hide_print = 1;
-    opts.no_border = 1;
-
-    opts.hide_export = 1;
-    opts.hide_print = 1;
-    opts.hide_rec_label = 1;
-
-    lst.opts = opts;
-  
-    // query
-    lst.get_query = function() {
-      var doc = cur_frm.doc;
-      this.query = "select owner,creation,`update`, hours from `tabProject Activity Update` where parent = '"+doc.name+"'";
-      this.query_max = "select count(*) from `tabProject Activity Update` where parent = '"+doc.name+"'";
-    }
-
-    lst.show_cell = function(cell,ri,ci,d){
- 
-      // owner and date
-      if (ci==0){ 
-        var d1 = $a(cell,'div');
-        var img = $a(cell,'img','',{width:'40px'});
-        img.src = wn.user_info(d[ri][0]).image;
-        var d2 = $a(cell,'div');
-        d2.innerHTML =  d[ri][0] + ' on: ' + date.str_to_user(d[ri][1]);
-      }
-
-      // update
-      if(ci==1) {
-        cell.innerHTML =  replace_newlines(d[ri][2]);
-      }
-
-      // Hours
-      if (ci==2) { 
-        cell.innerHTML = d[ri][3] + ' hrs';
-      }
-    }
-  
-    lst.make(cur_frm.fields_dict['updates_html'].wrapper);
-    cur_frm.mylist = lst;
-    lst.run();
-  }
-}
-
-cur_frm.cscript.refresh = function(doc, dt, dn) {
-
-  // show activities only after project is saved
-
-  var fl = ['new_update','add','hours','updates_html'];
-  if(doc.__islocal) { 
-    hide_field(fl);}
-  else { 
-    unhide_field(fl); }
-}
-
-cur_frm.cscript.add = function(doc, dt, dn) {
-  var callback = function(r,rt) {
-    
-    // refresh listing
-    cur_frm.mylist.run();
-
-  }
-  $c_obj(make_doclist(doc.doctype, doc.name),'add_update','',callback);
-}
diff --git a/erpnext/projects/doctype/project_activity/project_activity.py b/erpnext/projects/doctype/project_activity/project_activity.py
deleted file mode 100644
index 950e7e8..0000000
--- a/erpnext/projects/doctype/project_activity/project_activity.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Please edit this list and import only required elements
-import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
-
-class DocType:
-  def __init__(self,d,dl):
-    self.doc, self.doclist = d, dl
-
-  def add_update(self):
-    d = Document('Project Activity Update')
-    d.parent = self.doc.name
-    d.update = self.doc.new_update
-    d.hours = self.doc.hours
-    d.save(1)
-
-    self.doc.new_update = ''
-    self.doc.hours = ''
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_activity/project_activity.txt b/erpnext/projects/doctype/project_activity/project_activity.txt
deleted file mode 100644
index 5447165..0000000
--- a/erpnext/projects/doctype/project_activity/project_activity.txt
+++ /dev/null
@@ -1,167 +0,0 @@
-# DocType, Project Activity
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:06',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:06',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
-	},
-
-	# These values are common for all DocType
-	{
-		'autoname': u'Activity.######',
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'module': u'Projects',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'version': 15
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'name': '__common__',
-		'parent': u'Project Activity',
-		'parentfield': u'fields',
-		'parenttype': u'DocType',
-		'permlevel': 0
-	},
-
-	# These values are common for all DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'name': '__common__',
-		'parent': u'Project Activity',
-		'parentfield': u'permissions',
-		'parenttype': u'DocType',
-		'permlevel': 0,
-		'read': 1,
-		'role': u'All',
-		'write': 1
-	},
-
-	# DocType, Project Activity
-	{
-		'doctype': 'DocType',
-		'name': u'Project Activity'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'project',
-		'fieldtype': u'Link',
-		'label': u'Project',
-		'oldfieldname': u'project',
-		'oldfieldtype': u'Link',
-		'options': u'Project'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'activity_name',
-		'fieldtype': u'Data',
-		'label': u'Activity Name',
-		'oldfieldname': u'activity_name',
-		'oldfieldtype': u'Data',
-		'print_hide': 1,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'percent_complete',
-		'fieldtype': u'Select',
-		'label': u'Percent Complete',
-		'oldfieldname': u'percent_complete',
-		'oldfieldtype': u'Select',
-		'options': u'0\n5\n10\n15\n20\n25\n30\n35\n40\n45\n50\n55\n60\n65\n70\n75\n80\n85\n90\n95\n100',
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'last_update',
-		'fieldtype': u'Date',
-		'hidden': 1,
-		'label': u'Last Update',
-		'oldfieldname': u'last_update',
-		'oldfieldtype': u'Date',
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'last_update_by',
-		'fieldtype': u'Data',
-		'hidden': 1,
-		'label': u'Last Update By',
-		'oldfieldname': u'last_update_by',
-		'oldfieldtype': u'Data',
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'updates',
-		'fieldtype': u'Section Break',
-		'label': u'Updates',
-		'oldfieldtype': u'Section Break'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'updates_html',
-		'fieldtype': u'HTML',
-		'label': u'Updates HTML',
-		'oldfieldtype': u'HTML'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'new_update',
-		'fieldtype': u'Text',
-		'label': u'New Update',
-		'oldfieldname': u'new_update',
-		'oldfieldtype': u'Text'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'hours',
-		'fieldtype': u'Float',
-		'label': u'Hours',
-		'oldfieldname': u'hours',
-		'oldfieldtype': u'Float'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'add',
-		'fieldtype': u'Button',
-		'label': u'Add',
-		'oldfieldtype': u'Button',
-		'trigger': u'Client'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_activity_update/__init__.py b/erpnext/projects/doctype/project_activity_update/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/projects/doctype/project_activity_update/__init__.py
+++ /dev/null
diff --git a/erpnext/projects/doctype/project_activity_update/project_activity_update.txt b/erpnext/projects/doctype/project_activity_update/project_activity_update.txt
deleted file mode 100644
index 8155ccf..0000000
--- a/erpnext/projects/doctype/project_activity_update/project_activity_update.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-# DocType, Project Activity Update
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:06',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:06',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
-	},
-
-	# These values are common for all DocType
-	{
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'istable': 1,
-		'module': u'Projects',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'version': 1
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'name': '__common__',
-		'parent': u'Project Activity Update',
-		'parentfield': u'fields',
-		'parenttype': u'DocType',
-		'permlevel': 0
-	},
-
-	# DocType, Project Activity Update
-	{
-		'doctype': 'DocType',
-		'name': u'Project Activity Update'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'update',
-		'fieldtype': u'Text',
-		'label': u'Update',
-		'oldfieldname': u'update',
-		'oldfieldtype': u'Text'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u'e.g. 0.5, 2.5 etc',
-		'doctype': u'DocField',
-		'fieldname': u'hours',
-		'fieldtype': u'Float',
-		'label': u'Hours',
-		'oldfieldname': u'hours',
-		'oldfieldtype': u'Float'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_control/__init__.py b/erpnext/projects/doctype/project_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/doctype/project_control/__init__.py
+++ b/erpnext/projects/doctype/project_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/doctype/project_control/project_control.py b/erpnext/projects/doctype/project_control/project_control.py
index 9928ffd..8369aab 100644
--- a/erpnext/projects/doctype/project_control/project_control.py
+++ b/erpnext/projects/doctype/project_control/project_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add, add_days
diff --git a/erpnext/projects/doctype/project_control/project_control.txt b/erpnext/projects/doctype/project_control/project_control.txt
deleted file mode 100644
index 76861cc..0000000
--- a/erpnext/projects/doctype/project_control/project_control.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-# DocType, Project Control
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:06',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:06',
-		'modified_by': u'Administrator',
-		'owner': u'harshada@webnotestech.com'
-	},
-
-	# These values are common for all DocType
-	{
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'issingle': 1,
-		'module': u'Projects',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'version': 30
-	},
-
-	# DocType, Project Control
-	{
-		'doctype': 'DocType',
-		'name': u'Project Control'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_milestone/__init__.py b/erpnext/projects/doctype/project_milestone/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/doctype/project_milestone/__init__.py
+++ b/erpnext/projects/doctype/project_milestone/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/doctype/task/__init__.py b/erpnext/projects/doctype/task/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/doctype/task/__init__.py
+++ b/erpnext/projects/doctype/task/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/doctype/task/task.js b/erpnext/projects/doctype/task/task.js
index af4864b..d1317ae 100644
--- a/erpnext/projects/doctype/task/task.js
+++ b/erpnext/projects/doctype/task/task.js
@@ -14,49 +14,9 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-cur_frm.cscript.onload = function(doc,cdt,cdn){
-  if(!doc.senders_name) {  
-    doc.senders_name = user_fullname;
-    doc.senders_email = user;
-    refresh_many(['senders_name', 'senders_email']);
-  }
-
-  if(doc.__islocal) {
-    doc.status = 'Open';
-    doc.opening_date = get_today();
-    refresh_many(['status', 'opening_date']);
-  }
-  else{
-    if(!doc.opening_date){
-      doc.opening_date = dateutil.str_to_user(only_date(doc.creation));
-      refresh_field('opening_date');      
-    }
-  }  
-  
-  //hide unhide field depends on status
-  if(doc.status == 'Open') doc.review_date = doc.closing_date = '';
-  else if(doc.status == 'Pending Review') doc.closing_date = '';
-  refresh_many(['closing_date','review_date']); 
-
-  if(doc.project) cur_frm.cscript.project(doc, cdt, cdn);  
-}
-
-cur_frm.cscript.refresh = function(doc,cdt,cdn) {
-  cur_frm.clear_custom_buttons();
-  if(doc.status == 'Pending Review' && (doc.senders_name == user_fullname || doc.senders_email == user)) {
-    cur_frm.add_custom_button('Declare Completed', cur_frm.cscript.declare_completed);
-    cur_frm.add_custom_button('Reopen Task', cur_frm.cscript['Reopen Task']);
-  }
-  if(doc.status == 'Open' && !doc.__islocal) {
-    cur_frm.add_custom_button('Cancel Task', cur_frm.cscript['Cancel Task']);
-    if(doc.allocated_to == user) cur_frm.add_custom_button('Get Approval', cur_frm.cscript['Get Approval']);
-  }
-}
-
 cur_frm.fields_dict['project'].get_query = function(doc,cdt,cdn){
   var cond='';
-  if(doc.customer) cond = 'ifnull(`tabProject`.customer, "") = "'+doc.customer+'" AND';
-  
+  if(doc.customer) cond = 'ifnull(`tabProject`.customer, "") = "'+doc.customer+'" AND';  
   return repl('SELECT distinct `tabProject`.`name` FROM `tabProject` WHERE %(cond)s `tabProject`.`name` LIKE "%s" ORDER BY `tabProject`.`name` ASC LIMIT 50', {cond:cond});
 }
 
@@ -68,7 +28,6 @@
 cur_frm.fields_dict['customer'].get_query = function(doc,cdt,cdn){
   var cond='';
   if(doc.project) cond = 'ifnull(`tabProject`.customer, "") = `tabCustomer`.name AND ifnull(`tabProject`.name, "") = "'+doc.project+'" AND';
-  
   return repl('SELECT distinct `tabCustomer`.`name` FROM `tabCustomer`, `tabProject` WHERE %(cond)s `tabCustomer`.`name` LIKE "%s" ORDER BY `tabCustomer`.`name` ASC LIMIT 50', {cond:cond});
 }
 
@@ -77,46 +36,4 @@
   else doc.customer_name ='';
 }
 
-cur_frm.cscript.allocated_to = function(doc,cdt,cdn){
-  get_server_fields('get_allocated_to_name','','',doc,cdt,cdn,1);
-}
 
-cur_frm.cscript['Get Approval'] = function(){
-  $c_obj(make_doclist(cur_frm.doc.doctype, cur_frm.doc.name), 'set_for_review', '',function(r, rt) {
-    if(r.message == 'true'){
-      doc.status = 'Pending Review'; //for refresh
-      refresh_many(['review_date','status']);
-      cur_frm.cscript.refresh(cur_frm.doc, cur_frm.doc.doctype, cur_frm.doc.name);
-    }
-  });  
-}
-
-cur_frm.cscript['Reopen Task'] = function(){
-  $c_obj(make_doclist(cur_frm.doc.doctype, cur_frm.doc.name), 'reopen_task', '',function(r, rt) {
-    if(r.message == 'true'){
-      doc.status = 'Open'; //for refresh
-      refresh_many(['status']);
-      cur_frm.cscript.refresh(cur_frm.doc, cur_frm.doc.doctype, cur_frm.doc.name);
-    }
-  });  
-}
-
-cur_frm.cscript['Cancel Task'] = function(){
-  $c_obj(make_doclist(cur_frm.doc.doctype, cur_frm.doc.name), 'cancel_task', '',function(r, rt) {
-    if(r.message == 'true'){
-      doc.status = 'Cancelled'; //for refresh
-      refresh_many(['status']);
-      cur_frm.cscript.refresh(cur_frm.doc, cur_frm.doc.doctype, cur_frm.doc.name);
-    }
-  });  
-}
-
-cur_frm.cscript.declare_completed = function(){
-  $c_obj(make_doclist(cur_frm.doc.doctype, cur_frm.doc.name),'declare_completed', '',function(r, rt) {
-    if(r.message == 'true'){
-      doc.status = 'Closed'; //for refresh
-      refresh_many(['review_date', 'closing_date', 'status']);
-      cur_frm.cscript.refresh(cur_frm.doc, cur_frm.doc.doctype, cur_frm.doc.name);
-    }
-  });  
-}
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 7f023ca..c9b106f 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
@@ -26,8 +27,6 @@
 from webnotes import session, form, is_testing, msgprint, errprint
 
 sql = webnotes.conn.sql
-set = webnotes.conn.set
-get_value = webnotes.conn.get_value
 
 # -----------------------------------------------------------------------------------------
 
@@ -48,15 +47,6 @@
 		if cust:
 			ret = {'customer_name': cust and cust[0][0] or ''}
 			return ret
-	
-	def get_allocated_to_name(self):
-		as_em = sql("select first_name, last_name from `tabProfile` where name=%s",str(self.doc.allocated_to))
-		ret = { 'allocated_to_name' : as_em and (cstr(as_em[0][0]) + ' ' + cstr(as_em[0][1])) or ''}
-		return ret
-
-	# validate
-	#--------------------------------------------	 
-
 
 	def validate(self):
 		if self.doc.exp_start_date and self.doc.exp_end_date and getdate(self.doc.exp_start_date) > getdate(self.doc.exp_end_date):
@@ -67,159 +57,3 @@
 			msgprint("'Actual Start Date' can not be greater than 'Actual End Date'")
 			raise Exception
 
-	# on update
-	#--------------------------------------------	 
-	
-	def on_update(self):
-		if self.doc.status =='Open' and self.doc.allocated_to:
-			if self.doc.task_email_notify:
-				self.send_notification()
-			if self.doc.exp_start_date:
-				sql("delete from tabEvent where ref_type='Task' and ref_name=%s", self.doc.name)
-				self.add_calendar_event()
-			else:
-				msgprint("Tip: Add an expected start date to create a calendar event.")
-			
-			
-	def validate_for_pending_review(self):
-		if not self.doc.allocated_to:
-			msgprint("Please enter Allocated To.")
-			raise Exception
-		self.validate_with_timesheet_dates()
-		
-	#Sent Notification
-	def send_notification(self):
-		i = {
-			'name' : self.doc.name,
-			'senders_name': self.doc.senders_name,
-			'opening_date': self.doc.opening_date,
-			'exp_start_date': self.doc.exp_start_date,
-			'exp_end_date' : self.doc.exp_end_date,
-			'subject' : self.doc.subject,
-			'project': self.doc.project,
-			'review_date': self.doc.review_date,
-			'description': self.doc.description
-		}
-
-		task_label = '[Task Updated] '
-		if self.doc.creation==self.doc.modified:
-			task_label = '[New Task] '
-
-		msg2="""<h2>%(name)s</h2>
-			<p>This is a Notification for the task %(name)s that has been assigned / updated to you 
-				by %(senders_name)s on %(opening_date)s</p>
-			<p><b>Subject:</b> %(subject)s </p>
-			<p><b>Project:</b> %(project)s</p>
-			<p><b>Review Date:</b> %(review_date)s</p>
-			<p><b>Expected Start Date:</b> %(exp_start_date)s</p>
-			<p><b>Expected End Date:</b> %(exp_end_date)s</p>
-			<p><b>Details:</b> %(description)s</p>
-			<p>(This notification is autogenerated)</p>""" % i
-		sendmail(self.doc.allocated_to, msg=msg2,subject= task_label + self.doc.subject)
-	
-	#validate before closing task
-	def validate_for_closed(self):
-		self.check_non_submitted_timesheets()
-		self.get_actual_total_hrs()
-	
-	def check_non_submitted_timesheets(self):
-		chk = sql("select t1.name from `tabTimesheet` t1, `tabTimesheet Detail` t2 where t2.parent=t1.name and t2.task_id=%s and t1.status='Draft'", self.doc.name)
-		if chk:
-			chk_lst = [x[0] for x in chk]
-			msgprint("Please submit timesheet(s) : "+','.join(chk_lst)+" before declaring this task as completed. As details of this task present in timesheet(s)")
-			raise Exception
-	
-	#calculate actual total hours taken to complete task from timesheets
-	def get_actual_total_hrs(self):
-		import datetime
-		import time
-		chk = sql("select t2.act_total_hrs from `tabTimesheet` t1, `tabTimesheet Detail` t2 where t2.parent = t1.name and t2.task_id = %s and t1.status = 'Submitted' and ifnull(t2.act_total_hrs, '')!='' order by t1.timesheet_date asc", self.doc.name)
-		if chk:
-			chk_lst = [x[0] for x in chk]
-			actual_total = total =0
-			
-			for m in chk_lst:
-				m1, m2=[], 0
-				m1 = m.split(":")
-				m2 = (datetime.timedelta(minutes=cint(m1[1]), hours=cint(m1[0]))).seconds
-				total = total + m2
-			
-			actual_total = time.strftime("%H:%M", time.gmtime(total))
-			set(self.doc, 'act_total_hrs', actual_total)
-	
-	# validate and fetch actual start and end date
-	def validate_with_timesheet_dates(self):
-		chk = sql("select t1.name, t1.timesheet_date from `tabTimesheet` t1, `tabTimesheet Detail` t2 where t2.parent = t1.name and t2.task_id = %s and t1.status = 'Submitted' order by t1.timesheet_date asc", self.doc.name, as_dict=1)
-		if chk:
-			if self.doc.act_start_date:
-				if chk[0]['timesheet_date'] > getdate(self.doc.act_start_date) or chk[0]['timesheet_date'] < getdate(self.doc.act_start_date):
-					msgprint("Actual start date of this task is "+cstr(chk[0]['timesheet_date'])+" as per timesheet "+cstr(chk[0]['name']))
-					raise Exception
-			else:
-				self.doc.act_start_date = chk[0]['timesheet_date']
-			
-			if self.doc.act_end_date:
-				if chk[len(chk)-1]['timesheet_date'] < getdate(self.doc.act_end_date) or chk[len(chk)-1]['timesheet_date'] > getdate(self.doc.act_end_date):
-					msgprint("Actual end date of this task is "+cstr(chk[len(chk)-1]['timesheet_date'])+" as per timesheet "+cstr(chk[len(chk)-1]['name']))
-					raise Exception
-			else:
-				self.doc.act_end_date = chk[len(chk)-1]['timesheet_date']
-	
-	def set_for_review(self):
-		self.check_non_submitted_timesheets()
-		self.validate_for_pending_review()
-		self.get_actual_total_hrs()
-		self.doc.review_date = nowdate()
-		self.doc.status = 'Pending Review'
-		self.doc.save()
-		return cstr('true')
-	
-	def reopen_task(self):
-		self.doc.status = 'Open'
-		self.doc.save()
-		return cstr('true')
-	
-	def declare_completed(self):
-		if self.doc.status == 'Open':
-			self.validate_for_pending_review()
-			self.doc.review_date = nowdate()
-		else:
-			self.validate_with_timesheet_dates()
-		self.validate_for_closed()
-
-		self.doc.closing_date = nowdate()
-		self.doc.status = 'Closed'
-		self.doc.docstatus = 1
-		self.doc.save()
-
-		self.remove_event_from_calender()
-		return cstr('true')
-		
-	def remove_event_from_calender(self):
-		sql("delete from tabEvent where ref_type='Task' and ref_name=%s", self.doc.name)
-		
-	def cancel_task(self):
-		chk = sql("select distinct t1.name from `tabTimesheet` t1, `tabTimesheet Detail` t2 where t2.parent = t1.name and t2.task_id = %s and t1.status!='Cancelled'", self.doc.name)
-		if chk:
-			chk_lst = [x[0] for x in chk]
-			msgprint("Timesheet(s) "+','.join(chk_lst)+" created against this task. Thus can not be cancelled")
-			raise Exception
-		else:
-			self.doc.status = 'Cancelled'
-			self.doc.docstatus = 2
-			self.remove_event_from_calender()
-		self.doc.save()
-		return cstr('true')
-
-	
-	def add_calendar_event(self):
-		""" Add calendar event for task in calendar of Allocated person"""
-		event = Document('Event')
-		event.owner = self.doc.allocated_to
-		event.description = self.doc.subject 
-		event.event_date = self.doc.exp_start_date and self.doc.exp_start_date or ''
-		event.event_hour =  self.doc.event_hour and self.doc.event_hour or '10:00'
-		event.event_type = 'Private'
-		event.ref_type = 'Task'
-		event.ref_name = self.doc.name
-		event.save(1)
diff --git a/erpnext/projects/doctype/task/task.txt b/erpnext/projects/doctype/task/task.txt
index eedb651..e5a5602 100644
--- a/erpnext/projects/doctype/task/task.txt
+++ b/erpnext/projects/doctype/task/task.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-02 16:02:06',
+		'creation': '2012-06-04 14:05:07',
 		'docstatus': 0,
-		'modified': '2012-06-04 12:33:35',
+		'modified': '2012-08-08 14:01:34',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -14,7 +14,7 @@
 	{
 		'_last_update': u'1324880734',
 		'allow_trash': 1,
-		'autoname': u'TIC/.####',
+		'autoname': u'TASK.#####',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
 		'doctype': 'DocType',
@@ -35,7 +35,8 @@
 		'name': '__common__',
 		'parent': u'Task',
 		'parentfield': u'fields',
-		'parenttype': u'DocType'
+		'parenttype': u'DocType',
+		'permlevel': 0
 	},
 
 	# These values are common for all DocPerm
@@ -62,7 +63,6 @@
 		'doctype': u'DocPerm',
 		'permlevel': 0,
 		'role': u'All',
-		'submit': 0,
 		'write': 1
 	},
 
@@ -99,7 +99,6 @@
 		'fieldtype': u'Section Break',
 		'label': u'Task Details',
 		'oldfieldtype': u'Section Break',
-		'permlevel': 0,
 		'search_index': 0,
 		'width': u'50%'
 	},
@@ -113,42 +112,17 @@
 		'label': u'Subject',
 		'oldfieldname': u'subject',
 		'oldfieldtype': u'Data',
-		'permlevel': 0,
 		'reqd': 1
 	},
 
 	# DocField
 	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'allocated_to',
-		'fieldtype': u'Link',
-		'label': u'Allocated To',
-		'oldfieldname': u'allocated_to',
-		'oldfieldtype': u'Link',
-		'options': u'Profile',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'task_email_notify',
-		'fieldtype': u'Check',
-		'label': u'Send Mail Notification',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
 		'doctype': u'DocField',
 		'fieldname': u'exp_start_date',
 		'fieldtype': u'Date',
 		'label': u'Expected Start Date',
 		'oldfieldname': u'exp_start_date',
 		'oldfieldtype': u'Date',
-		'permlevel': 0,
 		'reqd': 0
 	},
 
@@ -161,7 +135,6 @@
 		'label': u'Expected End Date',
 		'oldfieldname': u'exp_end_date',
 		'oldfieldtype': u'Date',
-		'permlevel': 0,
 		'reqd': 0,
 		'search_index': 1
 	},
@@ -172,7 +145,6 @@
 		'fieldname': u'column_break0',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
 		'width': u'50%'
 	},
 
@@ -186,12 +158,12 @@
 		'oldfieldname': u'project',
 		'oldfieldtype': u'Link',
 		'options': u'Project',
-		'permlevel': 0,
 		'trigger': u'Client'
 	},
 
 	# DocField
 	{
+		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'status',
 		'fieldtype': u'Select',
@@ -199,8 +171,7 @@
 		'no_copy': 1,
 		'oldfieldname': u'status',
 		'oldfieldtype': u'Select',
-		'options': u'Open\nPending Review\nClosed\nCancelled',
-		'permlevel': 1,
+		'options': u'Open\nWorking\nPending Review\nClosed\nCancelled',
 		'trigger': u'Client'
 	},
 
@@ -214,7 +185,6 @@
 		'oldfieldname': u'priority',
 		'oldfieldtype': u'Select',
 		'options': u'Low\nMedium\nHigh\nUrgent',
-		'permlevel': 0,
 		'reqd': 0,
 		'search_index': 1
 	},
@@ -222,23 +192,10 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'allocated_to_name',
-		'fieldtype': u'Data',
-		'hidden': 1,
-		'label': u'Allocated To Name',
-		'oldfieldname': u'allocated_to_name',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'section_break0',
 		'fieldtype': u'Section Break',
 		'oldfieldtype': u'Section Break',
-		'options': u'Simple',
-		'permlevel': 0
+		'options': u'Simple'
 	},
 
 	# DocField
@@ -249,123 +206,17 @@
 		'label': u'Details',
 		'oldfieldname': u'description',
 		'oldfieldtype': u'Text Editor',
-		'permlevel': 0,
 		'reqd': 0,
 		'width': u'300px'
 	},
 
 	# DocField
 	{
-		'colour': u'White:FFF',
-		'description': u'If linked to a Customer',
-		'doctype': u'DocField',
-		'fieldname': u'customer_details',
-		'fieldtype': u'Section Break',
-		'label': u'Customer Details',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'external_or_internal',
-		'fieldtype': u'Select',
-		'label': u'External or Internal',
-		'oldfieldname': u'external_or_internal',
-		'oldfieldtype': u'Select',
-		'options': u'External\nInternal',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'customer',
-		'fieldtype': u'Link',
-		'label': u'Customer',
-		'oldfieldname': u'customer',
-		'oldfieldtype': u'Link',
-		'options': u'Customer',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'customer_name',
-		'fieldtype': u'Data',
-		'label': u'Customer Name',
-		'oldfieldname': u'customer_name',
-		'oldfieldtype': u'Data',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'senders_name',
-		'fieldtype': u'Data',
-		'in_filter': 1,
-		'label': u'Raised By',
-		'oldfieldname': u'senders_name',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'reqd': 1,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'senders_email',
-		'fieldtype': u'Data',
-		'label': u'Email',
-		'oldfieldname': u'senders_email',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break25',
-		'fieldtype': u'Column Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'senders_contact_no',
-		'fieldtype': u'Data',
-		'label': u'Senders Contact No',
-		'oldfieldname': u'senders_contact_no',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'senders_company',
-		'fieldtype': u'Data',
-		'label': u'Senders Company',
-		'oldfieldname': u'senders_company',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
 		'doctype': u'DocField',
 		'fieldname': u'time_and_budget',
 		'fieldtype': u'Section Break',
 		'label': u'Time and Budget',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0
+		'oldfieldtype': u'Section Break'
 	},
 
 	# DocField
@@ -375,7 +226,6 @@
 		'fieldtype': u'Column Break',
 		'label': u'Expected',
 		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
 		'width': u'50%'
 	},
 
@@ -387,7 +237,6 @@
 		'label': u'Total Hours (Expected)',
 		'oldfieldname': u'exp_total_hrs',
 		'oldfieldtype': u'Data',
-		'permlevel': 0,
 		'reqd': 0
 	},
 
@@ -398,8 +247,7 @@
 		'fieldtype': u'Currency',
 		'label': u'Allocated Budget',
 		'oldfieldname': u'allocated_budget',
-		'oldfieldtype': u'Currency',
-		'permlevel': 0
+		'oldfieldtype': u'Currency'
 	},
 
 	# DocField
@@ -409,7 +257,6 @@
 		'fieldtype': u'Column Break',
 		'label': u'Actual',
 		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
 		'width': u'50%'
 	},
 
@@ -420,8 +267,7 @@
 		'fieldtype': u'Date',
 		'label': u'Actual Start Date',
 		'oldfieldname': u'act_start_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0
+		'oldfieldtype': u'Date'
 	},
 
 	# DocField
@@ -431,8 +277,7 @@
 		'fieldtype': u'Date',
 		'label': u'Actual End Date',
 		'oldfieldname': u'act_end_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0
+		'oldfieldtype': u'Date'
 	},
 
 	# DocField
@@ -442,8 +287,7 @@
 		'fieldtype': u'Data',
 		'label': u'Total Hours (Actual)',
 		'oldfieldname': u'act_total_hrs',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
+		'oldfieldtype': u'Data'
 	},
 
 	# DocField
@@ -453,8 +297,7 @@
 		'fieldtype': u'Currency',
 		'label': u'Actual Budget',
 		'oldfieldname': u'actual_budget',
-		'oldfieldtype': u'Currency',
-		'permlevel': 0
+		'oldfieldtype': u'Currency'
 	},
 
 	# DocField
@@ -462,20 +305,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'more_details',
 		'fieldtype': u'Section Break',
-		'label': u'More Details',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'opening_date',
-		'fieldtype': u'Date',
-		'label': u'Creation Date',
-		'oldfieldname': u'opening_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0,
-		'reqd': 1
+		'label': u'More Details'
 	},
 
 	# DocField
@@ -488,8 +318,7 @@
 		'hidden': 1,
 		'label': u'Review Date',
 		'oldfieldname': u'review_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0
+		'oldfieldtype': u'Date'
 	},
 
 	# DocField
@@ -502,37 +331,6 @@
 		'hidden': 1,
 		'label': u'Closing Date',
 		'oldfieldname': u'closing_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amended_from',
-		'fieldtype': u'Data',
-		'hidden': 1,
-		'label': u'Amended From',
-		'no_copy': 1,
-		'oldfieldname': u'amended_from',
-		'oldfieldtype': u'Data',
-		'permlevel': 1,
-		'print_hide': 1,
-		'report_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amendment_date',
-		'fieldtype': u'Date',
-		'hidden': 1,
-		'label': u'Amendment Date',
-		'no_copy': 1,
-		'oldfieldname': u'amendment_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 1,
-		'print_hide': 1,
-		'report_hide': 1
+		'oldfieldtype': u'Date'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/projects/doctype/timesheet/__init__.py b/erpnext/projects/doctype/timesheet/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/doctype/timesheet/__init__.py
+++ b/erpnext/projects/doctype/timesheet/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py
index d9042d5..4dbbc91 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.py
+++ b/erpnext/projects/doctype/timesheet/timesheet.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/projects/doctype/timesheet_detail/__init__.py b/erpnext/projects/doctype/timesheet_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/doctype/timesheet_detail/__init__.py
+++ b/erpnext/projects/doctype/timesheet_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/gantt_task.js b/erpnext/projects/gantt_task.js
new file mode 100644
index 0000000..aa3adbb
--- /dev/null
+++ b/erpnext/projects/gantt_task.js
@@ -0,0 +1,88 @@
+// ERPNext - web based ERP (http://erpnext.com)
+// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+// 
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+// gantt chart for project tasks
+
+wn.require('js/lib/jQuery.Gantt/css/style.css');
+wn.require('js/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js');
+
+erpnext.show_task_gantt = function(parent, project) {
+	
+	$(parent).css('min-height', '300px').html('<div class="help-box">Loading...</div>')
+	
+	var get_source = function(r) {
+		var source = [];
+		// projects
+		$.each(r.message, function(i,v) {
+			source.push({
+				name: v.project, 
+				desc: v.subject,
+				values: [{
+					label: v.subject,
+					desc: v.description || v.subject,
+					from: '/Date("'+v.exp_start_date+'")/',
+					to: '/Date("'+v.exp_end_date+'")/',
+					customClass: {
+						'Open':'ganttRed',
+						'Pending Review':'ganttOrange',
+						'Working':'',
+						'Completed':'ganttGreen',
+						'Cancelled':'ganttGray'
+					}[v.status],
+					dataObj: v
+				}]
+			})
+		});
+		return source	
+	}
+	wn.call({
+		method: 'projects.page.projects.projects.get_tasks',
+		args: {
+			project: project || ''
+		},
+		callback: function(r) {
+			$(parent).empty();
+			if(!r.message.length) {
+				$(parent).html('<div class="help-box">No Tasks Yet.</div>');
+			} else {
+				var gantt_area = $('<div class="gantt">').appendTo(parent);
+				gantt_area.gantt({
+					source: get_source(r),
+					navigate: project ? "button" : "scroll",
+					scale: "weeks",
+					minScale: "weeks",
+					maxScale: "months",
+					onItemClick: function(data) {
+						wn.set_route('Form', 'Task', data.name);
+					},
+					onAddClick: function(dt, rowId) {
+						newdoc('Task');
+					}
+				});				
+			}
+
+			$('<button class="btn"><i class="icon icon-plus"></i>\
+				Create a new Task</button>').click(function() {
+				wn.model.with_doctype('Task', function() {
+					var new_name = LocalDB.create('Task');
+					if(project)
+						locals.Task[new_name].project = project;
+					wn.set_route('Form', 'Task', new_name);
+				});
+			}).appendTo(parent);
+		}
+	})	
+}
diff --git a/erpnext/projects/page/__init__.py b/erpnext/projects/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/page/__init__.py
+++ b/erpnext/projects/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/page/projects/__init__.py b/erpnext/projects/page/projects/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/page/projects/__init__.py
+++ b/erpnext/projects/page/projects/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/page/projects/projects.js b/erpnext/projects/page/projects/projects.js
index 7dc9358..e67959e 100644
--- a/erpnext/projects/page/projects/projects.js
+++ b/erpnext/projects/page/projects/projects.js
@@ -14,58 +14,11 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-pscript.queries_bg_dict = {
-	'Urgent':'RED',
-	'High':'ORANGE',
-	'Low':'BLUE',
-	'Closed':'GREEN',
-	'Pending Review':'YELLOW'
-}
-
 pscript.onload_Projects = function(wrapper) {
 	wn.ui.make_app_page({parent:wrapper, title:'Gantt Chart: All Tasks', single_column:true});
-	
-	$(wrapper).find('.layout-main').html('<div class="help-box">Loading...</div>')
-	
-	
-	wn.require('js/lib/jQuery.Gantt/css/style.css');
-	wn.require('js/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js');
-	
-	wn.call({
-		method: 'projects.page.projects.projects.get_tasks',
-		callback: function(r) {
-			$(wrapper).find('.layout-main').empty();
-			
-			var source = [];
-			// projects
-			$.each(r.message, function(i,v) {
-				source.push({
-					name: v.project, 
-					desc: v.subject,
-					values: [{
-						label: v.subject,
-						desc: v.description || v.subject,
-						from: '/Date("'+v.exp_start_date+'")/',
-						to: '/Date("'+v.exp_end_date+'")/'					
-					}]
-				})
-			})
-			
-			var gantt_area = $('<div class="gantt">').appendTo($(wrapper).find('.layout-main'));
-			gantt_area.gantt({
-				source: source,
-				navigate: "scroll",
-				scale: "weeks",
-				minScale: "weeks",
-				maxScale: "months",
-				onItemClick: function(data) {
-					alert("Item clicked - show some details");
-				},
-				onAddClick: function(dt, rowId) {
-					//alert("Empty space clicked - add an item!");
-				}
-			});
-			
-		}
-	})
+	if(!erpnext.show_task_gantt)
+		wn.require('js/gantt_task.js');
+
+	var gantt_area = $('<div>').appendTo($(wrapper).find('.layout-main'));
+	erpnext.show_task_gantt(gantt_area);
 }
\ No newline at end of file
diff --git a/erpnext/projects/page/projects/projects.py b/erpnext/projects/page/projects/projects.py
index 8f170de..5949518 100644
--- a/erpnext/projects/page/projects/projects.py
+++ b/erpnext/projects/page/projects/projects.py
@@ -14,12 +14,16 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 @webnotes.whitelist()
 def get_tasks():
+	cond = ''
+	if webnotes.form_dict.get('project'):
+		cond = ' and project="%s"' % webnotes.form_dict.get('project')
 	return webnotes.conn.sql("""select name, project, subject, exp_start_date, exp_end_date, 
-		description from tabTask where 
+		description, status from tabTask where 
 		project is not null
 		and exp_start_date is not null 
-		and exp_end_date is not null""", as_dict=True)
\ No newline at end of file
+		and exp_end_date is not null %s""" % cond, as_dict=True)
\ No newline at end of file
diff --git a/erpnext/projects/page/projects_home/__init__.py b/erpnext/projects/page/projects_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/page/projects_home/__init__.py
+++ b/erpnext/projects/page/projects_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/search_criteria/__init__.py b/erpnext/projects/search_criteria/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/search_criteria/__init__.py
+++ b/erpnext/projects/search_criteria/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/__init__.py b/erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/__init__.py
+++ b/erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/__init__.py b/erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/__init__.py
+++ b/erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/search_criteria/projectwise_purchase_details/__init__.py b/erpnext/projects/search_criteria/projectwise_purchase_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/search_criteria/projectwise_purchase_details/__init__.py
+++ b/erpnext/projects/search_criteria/projectwise_purchase_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.py b/erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.py
index 4dab05c..ed82ceb 100644
--- a/erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.py
+++ b/erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 based_on = filter_values.get('based_on')
 # make default columns
 #for r in res:
diff --git a/erpnext/projects/search_criteria/projectwise_sales_details/__init__.py b/erpnext/projects/search_criteria/projectwise_sales_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/search_criteria/projectwise_sales_details/__init__.py
+++ b/erpnext/projects/search_criteria/projectwise_sales_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.py b/erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.py
index 065a03d..50ade66 100644
--- a/erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.py
+++ b/erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 based_on = filter_values.get('based_on')
 
 cols=[]
diff --git a/erpnext/projects/search_criteria/projectwise_sales_orders/__init__.py b/erpnext/projects/search_criteria/projectwise_sales_orders/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/search_criteria/projectwise_sales_orders/__init__.py
+++ b/erpnext/projects/search_criteria/projectwise_sales_orders/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/projects/search_criteria/timesheet_report/__init__.py b/erpnext/projects/search_criteria/timesheet_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/projects/search_criteria/timesheet_report/__init__.py
+++ b/erpnext/projects/search_criteria/timesheet_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/sandbox/__init__.py b/erpnext/sandbox/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/sandbox/__init__.py
+++ b/erpnext/sandbox/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/sandbox/test_leave.py b/erpnext/sandbox/test_leave.py
index 407b0f1..52715ec 100644
--- a/erpnext/sandbox/test_leave.py
+++ b/erpnext/sandbox/test_leave.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import unittest
 
 import webnotes
diff --git a/erpnext/sandbox/test_stock_entry.py b/erpnext/sandbox/test_stock_entry.py
index 7721a3e..e11d567 100644
--- a/erpnext/sandbox/test_stock_entry.py
+++ b/erpnext/sandbox/test_stock_entry.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import unittest
 
 import webnotes
diff --git a/erpnext/sandbox/test_stock_reco.py b/erpnext/sandbox/test_stock_reco.py
index 1d78277..d02d6f5 100644
--- a/erpnext/sandbox/test_stock_reco.py
+++ b/erpnext/sandbox/test_stock_reco.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import unittest
 
 import webnotes
diff --git a/erpnext/sandbox/testdata/__init__.py b/erpnext/sandbox/testdata/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/sandbox/testdata/__init__.py
+++ b/erpnext/sandbox/testdata/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/sandbox/testdata/leaves.py b/erpnext/sandbox/testdata/leaves.py
index d8ed122..db8b431 100644
--- a/erpnext/sandbox/testdata/leaves.py
+++ b/erpnext/sandbox/testdata/leaves.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 from webnotes.model.doc import Document
 
 emp = Document(
diff --git a/erpnext/sandbox/testdata/masters.py b/erpnext/sandbox/testdata/masters.py
index 61fa2cb..c59253b 100644
--- a/erpnext/sandbox/testdata/masters.py
+++ b/erpnext/sandbox/testdata/masters.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """
 	All master data in one place, can be created by 1 function call
 
diff --git a/erpnext/sandbox/testdata/sle_data.py b/erpnext/sandbox/testdata/sle_data.py
index 3469c10..5cd6dc2 100644
--- a/erpnext/sandbox/testdata/sle_data.py
+++ b/erpnext/sandbox/testdata/sle_data.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 from webnotes.model.doc import Document
 
 # Existing SLE data
diff --git a/erpnext/sandbox/testdata/stock_entry.py b/erpnext/sandbox/testdata/stock_entry.py
index 91aaed4..e617c08 100644
--- a/erpnext/sandbox/testdata/stock_entry.py
+++ b/erpnext/sandbox/testdata/stock_entry.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 from webnotes.model.doc import Document
 
 # Material  Receipt
diff --git a/erpnext/sandbox/testdata/stock_reco.py b/erpnext/sandbox/testdata/stock_reco.py
index 14e28ff..87e3eb2 100644
--- a/erpnext/sandbox/testdata/stock_reco.py
+++ b/erpnext/sandbox/testdata/stock_reco.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 from webnotes.model.doc import Document
 
 # Stock Reconciliation
diff --git a/erpnext/selling/__init__.py b/erpnext/selling/__init__.py
index f8a457a..beb4975 100644
--- a/erpnext/selling/__init__.py
+++ b/erpnext/selling/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{"doctype":"Role", "role_name":"Customer", "name":"Customer"},
 	{"doctype":"Role", "role_name":"Partner", "name":"Partner"},
diff --git a/erpnext/selling/doctype/__init__.py b/erpnext/selling/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/__init__.py
+++ b/erpnext/selling/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/campaign/__init__.py b/erpnext/selling/doctype/campaign/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/campaign/__init__.py
+++ b/erpnext/selling/doctype/campaign/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/campaign/campaign.txt b/erpnext/selling/doctype/campaign/campaign.txt
index 0912fe7..41c0e77 100644
--- a/erpnext/selling/doctype/campaign/campaign.txt
+++ b/erpnext/selling/doctype/campaign/campaign.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:07',
+		'creation': '2012-07-03 13:30:38',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:07',
+		'modified': '2012-07-12 13:21:52',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,6 +17,7 @@
 		'autoname': u'field:campaign_name',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'Keep Track of Sales Campaigns. Keep track of Leads, Quotations, Sales Order etc from Campaigns to gauge Return on Investment. ',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'module': u'Selling',
@@ -24,7 +25,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 7
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -56,6 +57,56 @@
 
 	# DocPerm
 	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales Manager',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales Manager',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales Master Manager',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales User',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales User',
+		'write': 0
+	},
+
+	# DocPerm
+	{
 		'cancel': 1,
 		'create': 1,
 		'doctype': u'DocPerm',
@@ -64,56 +115,6 @@
 		'write': 1
 	},
 
-	# DocPerm
-	{
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales Manager',
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales Manager',
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales Master Manager',
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales User',
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales User',
-		'write': 0
-	},
-
 	# DocField
 	{
 		'doctype': u'DocField',
diff --git a/erpnext/selling/doctype/customer/__init__.py b/erpnext/selling/doctype/customer/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/customer/__init__.py
+++ b/erpnext/selling/doctype/customer/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index 0dd3635..0bf499b 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import cstr, date_diff, flt, formatdate, get_defaults, getdate, has_common, now, nowdate, replace_newlines, sendmail, set_default, user_format, validate_email_add
diff --git a/erpnext/selling/doctype/industry_type/__init__.py b/erpnext/selling/doctype/industry_type/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/industry_type/__init__.py
+++ b/erpnext/selling/doctype/industry_type/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/installation_note/__init__.py b/erpnext/selling/doctype/installation_note/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/installation_note/__init__.py
+++ b/erpnext/selling/doctype/installation_note/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/installation_note/installation_note.py b/erpnext/selling/doctype/installation_note/installation_note.py
index 9c17f9d..2af258a 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.py
+++ b/erpnext/selling/doctype/installation_note/installation_note.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/selling/doctype/installation_note_item/__init__.py b/erpnext/selling/doctype/installation_note_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/installation_note_item/__init__.py
+++ b/erpnext/selling/doctype/installation_note_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/lead/__init__.py b/erpnext/selling/doctype/lead/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/lead/__init__.py
+++ b/erpnext/selling/doctype/lead/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index cdb278e..ddccbc1 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/selling/doctype/lead/lead.txt b/erpnext/selling/doctype/lead/lead.txt
index 056fc16..9c74de9 100644
--- a/erpnext/selling/doctype/lead/lead.txt
+++ b/erpnext/selling/doctype/lead/lead.txt
@@ -3,11 +3,11 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-06-05 20:03:20',
-		'docstatus': 0,
-		'modified': '2012-08-03 10:49:22',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
+		u'creation': '2012-06-05 20:03:20',
+		u'docstatus': 0,
+		u'modified': '2012-08-06 14:49:48',
+		u'modified_by': u'Administrator',
+		u'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
@@ -16,10 +16,10 @@
 		'allow_trash': 1,
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
-		'doctype': 'DocType',
+		u'doctype': u'DocType',
 		'document_type': u'Master',
 		'module': u'Selling',
-		'name': '__common__',
+		u'name': u'__common__',
 		'search_fields': u'lead_name,lead_owner,status',
 		'section_style': u'Tabbed',
 		'server_code_error': u' ',
@@ -31,8 +31,8 @@
 
 	# These values are common for all DocField
 	{
-		'doctype': u'DocField',
-		'name': '__common__',
+		u'doctype': u'DocField',
+		u'name': u'__common__',
 		'parent': u'Lead',
 		'parentfield': u'fields',
 		'parenttype': u'DocType'
@@ -40,8 +40,8 @@
 
 	# These values are common for all DocPerm
 	{
-		'doctype': u'DocPerm',
-		'name': '__common__',
+		u'doctype': u'DocPerm',
+		u'name': u'__common__',
 		'parent': u'Lead',
 		'parentfield': u'permissions',
 		'parenttype': u'DocType',
@@ -50,90 +50,14 @@
 
 	# DocType, Lead
 	{
-		'doctype': 'DocType',
-		'name': u'Lead'
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales Manager',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales User',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'All'
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'System Manager',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Guest',
-		'write': 1
+		u'doctype': u'DocType',
+		u'name': u'Lead'
 	},
 
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'basic_info',
 		'fieldtype': u'Section Break',
 		'label': u'Basic Info',
@@ -143,7 +67,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break0',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
@@ -155,7 +79,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'To manage multiple series please go to Setup > Manage Series',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'naming_series',
 		'fieldtype': u'Select',
 		'label': u'Naming Series',
@@ -170,7 +94,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'lead_name',
 		'fieldtype': u'Data',
 		'in_filter': 1,
@@ -186,7 +110,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'Name of organization from where lead has come',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'company_name',
 		'fieldtype': u'Data',
 		'in_filter': 1,
@@ -202,7 +126,8 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		'description': u'Source of the lead. If via a campaign, select "Campaign"',
+		u'doctype': u'DocField',
 		'fieldname': u'source',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -210,7 +135,7 @@
 		'no_copy': 1,
 		'oldfieldname': u'source',
 		'oldfieldtype': u'Select',
-		'options': u"\nExisting Customer\nReference\nAdvertisement\nCold Calling\nExhibition\nSupplier Reference\nMass Mailing\nCustomer's Vendor\nCampaign\nWebsite",
+		'options': u'\nAdvertisement\nBlog\nCampaign\nCall\nCustomer\nExhibition\nSupplier\nWebsite',
 		'permlevel': 0,
 		'reqd': 1,
 		'search_index': 0,
@@ -221,7 +146,8 @@
 	{
 		'colour': u'White:FFF',
 		'depends_on': u"eval:doc.source == 'Existing Customer'",
-		'doctype': u'DocField',
+		'description': u'Source of th',
+		u'doctype': u'DocField',
 		'fieldname': u'customer',
 		'fieldtype': u'Link',
 		'hidden': 0,
@@ -237,7 +163,7 @@
 		'colour': u'White:FFF',
 		'depends_on': u"eval:doc.source == 'Campaign'",
 		'description': u'Enter campaign name if the source of lead is campaign.',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'campaign_name',
 		'fieldtype': u'Link',
 		'hidden': 0,
@@ -250,7 +176,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break1',
 		'fieldtype': u'Column Break',
 		'permlevel': 0,
@@ -261,7 +187,7 @@
 	{
 		'colour': u'White:FFF',
 		'default': u'Open',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'status',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -279,7 +205,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'type',
 		'fieldtype': u'Select',
 		'in_filter': 1,
@@ -293,7 +219,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'remark',
 		'fieldtype': u'Small Text',
 		'label': u'Remark',
@@ -304,7 +230,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'communication_history',
 		'fieldtype': u'Section Break',
 		'label': u'Communication History',
@@ -315,7 +241,7 @@
 	{
 		'allow_on_submit': 0,
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'communication_html',
 		'fieldtype': u'HTML',
 		'label': u'Communication HTML',
@@ -326,7 +252,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'contact_info',
 		'fieldtype': u'Section Break',
 		'label': u'Contact Info',
@@ -337,7 +263,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'phone',
 		'fieldtype': u'Data',
 		'label': u'Phone',
@@ -349,7 +275,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'mobile_no',
 		'fieldtype': u'Data',
 		'label': u'Mobile No.',
@@ -360,7 +286,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'email_id',
 		'fieldtype': u'Data',
 		'label': u'Email Id',
@@ -372,7 +298,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'fax',
 		'fieldtype': u'Data',
 		'label': u'Fax',
@@ -383,7 +309,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'website',
 		'fieldtype': u'Data',
 		'label': u'Website',
@@ -396,7 +322,7 @@
 	{
 		'colour': u'White:FFF',
 		'description': u'<a href="javascript:cur_frm.cscript.TerritoryHelp();">To manage Territory, click here</a>',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'territory',
 		'fieldtype': u'Link',
 		'label': u'Territory',
@@ -409,7 +335,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break2',
 		'fieldtype': u'Column Break',
 		'permlevel': 0
@@ -417,7 +343,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'address_line1',
 		'fieldtype': u'Data',
 		'label': u'Address Line 1',
@@ -430,7 +356,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'address_line2',
 		'fieldtype': u'Data',
 		'label': u'Address Line 2',
@@ -442,7 +368,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'city',
 		'fieldtype': u'Data',
 		'label': u'City',
@@ -455,7 +381,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'country',
 		'fieldtype': u'Select',
 		'label': u'Country',
@@ -471,7 +397,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'state',
 		'fieldtype': u'Data',
 		'label': u'State',
@@ -484,7 +410,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'pincode',
 		'fieldtype': u'Data',
 		'label': u'Pin Code',
@@ -497,7 +423,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'more_info',
 		'fieldtype': u'Section Break',
 		'label': u'More Info',
@@ -508,7 +434,7 @@
 	# DocField
 	{
 		'default': u'__user',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'lead_owner',
 		'fieldtype': u'Link',
 		'in_filter': 1,
@@ -522,7 +448,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'market_segment',
 		'fieldtype': u'Select',
 		'hidden': 0,
@@ -538,7 +464,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'industry',
 		'fieldtype': u'Link',
 		'label': u'Industry',
@@ -550,7 +476,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'request_type',
 		'fieldtype': u'Select',
 		'label': u'Request Type',
@@ -562,7 +488,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'fiscal_year',
 		'fieldtype': u'Select',
 		'hidden': 1,
@@ -576,7 +502,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'column_break3',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
@@ -588,7 +514,7 @@
 	{
 		'allow_on_submit': 0,
 		'depends_on': u"eval:doc.status == 'Lead Lost'",
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'order_lost_reason',
 		'fieldtype': u'Link',
 		'hidden': 0,
@@ -604,7 +530,7 @@
 		'allow_on_submit': 0,
 		'colour': u'White:FFF',
 		'description': u'Your sales person who will contact the lead in future',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'contact_by',
 		'fieldtype': u'Link',
 		'hidden': 0,
@@ -624,7 +550,7 @@
 		'allow_on_submit': 0,
 		'colour': u'White:FFF',
 		'description': u'Your sales person will get a reminder on this date to contact the lead',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'contact_date',
 		'fieldtype': u'Date',
 		'in_filter': 1,
@@ -642,7 +568,7 @@
 		'colour': u'White:FFF',
 		'depends_on': u'eval:!doc.__islocal',
 		'description': u'Date on which the lead was last contacted',
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'last_contact_date',
 		'fieldtype': u'Date',
 		'label': u'Last Contact Date',
@@ -655,7 +581,8 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		'colour': u'White:FFF',
+		u'doctype': u'DocField',
 		'fieldname': u'company',
 		'fieldtype': u'Link',
 		'label': u'Company',
@@ -663,12 +590,12 @@
 		'oldfieldtype': u'Link',
 		'options': u'Company',
 		'permlevel': 0,
-		'reqd': 1
+		'reqd': 0
 	},
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'trash_reason',
 		'fieldtype': u'Small Text',
 		'label': u'Trash Reason',
@@ -681,7 +608,7 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'unsubscribed',
 		'fieldtype': u'Check',
 		'label': u'Unsubscribed',
@@ -690,10 +617,86 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
+		u'doctype': u'DocField',
 		'fieldname': u'blog_subscriber',
 		'fieldtype': u'Check',
 		'label': u'Blog Subscriber',
 		'permlevel': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 1,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales Manager',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales User',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		u'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'All'
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'System Manager',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'create': 1,
+		u'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Guest',
+		'write': 1
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/selling/doctype/opportunity/__init__.py b/erpnext/selling/doctype/opportunity/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/opportunity/__init__.py
+++ b/erpnext/selling/doctype/opportunity/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/erpnext/selling/doctype/opportunity/opportunity.py
index 20dcef3..c3a6fb7 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/erpnext/selling/doctype/opportunity/opportunity.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/selling/doctype/opportunity_item/__init__.py b/erpnext/selling/doctype/opportunity_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/opportunity_item/__init__.py
+++ b/erpnext/selling/doctype/opportunity_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/plot_control/__init__.py b/erpnext/selling/doctype/plot_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/plot_control/__init__.py
+++ b/erpnext/selling/doctype/plot_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/plot_control/plot_control.py b/erpnext/selling/doctype/plot_control/plot_control.py
index bff25d8..d0b24b4 100644
--- a/erpnext/selling/doctype/plot_control/plot_control.py
+++ b/erpnext/selling/doctype/plot_control/plot_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/selling/doctype/quotation/__init__.py b/erpnext/selling/doctype/quotation/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/quotation/__init__.py
+++ b/erpnext/selling/doctype/quotation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 175133d..2f97bad 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -63,7 +63,9 @@
 // hide - unhide fields based on lead or customer..
 // =======================================================================================================================
 cur_frm.cscript.lead_cust_show = function(doc,cdt,cdn){
-	hide_field(['lead', 'lead_name','customer','customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group', 'organization']);
+	hide_field(['lead', 'lead_name','customer','customer_address','contact_person',
+		'customer_name','address_display','contact_display','contact_mobile','contact_email',
+		'territory','customer_group', 'organization']);
 	if(doc.quotation_to == 'Lead') unhide_field(['lead']);
 	else if(doc.quotation_to == 'Customer') unhide_field(['customer']);
 	
@@ -283,34 +285,50 @@
 //================ Last Quoted Price and Last Sold Price suggestion ======================
 cur_frm.fields_dict['quotation_details'].grid.get_field('item_code').get_query= function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
-	var cond = (doc.order_type == 'Maintenance')? " and tabItem.is_service_item = 'Yes'" : " and tabItem.is_sales_item = 'Yes'"
-	if(doc.customer)
-		return repl("SELECT i.name,i.item_code,concat('Last quoted at - ',cast(quote_rate as char)) as quote_rate,concat('Last sold at - ',cast(sales_rate as char)) as sales_rate, i.item_name, i.description FROM\
-		(\
-			select item_code,name, item_name, description from tabItem where tabItem.%(key)s like '%s' %(cond)s\
-		)i\
-		left join\
-		(\
-			select q.item_code,q.quote_rate from\
-			(\
-				select q.transaction_date,qd.item_code,qd.basic_rate as quote_rate from `tabQuotation Item` qd, `tabQuotation` q where q.name=qd.parent and q.docstatus=1 and customer='%(cust)s'\
-			)q,\
-			(\
-				select qd.item_code,max(q.transaction_date) as transaction_date from `tabQuotation Item` qd, `tabQuotation` q where q.name=qd.parent and q.docstatus=1 and customer='%(cust)s' group by qd.item_code\
-			)m where q.item_code=m.item_code and q.transaction_date=m.transaction_date\
-		)q on i.item_code=q.item_code\
-		left join\
-		(\
-			select r.item_code,r.sales_rate from\
-			(\
-				select r.voucher_date,rd.item_code,rd.basic_rate as sales_rate from `tabSales Invoice Item` rd, `tabSales Invoice` r where r.name=rd.parent and r.docstatus=1 and r.customer='%(cust)s'\
-			)r,\
-			(\
-				select rd.item_code,max(r.voucher_date) as voucher_date from `tabSales Invoice Item` rd, `tabSales Invoice` r where r.name=rd.parent and r.docstatus=1 and r.customer='%(cust)s' group by rd.item_code\
-			)m where r.item_code=m.item_code and r.voucher_date=m.voucher_date\
-		)s on i.item_code=s.item_code ORDER BY i.item_code LIMIT 50",{cust:doc.customer, cond:cond});
-	else
-		return repl("SELECT name, item_name, description FROM tabItem WHERE `tabItem`.%(key)s LIKE '%s' %(cond)s ORDER BY tabItem.item_code DESC LIMIT 50", {cond:cond});
+	var cond = (doc.order_type == 'Maintenance') ? " and item.is_service_item = 'Yes'" : " and item.is_sales_item = 'Yes'";
+	if(doc.customer) {
+		var export_rate_field = wn.meta.get_docfield(cdt, 'export_rate', cdn);
+		var precision = (export_rate_field && export_rate_field.fieldtype) === 'Float' ? 6 : 2;
+		return repl("\
+			select \
+				item.name, \
+				( \
+					select concat('Last Quote @ ', q.currency, ' ', \
+						format(q_item.export_rate, %(precision)s)) \
+					from `tabQuotation` q, `tabQuotation Item` q_item \
+					where \
+						q.name = q_item.parent \
+						and q_item.item_code = item.name \
+						and q.docstatus = 1 \
+						and q.customer = \"%(cust)s\" \
+					order by q.transaction_date desc \
+					limit 1 \
+				) as quote_rate, \
+				( \
+					select concat('Last Sale @ ', si.currency, ' ', \
+						format(si_item.basic_rate, %(precision)s)) \
+					from `tabSales Invoice` si, `tabSales Invoice Item` si_item \
+					where \
+						si.name = si_item.parent \
+						and si_item.item_code = item.name \
+						and si.docstatus = 1 \
+						and si.customer = \"%(cust)s\" \
+					order by si.voucher_date desc \
+					limit 1 \
+				) as sales_rate, \
+				item.item_name, item.description \
+			from `tabItem` item \
+			where \
+				item.%(key)s like \"%s\" \
+				%(cond)s \
+				limit 25", {
+					cust: doc.customer,
+					cond: cond,
+					precision: precision
+				});
+	} else {
+		return repl("SELECT name, item_name, description FROM `tabItem` item WHERE item.%(key)s LIKE '%s' %(cond)s ORDER BY item.item_code DESC LIMIT 50", {cond:cond});
+	}
 }
 
 cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index c0306e8..5e7828b 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, load_json
diff --git a/erpnext/selling/doctype/quotation/quotation.txt b/erpnext/selling/doctype/quotation/quotation.txt
index 1b34c51..6a42cda 100644
--- a/erpnext/selling/doctype/quotation/quotation.txt
+++ b/erpnext/selling/doctype/quotation/quotation.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-06-08 15:33:49',
+		'creation': '2012-07-05 11:04:12',
 		'docstatus': 0,
-		'modified': '2012-06-08 16:10:44',
+		'modified': '2012-07-16 16:23:50',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -61,100 +61,6 @@
 		'name': u'Quotation'
 	},
 
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'match': u'customer_name',
-		'permlevel': 0,
-		'role': u'Customer'
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Maintenance Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Maintenance Manager'
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Maintenance User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Maintenance User'
-	},
-
 	# DocField
 	{
 		'colour': u'White:FFF',
@@ -547,7 +453,7 @@
 		'description': u"Rate at which Price list currency is converted to company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'plc_conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Price List Currency Conversion Rate',
 		'permlevel': 0,
 		'print_hide': 1,
@@ -590,7 +496,7 @@
 		'description': u"Rate at which customer's currency is converted to company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Conversion Rate',
 		'oldfieldname': u'conversion_rate',
 		'oldfieldtype': u'Currency',
@@ -1271,5 +1177,99 @@
 		'no_copy': 1,
 		'permlevel': 0,
 		'print_hide': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'match': u'customer_name',
+		'permlevel': 0,
+		'role': u'Customer'
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Maintenance Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Maintenance Manager'
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Maintenance User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Maintenance User'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation_item/__init__.py b/erpnext/selling/doctype/quotation_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/quotation_item/__init__.py
+++ b/erpnext/selling/doctype/quotation_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/sales_and_purchase_return_item/__init__.py b/erpnext/selling/doctype/sales_and_purchase_return_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/sales_and_purchase_return_item/__init__.py
+++ b/erpnext/selling/doctype/sales_and_purchase_return_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/sales_common/__init__.py b/erpnext/selling/doctype/sales_common/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/sales_common/__init__.py
+++ b/erpnext/selling/doctype/sales_common/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/erpnext/selling/doctype/sales_common/sales_common.js
index c852230..c229ece 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.js
+++ b/erpnext/selling/doctype/sales_common/sales_common.js
@@ -127,10 +127,35 @@
 	cur_frm.cscript.base_currency = base_curr;
 	set_dynamic_label_par(doc, cdt, cdn, base_curr);
 	set_dynamic_label_child(doc, cdt, cdn, base_curr);
+	set_sales_bom_help(doc);
 
 	if (callback) callback(doc, cdt, cdn);
 }
 
+// Help for Sales BOM items
+var set_sales_bom_help = function(doc) {
+	if(!cur_frm.fields_dict.packing_list) return;
+	if (getchildren('Delivery Note Packing Item', doc.name, 'packing_details').length) {
+		$(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
+		
+		if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
+			help_msg = "<div class='help-box'> \
+				For 'Sales BOM' items, warehouse, serial no and batch no \
+				will be considered from the 'Packing List' table. \
+				If warehouse and batch no are same for all packing items for any 'Sales BOM' item, \
+				those values can be entered in the main item table, values will be copied to 'Packing List' table. \
+			</div>";
+			wn.meta.get_docfield(doc.doctype, 'sales_bom_help', doc.name).options = help_msg;
+		} 
+	} else {
+		$(cur_frm.fields_dict.packing_list.row.wrapper).toggle(false);
+		if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
+			wn.meta.get_docfield(doc.doctype, 'sales_bom_help', doc.name).options = '';
+		}
+	}
+	refresh_field('sales_bom_help');
+}
+
 
 // hide / unhide price list currency based on availability of price list in customer's currency
 //---------------------------------------------------------------------------------------------------
@@ -318,7 +343,7 @@
 				Please either <br /> \
 				* Specify Basic Rate (i.e. Rate which will be displayed in print) <br /> \
 				-- or -- <br />\
-				* Uncheck 'Included in Print Rate' in the tax entries of Taxes section.");
+				* Uncheck 'Is this Tax included in Basic Rate?' in the tax entries of Taxes section.");
 		}
 	}
 }
@@ -340,7 +365,12 @@
 
 // ************* GET OTHER CHARGES BASED ON COMPANY *************
 cur_frm.fields_dict.charge.get_query = function(doc) {
-	return 'SELECT DISTINCT `tabSales Taxes and Charges Master`.name FROM `tabSales Taxes and Charges Master` WHERE `tabSales Taxes and Charges Master`.company = "'+doc.company+'" AND `tabSales Taxes and Charges Master`.company is not NULL AND `tabSales Taxes and Charges Master`.docstatus != 2 AND `tabSales Taxes and Charges Master`.%(key)s LIKE "%s" ORDER BY `tabSales Taxes and Charges Master`.name LIMIT 50';
+	return 'SELECT DISTINCT `tabSales Taxes and Charges Master`.name FROM \
+		`tabSales Taxes and Charges Master` WHERE `tabSales Taxes and Charges Master`.company = "'
+		+doc.company+'" AND `tabSales Taxes and Charges Master`.company is not NULL \
+		AND `tabSales Taxes and Charges Master`.docstatus != 2 \
+		AND `tabSales Taxes and Charges Master`.%(key)s LIKE "%s" \
+		ORDER BY `tabSales Taxes and Charges Master`.name LIMIT 50';
 }
 
 // ********************* Get Charges ****************************
@@ -626,27 +656,15 @@
 	var tax = locals[cdt][cdn];
 	if(tax.included_in_print_rate==1) { 
 		if(!inList(['On Net Total', 'On Previous Row Total', 'On Previous Row Amount'], tax.charge_type)) {
-			msgprint("Included in Print Rate (i.e. Inclusive Price) is only valid for charges of type: <br /> \
+			msgprint("'Is this Tax included in Basic Rate?' (i.e. Inclusive Price) is only valid for charges of type: <br /> \
 				* On Net Total <br /> \
 				* On Previous Row Amount <br /> \
 				* On Previous Row Total");
 			tax.included_in_print_rate = 0;
 			refresh_field('included_in_print_rate', tax.name, cur_frm.cscript.other_fname);
-		} else if(inList(['On Previous Row Total', 'On Previous Row Amount'], tax.charge_type)){
-			if(tax.row_id) {
-				var tax_list = getchildren('Sales Taxes and Charges', doc.name, cur_frm.cscript.other_fname, doc.doctype);
-				if(tax_list[tax.row_id-1].charge_type=='Actual') {
-					msgprint("Row of type 'Actual' cannot be depended on for type '" + tax.charge_type + "'\
-						when using tax inclusive prices.<br />\
-						This will lead to incorrect values.<br /><br /> \
-						<b>Please specify correct value in 'Enter Row' column of <span style='color:red'>Row: "	
-						+ tax.idx + "</span> in Taxes table</b>");
-					validated = false;
-					tax.included_in_print_rate = 0;
-					refresh_field('included_in_print_rate', tax.name, cur_frm.cscript.other_fname);
-				}
-			}
-		}
+		} 
+		var tax_list = getchildren('Sales Taxes and Charges', doc.name, cur_frm.cscript.other_fname, doc.doctype);
+		cur_frm.cscript.validate_print_rate_option(doc, tax_list, tax.idx-1);
 	}
 }
 
@@ -728,6 +746,32 @@
 	cur_frm.cscript.calculate_charges(doc,cdt,cdn);
 }
 
+cur_frm.cscript.validate_print_rate_option = function(doc, taxes, i) {
+	if(in_list(['On Previous Row Amount','On Previous Row Total'], taxes[i].charge_type)) { 
+		if(!taxes[i].row_id){
+			alert("Please Enter Row on which amount needs to be calculated for row : "+taxes[i].idx);
+			validated = false;
+		} else if(taxes[i].included_in_print_rate && taxes[taxes[i].row_id-1].charge_type=='Actual') {
+			msgprint("Row of type 'Actual' cannot be depended on for type '" + taxes[i].charge_type + "'\
+				when using tax inclusive prices.<br />\
+				This will lead to incorrect values.<br /><br /> \
+				<b>Please specify correct value in 'Enter Row' column of <span style='color:red'>Row: "	
+				+ taxes[i].idx + "</span> in Taxes table</b>");
+			validated = false;
+			taxes[i].included_in_print_rate = 0;
+			refresh_field('included_in_print_rate', taxes[i].name, other_fname);
+		} else if ((taxes[i].included_in_print_rate && !taxes[taxes[i].row_id-1].included_in_print_rate) || 
+			(!taxes[i].included_in_print_rate && taxes[taxes[i].row_id-1].included_in_print_rate)) {
+			msgprint("If any row in the tax table depends on 'Previous Row Amount/Total', <br />\
+				'Is this Tax included in Basic Rate?' column should be same for both row <br />\
+				i.e for that row and the previous row. <br /><br />\
+				The same is violated for row #"+(i+1)+" and row #"+taxes[i].row_id
+			);
+			validated = false;
+		}		
+	}
+}
+
 cur_frm.cscript.calculate_charges = function(doc, cdt, cdn) {
 	var other_fname	= cur_frm.cscript.other_fname;
 
@@ -737,21 +781,7 @@
 		cl[i].total_amount = 0;
 		cl[i].tax_amount = 0;										// this is done to calculate other charges
 		cl[i].total = 0;
-		if(in_list(['On Previous Row Amount','On Previous Row Total'], cl[i].charge_type)) { 
-			if(!cl[i].row_id){
-				alert("Please Enter Row on which amount needs to be calculated for row : "+cl[i].idx);
-				validated = false;
-			} else if(cl[i].included_in_print_rate && cl[cl[i].row_id-1].charge_type=='Actual') {
-				msgprint("Row of type 'Actual' cannot be depended on for type '" + cl[i].charge_type + "'\
-					when using tax inclusive prices.<br />\
-					This will lead to incorrect values.<br /><br /> \
-					<b>Please specify correct value in 'Enter Row' column of <span style='color:red'>Row: "	
-					+ cl[i].idx + "</span> in Taxes table</b>");
-				validated = false;
-				cl[i].included_in_print_rate = 0;
-				refresh_field('included_in_print_rate', cl[i].name, other_fname);
-			}
-		}
+		cur_frm.cscript.validate_print_rate_option(doc, cl, i);
 	}
 	cur_frm.cscript.recalc(doc, 1);
 }
diff --git a/erpnext/selling/doctype/sales_common/sales_common.py b/erpnext/selling/doctype/sales_common/sales_common.py
index 57724ac..bf16253 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.py
+++ b/erpnext/selling/doctype/sales_common/sales_common.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -385,7 +386,7 @@
 		return ret
 
 
-	def get_item_list(self, obj, is_stopped):
+	def get_item_list(self, obj, is_stopped=0):
 		"""get item list"""
 		il = []
 		for d in getlist(obj.doclist,obj.fname):
@@ -394,7 +395,7 @@
 			if is_stopped:
 				qty = flt(d.qty) > flt(d.delivered_qty) and flt(flt(d.qty) - flt(d.delivered_qty)) or 0
 				
-			if d.prevdoc_doctype == 'Sales Order':			
+			if d.prevdoc_doctype == 'Sales Order':
 				# used in delivery note to reduce reserved_qty 
 				# Eg.: if SO qty is 10 and there is tolerance of 20%, then it will allow DN of 12.
 				# But in this case reserved qty should only be reduced by 10 and not 12.
@@ -413,7 +414,7 @@
 					if p.parent_detail_docname == d.name and p.parent_item == d.item_code:
 						# the packing details table's qty is already multiplied with parent's qty
 						il.append({
-							'warehouse': d.warehouse,
+							'warehouse': p.warehouse,
 							'reserved_warehouse': reserved_wh,
 							'item_code': p.item_code,
 							'qty': flt(p.qty),
@@ -496,23 +497,21 @@
 		pi.qty = flt(qty)
 		pi.actual_qty = bin and flt(bin['actual_qty']) or 0
 		pi.projected_qty = bin and flt(bin['projected_qty']) or 0
-		pi.warehouse = warehouse
 		pi.prevdoc_doctype = line.prevdoc_doctype
-		if packing_item_code == line.item_code:
-			pi.serial_no = cstr(line.serial_no)
+		if not pi.warehouse:
+			pi.warehouse = warehouse
+		if not pi.batch_no:
 			pi.batch_no = cstr(line.batch_no)
 		pi.idx = self.packing_list_idx
 		
-		# has to be saved, since this function is called on_update of delivery note
+		# saved, since this function is called on_update of delivery note
 		pi.save()
 		
 		self.packing_list_idx += 1
 
 
-	# ------------------
-	# make packing list from sales bom if exists or directly copy item with balance
-	# ------------------ 
 	def make_packing_list(self, obj, fname):
+		"""make packing list for sales bom item"""
 		self.packing_list_idx = 0
 		parent_items = []
 		for d in getlist(obj.doclist, fname):
@@ -520,10 +519,9 @@
 			if self.has_sales_bom(d.item_code):
 				for i in self.get_sales_bom_items(d.item_code):
 					self.update_packing_list_item(obj, i['item_code'], flt(i['qty'])*flt(d.qty), warehouse, d)
-			else:
-				self.update_packing_list_item(obj, d.item_code, d.qty, warehouse, d)
-			if [d.item_code, d.name] not in parent_items:
-				parent_items.append([d.item_code, d.name])
+
+				if [d.item_code, d.name] not in parent_items:
+					parent_items.append([d.item_code, d.name])
 				
 		obj.doclist = self.cleanup_packing_list(obj, parent_items)
 		
diff --git a/erpnext/selling/doctype/sales_order/__init__.py b/erpnext/selling/doctype/sales_order/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/sales_order/__init__.py
+++ b/erpnext/selling/doctype/sales_order/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index fc7f4bc..465d53e 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -181,19 +182,28 @@
 			if getdate(self.doc.transaction_date) > getdate(self.doc.delivery_date):
 				msgprint("Expected Delivery Date cannot be before Sales Order Date")
 				raise Exception
-
-	# Validate P.O Date
-	# ------------------
-	def validate_po_date(self):
-		# validate p.o date v/s delivery date
-		if self.doc.po_date and self.doc.delivery_date and getdate(self.doc.po_date) > getdate(self.doc.delivery_date):
-			msgprint("Expected Delivery Date cannot be before Purchase Order Date")
-			raise Exception	
 		# amendment date is necessary if document is amended
 		if self.doc.amended_from and not self.doc.amendment_date:
 			msgprint("Please Enter Amendment Date")
 			raise Exception
 	
+
+	# Validate P.O Date
+	# ------------------
+	def validate_po(self):
+		# validate p.o date v/s delivery date
+		if self.doc.po_date and self.doc.delivery_date and getdate(self.doc.po_date) > getdate(self.doc.delivery_date):
+			msgprint("Expected Delivery Date cannot be before Purchase Order Date")
+			raise Exception	
+		
+		if self.doc.po_no and self.doc.customer:
+			so = webnotes.conn.sql("select name from `tabSales Order` \
+				where ifnull(po_no, '') = %s and name != %s and docstatus < 2\
+				and customer = %s", (self.doc.po_no, self.doc.name, self.doc.customer))
+			if so and so[0][0]:
+				msgprint("""Another Sales Order (%s) exists against same PO No and Customer. 
+					Please be sure, you are not making duplicate entry.""" % so[0][0])
+	
 	# Validations of Details Table
 	# -----------------------------
 	def validate_for_items(self):
@@ -305,7 +315,7 @@
 		self.validate_order_type()
 		self.validate_mandatory()
 		self.validate_proj_cust()
-		self.validate_po_date()
+		self.validate_po()
 		#self.validate_reference_value()
 		self.validate_for_items()
 		sales_com_obj = get_obj(dt = 'Sales Common')
diff --git a/erpnext/selling/doctype/sales_order/sales_order.txt b/erpnext/selling/doctype/sales_order/sales_order.txt
index ca24ce2..bdb6126 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.txt
+++ b/erpnext/selling/doctype/sales_order/sales_order.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-09 10:56:36',
+		'creation': '2012-07-11 11:54:24',
 		'docstatus': 0,
-		'modified': '2012-05-09 11:06:28',
+		'modified': '2012-07-16 16:24:26',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -58,128 +58,6 @@
 		'name': u'Sales Order'
 	},
 
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'match': u'owner',
-		'permlevel': 0,
-		'role': u'Sales User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Maintenance User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Maintenance Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Maintenance Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 2,
-		'role': u'Accounts User',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'match': u'customer',
-		'permlevel': 0,
-		'role': u'Customer',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Maintenance User',
-		'submit': 0,
-		'write': 0
-	},
-
 	# DocField
 	{
 		'colour': u'White:FFF',
@@ -588,7 +466,7 @@
 		'description': u"Rate at which Price list currency is converted to company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'plc_conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Price List Currency Conversion Rate',
 		'permlevel': 0,
 		'print_hide': 1,
@@ -628,7 +506,7 @@
 		'description': u"Rate at which customer's currency is converted to company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Conversion Rate',
 		'oldfieldname': u'conversion_rate',
 		'oldfieldtype': u'Currency',
@@ -1391,5 +1269,107 @@
 		'no_copy': 1,
 		'permlevel': 0,
 		'print_hide': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'match': u'customer_name',
+		'permlevel': 0,
+		'role': u'Customer'
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 2,
+		'role': u'Accounts User',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Maintenance Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Maintenance Manager'
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Maintenance User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Maintenance User'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/selling/doctype/sales_order_item/__init__.py b/erpnext/selling/doctype/sales_order_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/sales_order_item/__init__.py
+++ b/erpnext/selling/doctype/sales_order_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/sales_team/__init__.py b/erpnext/selling/doctype/sales_team/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/sales_team/__init__.py
+++ b/erpnext/selling/doctype/sales_team/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/shipping_address/__init__.py b/erpnext/selling/doctype/shipping_address/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/selling/doctype/shipping_address/__init__.py
+++ b/erpnext/selling/doctype/shipping_address/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/shipping_address/shipping_address.py b/erpnext/selling/doctype/shipping_address/shipping_address.py
index 179e2d4..ac50d44 100755
--- a/erpnext/selling/doctype/shipping_address/shipping_address.py
+++ b/erpnext/selling/doctype/shipping_address/shipping_address.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 sql = webnotes.conn.sql
 
diff --git a/erpnext/selling/doctype/sms_center/__init__.py b/erpnext/selling/doctype/sms_center/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/doctype/sms_center/__init__.py
+++ b/erpnext/selling/doctype/sms_center/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/doctype/sms_center/sms_center.py b/erpnext/selling/doctype/sms_center/sms_center.py
index 579f1a8..372edb7 100644
--- a/erpnext/selling/doctype/sms_center/sms_center.py
+++ b/erpnext/selling/doctype/sms_center/sms_center.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/selling/page/__init__.py b/erpnext/selling/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/page/__init__.py
+++ b/erpnext/selling/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/page/sales_browser/__init__.py b/erpnext/selling/page/sales_browser/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/page/sales_browser/__init__.py
+++ b/erpnext/selling/page/sales_browser/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/page/sales_browser/sales_browser.js b/erpnext/selling/page/sales_browser/sales_browser.js
index 66e1d52..c98e0e4 100644
--- a/erpnext/selling/page/sales_browser/sales_browser.js
+++ b/erpnext/selling/page/sales_browser/sales_browser.js
@@ -31,7 +31,12 @@
 pscript['onshow_Sales Browser'] = function(wrapper){
 	// set route
 	var ctype = wn.get_route()[1] || 'Territory';
-	wrapper.appframe.title(ctype + ' Tree');  
+
+	wrapper.appframe.clear_breadcrumbs();
+	wrapper.appframe.add_breadcrumb(ctype+' Tree')
+	document.title = ctype+' Tree';
+	
+	wrapper.appframe.add_breadcrumb(' in <a href="#!selling-home">Selling</a>');
 
 	if(erpnext.sales_chart && erpnext.sales_chart.ctype != ctype) {
 		wrapper.make_tree();
diff --git a/erpnext/selling/page/sales_browser/sales_browser.py b/erpnext/selling/page/sales_browser/sales_browser.py
index d5419f5..92c75e0 100644
--- a/erpnext/selling/page/sales_browser/sales_browser.py
+++ b/erpnext/selling/page/sales_browser/sales_browser.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 
 @webnotes.whitelist()
diff --git a/erpnext/selling/page/sales_dashboard/__init__.py b/erpnext/selling/page/sales_dashboard/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/page/sales_dashboard/__init__.py
+++ b/erpnext/selling/page/sales_dashboard/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/page/selling_home/__init__.py b/erpnext/selling/page/selling_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/page/selling_home/__init__.py
+++ b/erpnext/selling/page/selling_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/page/selling_home/selling_home.html b/erpnext/selling/page/selling_home/selling_home.html
index 4857def..164d365 100644
--- a/erpnext/selling/page/selling_home/selling_home.html
+++ b/erpnext/selling/page/selling_home/selling_home.html
@@ -79,12 +79,17 @@
 					</div>
 					<div class="section-item">
 						<a class="section-link" 
+							title = "Tree of item classification"
+							href="#!Sales Browser/Item Group">Item Group</a>
+					</div>
+					<div class="section-item">
+						<a class="section-link" 
 							title = "Sales campaigns"
 							href="#!List/Campaign">Campaign</a>
 					</div>
 					<div class="section-item">
 						<a class="section-link" 
-							title = "Send mass SMS to your conatacts, leads and employees"
+							title = "Send mass SMS to your contacts, leads and employees"
 							href="#!Form/SMS Center/SMS Center">SMS Center</a>
 					</div>
 				</div>
diff --git a/erpnext/selling/search_criteria/__init__.py b/erpnext/selling/search_criteria/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/__init__.py
+++ b/erpnext/selling/search_criteria/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/customer_address_contact/__init__.py b/erpnext/selling/search_criteria/customer_address_contact/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/customer_address_contact/__init__.py
+++ b/erpnext/selling/search_criteria/customer_address_contact/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.py b/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.py
index 2d3e4c3..4ec0e1a 100644
--- a/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.py
+++ b/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 col_defs = [
 	{'label': 'Id', 'type': 'Link', 'width': '', 'options': 'Customer'},
 	{'label': 'Customer Name'},
diff --git a/erpnext/selling/search_criteria/delivered_items_to_be_install/__init__.py b/erpnext/selling/search_criteria/delivered_items_to_be_install/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/delivered_items_to_be_install/__init__.py
+++ b/erpnext/selling/search_criteria/delivered_items_to_be_install/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/delivery_note_itemwise_pending_to_bill/__init__.py b/erpnext/selling/search_criteria/delivery_note_itemwise_pending_to_bill/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/delivery_note_itemwise_pending_to_bill/__init__.py
+++ b/erpnext/selling/search_criteria/delivery_note_itemwise_pending_to_bill/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/draft_sales_orders/__init__.py b/erpnext/selling/search_criteria/draft_sales_orders/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/draft_sales_orders/__init__.py
+++ b/erpnext/selling/search_criteria/draft_sales_orders/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/follow_up_report/__init__.py b/erpnext/selling/search_criteria/follow_up_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/follow_up_report/__init__.py
+++ b/erpnext/selling/search_criteria/follow_up_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/follow_up_report/follow_up_report.py b/erpnext/selling/search_criteria/follow_up_report/follow_up_report.py
index 85c37dc..4006627 100644
--- a/erpnext/selling/search_criteria/follow_up_report/follow_up_report.py
+++ b/erpnext/selling/search_criteria/follow_up_report/follow_up_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 follow_up_on = filter_values.get('follow_up_on')
 
 cols = [['Document Type', 'Data', '150px', '']
diff --git a/erpnext/selling/search_criteria/gross_profit/__init__.py b/erpnext/selling/search_criteria/gross_profit/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/gross_profit/__init__.py
+++ b/erpnext/selling/search_criteria/gross_profit/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/gross_profit/gross_profit.py b/erpnext/selling/search_criteria/gross_profit/gross_profit.py
index d1b0a86..97821d3 100644
--- a/erpnext/selling/search_criteria/gross_profit/gross_profit.py
+++ b/erpnext/selling/search_criteria/gross_profit/gross_profit.py
@@ -16,6 +16,7 @@
 
 # Add Columns
 # ------------
+from __future__ import unicode_literals
 colnames[colnames.index('Rate*')] = 'Rate' 
 col_idx['Rate'] = col_idx['Rate*']
 col_idx.pop('Rate*')
diff --git a/erpnext/selling/search_criteria/itemwise_delivery_details/__init__.py b/erpnext/selling/search_criteria/itemwise_delivery_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/itemwise_delivery_details/__init__.py
+++ b/erpnext/selling/search_criteria/itemwise_delivery_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.py b/erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.py
index 8f868e9..0529d1b 100644
--- a/erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.py
+++ b/erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 out=[]
 qty,amt,bill_amt=0,0,0
 
diff --git a/erpnext/selling/search_criteria/itemwise_sales_details/__init__.py b/erpnext/selling/search_criteria/itemwise_sales_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/itemwise_sales_details/__init__.py
+++ b/erpnext/selling/search_criteria/itemwise_sales_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.py b/erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.py
index ba161dd..1b7a195 100644
--- a/erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.py
+++ b/erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 out=[]
 qty,amt,del_qty,bill_amt=0,0,0,0
 
diff --git a/erpnext/selling/search_criteria/lead_to_follow_up/__init__.py b/erpnext/selling/search_criteria/lead_to_follow_up/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/lead_to_follow_up/__init__.py
+++ b/erpnext/selling/search_criteria/lead_to_follow_up/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/opportunity_to_follow_up/__init__.py b/erpnext/selling/search_criteria/opportunity_to_follow_up/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/opportunity_to_follow_up/__init__.py
+++ b/erpnext/selling/search_criteria/opportunity_to_follow_up/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/sales_order_pending_items/__init__.py b/erpnext/selling/search_criteria/sales_order_pending_items/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/sales_order_pending_items/__init__.py
+++ b/erpnext/selling/search_criteria/sales_order_pending_items/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/__init__.py b/erpnext/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/__init__.py
+++ b/erpnext/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/__init__.py b/erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/__init__.py
+++ b/erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/__init__.py b/erpnext/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/__init__.py
+++ b/erpnext/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/__init__.py b/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/__init__.py
+++ b/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.py b/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.py
index e3f8d67..9656a75 100644
--- a/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.py
+++ b/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 # validate Filters
+from __future__ import unicode_literals
 flt_dict = {'fiscal_year': 'Fiscal Year', 'period': 'Period', 'under' : 'Under', 'sales_person':'Sales Person', 'target_on':'Target On'}
 for f in flt_dict:
   if not filter_values.get(f):
diff --git a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/__init__.py b/erpnext/selling/search_criteria/sales_personwise_transaction_summary/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/__init__.py
+++ b/erpnext/selling/search_criteria/sales_personwise_transaction_summary/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.py b/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.py
index 7b1d6b9..632e545 100755
--- a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.py
+++ b/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 if filter_values.get('based_on') == 'Sales Invoice':
   based_on_dt = 'Sales Invoice'
 else:
diff --git a/erpnext/selling/search_criteria/serial_no_amc_expiring_this_month/__init__.py b/erpnext/selling/search_criteria/serial_no_amc_expiring_this_month/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/serial_no_amc_expiring_this_month/__init__.py
+++ b/erpnext/selling/search_criteria/serial_no_amc_expiring_this_month/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/serial_no_warranty_expiring_this_month/__init__.py b/erpnext/selling/search_criteria/serial_no_warranty_expiring_this_month/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/serial_no_warranty_expiring_this_month/__init__.py
+++ b/erpnext/selling/search_criteria/serial_no_warranty_expiring_this_month/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/target_variance_report/__init__.py b/erpnext/selling/search_criteria/target_variance_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/target_variance_report/__init__.py
+++ b/erpnext/selling/search_criteria/target_variance_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/target_variance_report/target_variance_report.py b/erpnext/selling/search_criteria/target_variance_report/target_variance_report.py
index aa67355..ea11f1b 100644
--- a/erpnext/selling/search_criteria/target_variance_report/target_variance_report.py
+++ b/erpnext/selling/search_criteria/target_variance_report/target_variance_report.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # validate Filters
+from __future__ import unicode_literals
 flt_dict = {'fiscal_year': 'Fiscal Year', 'period': 'Period', 'company':'Company', 'under' : 'Under', 'based_on' : 'Based On'}
 for f in flt_dict:
   if not filter_values.get(f):
diff --git a/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/__init__.py b/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/__init__.py
+++ b/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.py b/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.py
index 85eb528..0ba3fc3 100644
--- a/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.py
+++ b/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # validate Filters
+from __future__ import unicode_literals
 flt_dict = {'fiscal_year': 'Fiscal Year', 'period': 'Period', 'under' : 'Under', 'territory':'Territory', 'target_on':'Target On'}
 for f in flt_dict:
   if not filter_values.get(f):
diff --git a/erpnext/selling/search_criteria/territory_sales___variance_report/__init__.py b/erpnext/selling/search_criteria/territory_sales___variance_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/territory_sales___variance_report/__init__.py
+++ b/erpnext/selling/search_criteria/territory_sales___variance_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.py b/erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.py
index 0cc3af9..e9e40aa 100644
--- a/erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.py
+++ b/erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 if filter_values.get('period'):
   period_values = filter_values['period']
   if len(period_values.split(NEWLINE))>1:
diff --git a/erpnext/selling/search_criteria/total_target_variance_report/__init__.py b/erpnext/selling/search_criteria/total_target_variance_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/total_target_variance_report/__init__.py
+++ b/erpnext/selling/search_criteria/total_target_variance_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.py b/erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.py
index fde7237..a0663fd 100644
--- a/erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.py
+++ b/erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # validate Filters
+from __future__ import unicode_literals
 flt_dict = {'fiscal_year': 'Fiscal Year', 'period': 'Period', 'under' : 'Under', 'based_on' : 'Based On','target_on':'Target On'}
 for f in flt_dict:
   if not filter_values.get(f):
diff --git a/erpnext/selling/search_criteria/variance_report/__init__.py b/erpnext/selling/search_criteria/variance_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/selling/search_criteria/variance_report/__init__.py
+++ b/erpnext/selling/search_criteria/variance_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/selling/search_criteria/variance_report/variance_report.py b/erpnext/selling/search_criteria/variance_report/variance_report.py
index f200f11..7b6856c 100644
--- a/erpnext/selling/search_criteria/variance_report/variance_report.py
+++ b/erpnext/selling/search_criteria/variance_report/variance_report.py
@@ -16,6 +16,7 @@
 
 # Add columns
 # -----------
+from __future__ import unicode_literals
 row_list = [['ID','Data','150px','']]
 
 for r in row_list:
diff --git a/erpnext/setup/__init__.py b/erpnext/setup/__init__.py
index c4b3773..dfc93b5 100644
--- a/erpnext/setup/__init__.py
+++ b/erpnext/setup/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{'doctype':'Role', 'role_name': 'System Manager', 'name': 'System Manager'}
 ]
diff --git a/erpnext/setup/doctype/__init__.py b/erpnext/setup/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/__init__.py
+++ b/erpnext/setup/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/authorization_control/__init__.py b/erpnext/setup/doctype/authorization_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/authorization_control/__init__.py
+++ b/erpnext/setup/doctype/authorization_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/authorization_control/authorization_control.py b/erpnext/setup/doctype/authorization_control/authorization_control.py
index 33b63b8..a49c3f8 100644
--- a/erpnext/setup/doctype/authorization_control/authorization_control.py
+++ b/erpnext/setup/doctype/authorization_control/authorization_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add, make_esc
diff --git a/erpnext/setup/doctype/authorization_rule/__init__.py b/erpnext/setup/doctype/authorization_rule/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/authorization_rule/__init__.py
+++ b/erpnext/setup/doctype/authorization_rule/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/authorization_rule/authorization_rule.py b/erpnext/setup/doctype/authorization_rule/authorization_rule.py
index 17b4df6..0d5721b 100644
--- a/erpnext/setup/doctype/authorization_rule/authorization_rule.py
+++ b/erpnext/setup/doctype/authorization_rule/authorization_rule.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/brand/__init__.py b/erpnext/setup/doctype/brand/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/brand/__init__.py
+++ b/erpnext/setup/doctype/brand/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/company/__init__.py b/erpnext/setup/doctype/company/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/company/__init__.py
+++ b/erpnext/setup/doctype/company/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 11ed655..38c689e 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -166,6 +167,8 @@
 			ac.fields[d] = (d == 'parent_account' and lst[self.fld_dict[d]]) and lst[self.fld_dict[d]] +' - '+ self.doc.abbr or lst[self.fld_dict[d]]
 		ac.old_parent = ''
 		ac_obj = get_obj(doc=ac)
+		ac_obj.doc.freeze_account='No'
+		ac_obj.doc.master_type = ''
 		ac_obj.validate()
 		ac_obj.doc.save(1)
 		ac_obj.on_update()
diff --git a/erpnext/setup/doctype/company/company.txt b/erpnext/setup/doctype/company/company.txt
index f625ac5..1502ed4 100644
--- a/erpnext/setup/doctype/company/company.txt
+++ b/erpnext/setup/doctype/company/company.txt
@@ -85,11 +85,11 @@
 
 	# DocField
 	{
-		'description': u'Please Enter Company Name and Abbr and save the document. Once saved Accounting Settings will be populated automatically',
+		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'details',
 		'fieldtype': u'Section Break',
-		'label': u'Details',
+		'label': u'Company Details',
 		'oldfieldtype': u'Section Break',
 		'permlevel': 0
 	},
@@ -110,6 +110,14 @@
 
 	# DocField
 	{
+		'doctype': u'DocField',
+		'fieldname': u'cb0',
+		'fieldtype': u'Column Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
 		'colour': u'White:FFF',
 		'description': u'Please Enter Abbreviation or Short Name properly as it will be added as Suffix to all Account Heads.',
 		'doctype': u'DocField',
@@ -252,6 +260,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'For reference only.',
 		'doctype': u'DocField',
 		'fieldname': u'company_info',
 		'fieldtype': u'Section Break',
diff --git a/erpnext/setup/doctype/contact_control/__init__.py b/erpnext/setup/doctype/contact_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/contact_control/__init__.py
+++ b/erpnext/setup/doctype/contact_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/contact_control/contact_control.py b/erpnext/setup/doctype/contact_control/contact_control.py
index afa4d05..09088d1 100644
--- a/erpnext/setup/doctype/contact_control/contact_control.py
+++ b/erpnext/setup/doctype/contact_control/contact_control.py
@@ -1,4 +1,5 @@
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/country/__init__.py b/erpnext/setup/doctype/country/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/country/__init__.py
+++ b/erpnext/setup/doctype/country/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/currency/__init__.py b/erpnext/setup/doctype/currency/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/currency/__init__.py
+++ b/erpnext/setup/doctype/currency/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/currency/currency.js b/erpnext/setup/doctype/currency/currency.js
new file mode 100644
index 0000000..cd42c18
--- /dev/null
+++ b/erpnext/setup/doctype/currency/currency.js
@@ -0,0 +1,3 @@
+cur_frm.cscript.refresh = function(doc) {
+	cur_frm.set_intro(doc.__islocal ? "" : "There is nothing to edit.")
+}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/currency.txt b/erpnext/setup/doctype/currency/currency.txt
index 5abf9c5..906e2f8 100644
--- a/erpnext/setup/doctype/currency/currency.txt
+++ b/erpnext/setup/doctype/currency/currency.txt
@@ -3,17 +3,19 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:19',
+		'creation': '2012-07-03 13:30:55',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:19',
+		'modified': '2012-07-11 16:11:45',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
+		'allow_trash': 1,
 		'autoname': u'field:currency_name',
 		'colour': u'White:FFF',
+		'description': u'**Currency** Master',
 		'doctype': 'DocType',
 		'in_create': 0,
 		'module': u'Setup',
@@ -22,7 +24,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 3
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -62,8 +64,15 @@
 
 	# DocPerm
 	{
+		'cancel': 1,
+		'doctype': u'DocPerm',
+		'role': u'Accounts Manager'
+	},
+
+	# DocPerm
+	{
 		'amend': 0,
-		'cancel': 0,
+		'cancel': 1,
 		'doctype': u'DocPerm',
 		'role': u'Sales Master Manager',
 		'submit': 0
@@ -78,12 +87,6 @@
 		'submit': 0
 	},
 
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'role': u'Accounts Manager'
-	},
-
 	# DocField
 	{
 		'doctype': u'DocField'
diff --git a/erpnext/setup/doctype/customer_group/__init__.py b/erpnext/setup/doctype/customer_group/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/customer_group/__init__.py
+++ b/erpnext/setup/doctype/customer_group/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/customer_group/customer_group.js b/erpnext/setup/doctype/customer_group/customer_group.js
index 11794cc..67bc293 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.js
+++ b/erpnext/setup/doctype/customer_group/customer_group.js
@@ -14,21 +14,22 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
- 
-
-cur_frm.cscript.onload = function(){
-   
-  if(doc.__islocal){
-    doc.parent_customer_group = 'Root';
-    refresh('parent_customer_group');
-  }
+cur_frm.cscript.set_breadcrumbs = function(barea) {
+	cur_frm.frm_head.appframe.add_breadcrumb(cur_frm.docname);
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!Sales Browser/Customer Group">\
+		Customer Group Tree</a>');
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!selling-home">Selling</a>');
 }
 
+ 
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
    
 }
 
 //get query select Customer Group
 cur_frm.fields_dict['parent_customer_group'].get_query = function(doc,cdt,cdn) {
-  return 'SELECT `tabCustomer Group`.`name`,`tabCustomer Group`.`parent_customer_group` FROM `tabCustomer Group` WHERE `tabCustomer Group`.`is_group` = "Yes" AND `tabCustomer Group`.`docstatus`!= 2 AND `tabCustomer Group`.%(key)s LIKE "%s" ORDER BY  `tabCustomer Group`.`name` ASC LIMIT 50';
+  return 'SELECT `tabCustomer Group`.`name`,`tabCustomer Group`.`parent_customer_group` \
+	FROM `tabCustomer Group` WHERE `tabCustomer Group`.`is_group` = "Yes" AND \
+		`tabCustomer Group`.`docstatus`!= 2 AND `tabCustomer Group`.%(key)s LIKE "%s" \
+		ORDER BY  `tabCustomer Group`.`name` ASC LIMIT 50';
 }
\ No newline at end of file
diff --git a/erpnext/setup/doctype/customer_group/customer_group.py b/erpnext/setup/doctype/customer_group/customer_group.py
index 375fd7d..9831024 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.py
+++ b/erpnext/setup/doctype/customer_group/customer_group.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/customer_group/customer_group.txt b/erpnext/setup/doctype/customer_group/customer_group.txt
index ceda674..5e44bef 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.txt
+++ b/erpnext/setup/doctype/customer_group/customer_group.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-13 11:56:30',
+		'creation': '2012-07-03 13:30:55',
 		'docstatus': 0,
-		'modified': '2012-04-19 17:50:43',
+		'modified': '2012-07-12 09:47:20',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -22,6 +22,7 @@
 		'in_create': 1,
 		'module': u'Setup',
 		'name': '__common__',
+		'read_only': 1,
 		'search_fields': u'name,parent_customer_group',
 		'section_style': u'Simple',
 		'server_code_error': u' ',
@@ -142,18 +143,6 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'description',
-		'fieldtype': u'Text',
-		'label': u'Description',
-		'oldfieldname': u'description',
-		'oldfieldtype': u'Text',
-		'permlevel': 0,
-		'width': u'300px'
-	},
-
-	# DocField
-	{
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'parent_customer_group',
@@ -185,6 +174,16 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'cb0',
+		'fieldtype': u'Column Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'This Price List will be selected as default for all Customers under this Group.',
+		'doctype': u'DocField',
 		'fieldname': u'default_price_list',
 		'fieldtype': u'Link',
 		'label': u'Default Price List',
diff --git a/erpnext/setup/doctype/email_digest/__init__.py b/erpnext/setup/doctype/email_digest/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/email_digest/__init__.py
+++ b/erpnext/setup/doctype/email_digest/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/email_digest/email_digest.js b/erpnext/setup/doctype/email_digest/email_digest.js
index 1380e77..9d8d5b5 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.js
+++ b/erpnext/setup/doctype/email_digest/email_digest.js
@@ -116,7 +116,7 @@
 		}
 	}
 	doc.recipient_list = rec_list.join('\n');
-	//console.log(doc.recipient_list);
 	cur_frm.rec_dialog.hide();
+	cur_frm.save();
 	cur_frm.refresh_fields();
 }
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index ac0f378..da18c54 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 import webnotes.utils
 
@@ -418,7 +419,6 @@
 			sendmail(
 				recipients=recipient_list,
 				sender='notifications+email_digest@erpnext.com',
-				reply_to='support@erpnext.com',
 				subject=self.doc.frequency + ' Digest',
 				msg=email_body
 			)
diff --git a/erpnext/setup/doctype/email_digest/email_digest.txt b/erpnext/setup/doctype/email_digest/email_digest.txt
index 0a29a8c..7aa39ca 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.txt
+++ b/erpnext/setup/doctype/email_digest/email_digest.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:20',
+		'creation': '2012-07-03 13:30:54',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:20',
+		'modified': '2012-07-12 16:29:08',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -15,13 +15,14 @@
 		'_last_update': u'1324556758',
 		'autoname': u'Prompt',
 		'colour': u'White:FFF',
+		'description': u'Send regular summary reports via Email.',
 		'doctype': 'DocType',
 		'document_type': u'System',
 		'module': u'Setup',
 		'name': '__common__',
 		'section_style': u'Simple',
 		'show_in_menu': 0,
-		'version': 81
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -70,7 +71,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'settings',
 		'fieldtype': u'Section Break',
-		'label': u'Settings',
+		'label': u'Email Digest Settings',
 		'permlevel': 0
 	},
 
@@ -146,16 +147,6 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'addremove_recipients',
-		'fieldtype': u'Button',
-		'label': u'Add/Remove Recipients',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
 		'description': u'Note: Email will not be sent to disabled users',
 		'doctype': u'DocField',
 		'fieldname': u'recipient_list',
@@ -167,7 +158,19 @@
 
 	# DocField
 	{
+		'doctype': u'DocField',
+		'fieldname': u'addremove_recipients',
+		'fieldtype': u'Button',
+		'label': u'Add/Remove Recipients',
+		'permlevel': 0,
+		'trigger': u'Client'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
 		'depends_on': u'eval:doc.use_standard',
+		'description': u'Check all the items below that you want to send in this digest.',
 		'doctype': u'DocField',
 		'fieldname': u'select_digest_content',
 		'fieldtype': u'Section Break',
@@ -247,6 +250,14 @@
 
 	# DocField
 	{
+		'doctype': u'DocField',
+		'fieldname': u'cb1',
+		'fieldtype': u'Column Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
 		'depends_on': u'eval:doc.use_standard',
 		'doctype': u'DocField',
 		'fieldname': u'payments',
@@ -323,35 +334,5 @@
 		'hidden': 1,
 		'label': u'Stock Items below re-order level',
 		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'depends_on': u'eval:!doc.use_standard',
-		'doctype': u'DocField',
-		'fieldname': u'enter_custom_code',
-		'fieldtype': u'Section Break',
-		'label': u'Enter Custom Code',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'depends_on': u'eval:!doc.use_standard',
-		'doctype': u'DocField',
-		'fieldname': u'custom_code',
-		'fieldtype': u'Code',
-		'label': u'Custom Python Code',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'depends_on': u'eval:!doc.use_standard',
-		'doctype': u'DocField',
-		'fieldname': u'email_template',
-		'fieldtype': u'Code',
-		'label': u'Email Template',
-		'permlevel': 0
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/email_settings/__init__.py b/erpnext/setup/doctype/email_settings/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/email_settings/__init__.py
+++ b/erpnext/setup/doctype/email_settings/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/email_settings/email_settings.py b/erpnext/setup/doctype/email_settings/email_settings.py
index e3056de..8f8c760 100644
--- a/erpnext/setup/doctype/email_settings/email_settings.py
+++ b/erpnext/setup/doctype/email_settings/email_settings.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 sql = webnotes.conn.sql
 	
@@ -30,6 +31,7 @@
 
 	def validate_outgoing(self):
 		"""Checks incoming email settings"""
+		self.doc.encode()
 		if self.doc.outgoing_mail_server:
 			from webnotes.utils import cint
 			from webnotes.utils.email_lib.smtp import SMTPServer
@@ -39,7 +41,7 @@
 				port = cint(self.doc.mail_port),
 				use_ssl = self.doc.use_ssl
 			)
-			
+						
 			# exceptions are handled in session connect
 			sess = smtpserver.sess
 
@@ -51,15 +53,17 @@
 			from webnotes.utils.email_lib.receive import POP3Mailbox
 			from webnotes.model.doc import Document
 			import _socket, poplib
+			
 			inc_email = Document('Incoming Email Settings')
-			inc_email.host = self.doc.support_host.encode('utf-8')
+			inc_email.encode()
+			inc_email.host = self.doc.support_host
 			inc_email.use_ssl = self.doc.support_use_ssl
 			try:
 				err_msg = 'User Name or Support Password missing. Please enter and try again.'
 				if not (self.doc.support_username and self.doc.support_password):
 					raise AttributeError, err_msg
-				inc_email.username = self.doc.support_username.encode('utf-8')
-				inc_email.password = self.doc.support_password.encode('utf-8')
+				inc_email.username = self.doc.support_username
+				inc_email.password = self.doc.support_password
 			except AttributeError, e:
 				webnotes.msgprint(err_msg)
 				raise e
diff --git a/erpnext/setup/doctype/email_settings/email_settings.txt b/erpnext/setup/doctype/email_settings/email_settings.txt
index 2772367..cf9d443 100644
--- a/erpnext/setup/doctype/email_settings/email_settings.txt
+++ b/erpnext/setup/doctype/email_settings/email_settings.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-15 12:15:01',
+		'creation': '2012-07-03 13:30:55',
 		'docstatus': 0,
-		'modified': '2012-06-14 14:47:49',
+		'modified': '2012-07-12 16:16:27',
 		'modified_by': u'Administrator',
 		'owner': u'harshada@webnotestech.com'
 	},
@@ -18,6 +18,7 @@
 		'allow_print': 1,
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'Email Settings for Outgoing and Incoming Emails.',
 		'doctype': 'DocType',
 		'in_create': 1,
 		'issingle': 1,
@@ -70,6 +71,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'Set your outgoing mail SMTP settings here. All system generated notifications, emails will go from this mail server. If you are not sure, leave this blank to use ERPNext servers (emails will still be sent from your email id) or contact your email provider.',
 		'doctype': u'DocField',
 		'fieldname': u'outgoing_mails',
 		'fieldtype': u'Section Break',
@@ -78,15 +81,8 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'html1',
-		'fieldtype': u'HTML',
-		'label': u'1',
-		'options': u'<div class="help_box">Set your outgoing mail settings here. All system generated notifications, emails will go from this mail server</div>'
-	},
-
-	# DocField
-	{
+		'colour': u'White:FFF',
+		'description': u'SMTP Server (e.g. smtp.gmail.com)',
 		'doctype': u'DocField',
 		'fieldname': u'outgoing_mail_server',
 		'fieldtype': u'Data',
@@ -96,14 +92,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'mail_port',
-		'fieldtype': u'Int',
-		'label': u'Mail Port'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'use_ssl',
 		'fieldtype': u'Check',
 		'label': u'Use SSL'
@@ -111,6 +99,25 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'If non standard port (e.g. 587)',
+		'doctype': u'DocField',
+		'fieldname': u'mail_port',
+		'fieldtype': u'Int',
+		'label': u'Mail Port'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'cb0',
+		'fieldtype': u'Column Break'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'Set Login and Password if authentication is required.',
 		'doctype': u'DocField',
 		'fieldname': u'mail_login',
 		'fieldtype': u'Data',
@@ -127,6 +134,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'System generated mails will be sent from this email id.',
 		'doctype': u'DocField',
 		'fieldname': u'auto_email_id',
 		'fieldtype': u'Data',
@@ -144,19 +153,12 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'html2',
-		'fieldtype': u'HTML',
-		'label': u'2',
-		'options': u'<div class="help_box">To automatically create Support Tickets from your incoming mail, set your pop3 settings here.</div>'
-	},
-
-	# DocField
-	{
+		'colour': u'White:FFF',
+		'description': u'To automatically create Support Tickets from your incoming mail, set your POP3 settings here. You must ideally create a separate email id for the erp system so that all emails will be synced into the system from that mail id. If you are not sure, please contact your EMail Provider.',
 		'doctype': u'DocField',
 		'fieldname': u'section_break0',
 		'fieldtype': u'Section Break',
-		'options': u'Simple'
+		'label': u'Incoming Mail Setting'
 	},
 
 	# DocField
@@ -216,7 +218,7 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'column_break0',
+		'fieldname': u'cb1',
 		'fieldtype': u'Column Break'
 	},
 
diff --git a/erpnext/setup/doctype/features_setup/__init__.py b/erpnext/setup/doctype/features_setup/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/features_setup/__init__.py
+++ b/erpnext/setup/doctype/features_setup/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/features_setup/features_setup.py b/erpnext/setup/doctype/features_setup/features_setup.py
index e26ca47..50b2535 100644
--- a/erpnext/setup/doctype/features_setup/features_setup.py
+++ b/erpnext/setup/doctype/features_setup/features_setup.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
diff --git a/erpnext/setup/doctype/global_defaults/__init__.py b/erpnext/setup/doctype/global_defaults/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/global_defaults/__init__.py
+++ b/erpnext/setup/doctype/global_defaults/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/erpnext/setup/doctype/global_defaults/global_defaults.py
index 9d30885..b4b2381 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.py
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """Global Defaults"""
 import webnotes
 
diff --git a/erpnext/setup/doctype/item_group/__init__.py b/erpnext/setup/doctype/item_group/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/item_group/__init__.py
+++ b/erpnext/setup/doctype/item_group/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/item_group/item_group.js b/erpnext/setup/doctype/item_group/item_group.js
index db7582c..e5e108a 100644
--- a/erpnext/setup/doctype/item_group/item_group.js
+++ b/erpnext/setup/doctype/item_group/item_group.js
@@ -14,21 +14,14 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
- 
-
-cur_frm.cscript.onload = function(){
-   
-  if(doc.__islocal){
-    doc.parent_item_group = 'Root';
-    refresh('parent_item_group');
-  }
+cur_frm.cscript.set_breadcrumbs = function(barea) {
+	cur_frm.frm_head.appframe.add_breadcrumb(cur_frm.docname);
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!Sales Browser/Item Group">\
+		Item Group Tree</a>');
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!selling-home">Selling</a>');
 }
 
 //get query select item group
 cur_frm.fields_dict['parent_item_group'].get_query = function(doc,cdt,cdn) {
   return 'SELECT `tabItem Group`.`name`,`tabItem Group`.`parent_item_group` FROM `tabItem Group` WHERE `tabItem Group`.`is_group` = "Yes" AND  `tabItem Group`.`docstatus`!= 2 AND `tabItem Group`.`name` !="'+doc.item_group_name+'" AND `tabItem Group`.%(key)s LIKE "%s" ORDER BY  `tabItem Group`.`name` ASC LIMIT 50';
-}
-
-cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-   
 }
\ No newline at end of file
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index 7e92f53..c623c78 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -14,66 +14,16 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
-# Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes.model.doclist import getlist
+from webnotes.utils import flt
 
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
+from webnotes.utils.nestedset import DocTypeNestedSet
 
-
-class DocType:
-	def __init__(self,d,dl):
-		self.doc, self.doclist = d,dl
-		self.nsm_parent_field = 'parent_item_group';
-
-	# update Node Set Model
-	def update_nsm_model(self):
-		import webnotes
-		import webnotes.utils.nestedset
-		webnotes.utils.nestedset.update_nsm(self)
-
-	# ON UPDATE
-	#--------------------------------------
-	def on_update(self):
-		# update nsm
-		self.update_nsm_model()	 
-
-	def validate(self): 
-		if self.doc.lft and self.doc.rgt:
-			res = sql("select name from `tabItem Group` where is_group = 'Yes' and docstatus!= 2 and name ='%s' and name !='%s'"%(self.doc.parent_item_group,self.doc.item_group_name))
-			if not res:
-				msgprint("Please enter proper parent item group.") 
-				raise Exception
-		
-		r = sql("select name from `tabItem Group` where name = '%s' and docstatus = 2"%(self.doc.item_group_name))
-		if r:
-			msgprint("'%s' record is trashed. To untrash please go to Setup & click on Trash."%(self.doc.item_group_name))
-			raise Exception
-	
-	def on_trash(self):
-		item = sql("select name from `tabItem` where ifnull(item_group, '') = %s", self.doc.name)
-		item = [d[0] for d in item]
-		
-		if item:
-			msgprint("""Item Group: %s can not be trashed/deleted because it is used in item: %s. 
-				To trash/delete this, remove/change item group in item master""" % (self.doc.name, item or ''), raise_exception=1)
-				
-		if sql("select name from `tabItem Group` where parent_item_group = %s and docstatus != 2", self.doc.name):
-			msgprint("Child item group exists for this item group. You can not trash/cancel/delete this item group.", raise_exception=1)
-		
-		
-		# rebuild tree
-		set(self.doc,'old_parent', '')
-		self.update_nsm_model()
+class DocType(DocTypeNestedSet):
+	def __init__(self, doc, doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
+		self.nsm_parent_field = 'parent_item_group';
\ No newline at end of file
diff --git a/erpnext/setup/doctype/item_group/item_group.txt b/erpnext/setup/doctype/item_group/item_group.txt
index b56b8da..bd9887f 100644
--- a/erpnext/setup/doctype/item_group/item_group.txt
+++ b/erpnext/setup/doctype/item_group/item_group.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:21',
+		'creation': '2012-07-03 13:30:53',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:21',
+		'modified': '2012-07-12 11:26:21',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,6 +17,7 @@
 		'autoname': u'field:item_group_name',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'Item Classification',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'in_create': 1,
@@ -27,7 +28,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 59
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -57,6 +58,54 @@
 
 	# DocPerm
 	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
 		'cancel': 1,
 		'create': 1,
 		'doctype': u'DocPerm',
@@ -75,54 +124,6 @@
 		'write': 1
 	},
 
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
 	# DocField
 	{
 		'doctype': u'DocField',
@@ -139,20 +140,6 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'description',
-		'fieldtype': u'Text',
-		'label': u'Description',
-		'no_copy': 0,
-		'oldfieldname': u'description',
-		'oldfieldtype': u'Text',
-		'permlevel': 0,
-		'search_index': 0,
-		'width': u'300px'
-	},
-
-	# DocField
-	{
 		'colour': u'White:FFF',
 		'description': u'Check this if you want to show in website',
 		'doctype': u'DocField',
@@ -167,14 +154,9 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'show_in_catalogue',
-		'fieldtype': u'Check',
-		'label': u'Show in catalogue',
-		'no_copy': 0,
-		'oldfieldname': u'show_in_catalogue',
-		'oldfieldtype': u'Check',
-		'permlevel': 0,
-		'search_index': 0
+		'fieldname': u'cb0',
+		'fieldtype': u'Column Break',
+		'permlevel': 0
 	},
 
 	# DocField
diff --git a/erpnext/setup/doctype/market_segment/__init__.py b/erpnext/setup/doctype/market_segment/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/market_segment/__init__.py
+++ b/erpnext/setup/doctype/market_segment/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/naming_series/__init__.py b/erpnext/setup/doctype/naming_series/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/naming_series/__init__.py
+++ b/erpnext/setup/doctype/naming_series/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/naming_series/naming_series.js b/erpnext/setup/doctype/naming_series/naming_series.js
index 7e702c4..967e8b0 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.js
+++ b/erpnext/setup/doctype/naming_series/naming_series.js
@@ -8,33 +8,47 @@
 // 
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 // GNU General Public License for more details.
 // 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 // Settings
 cur_frm.cscript.onload = function(doc, cdt, cdn){
-  var callback = function(r, rt){
-    set_field_options('select_doc_for_series', r.message);
-  }
-  $c_obj(make_doclist(doc.doctype, doc.name),'get_transactions','',callback);
-  cur_frm.cscript.refresh();
-  // add page head
-  //var ph = new PageHeader(cur_frm.fields_dict['head_html'].wrapper, 'Setup Series', 'Set prefix for numbering series on your transactions');
+	cur_frm.call_server('get_transactions', '', cur_frm.cscript.update_selects);
+	
+	cur_frm.cscript.select_doc_for_series(doc);
 }
 
-cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-  // hide buttons
-  $('.appframe-toolbar').toggle(false);
+cur_frm.cscript.update_selects = function(r) {
+	set_field_options('select_doc_for_series', r.message.transactions);
+	set_field_options('prefix', r.message.prefixes);
 }
 
+
 cur_frm.cscript.select_doc_for_series = function(doc, cdt, cdn) {
-  var callback = function(r, rt){
-    locals[cdt][cdn].set_options = r.message;
-    refresh_field('set_options');
-  }
+	cur_frm.toggle_display(['help_html','set_options', 'user_must_always_select', 'update'], 
+		doc.select_doc_for_series)
 
-  $c_obj(make_doclist(doc.doctype, doc.name),'get_options','',callback)
+	var callback = function(r, rt){
+		locals[cdt][cdn].set_options = r.message;
+		refresh_field('set_options');
+		if(r.message && r.message.split('\n')[0]=='') {
+			cur_frm.set_value('user_must_always_select', 1)
+		}
+	}
+
+	if(doc.select_doc_for_series)
+		$c_obj(make_doclist(doc.doctype, doc.name),'get_options','',callback)
+}
+
+cur_frm.cscript.update = function() {
+	cur_frm.call_server('update_series', '', cur_frm.cscript.update_selects)
+}
+
+cur_frm.cscript.prefix = function(doc) {
+	cur_frm.call_server('get_current', '', function(r) {
+		refresh_field('current_value');
+	})
 }
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py
index 5a9a265..689b409 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.py
+++ b/erpnext/setup/doctype/naming_series/naming_series.py
@@ -14,7 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import cint, cstr
@@ -22,23 +22,37 @@
 import webnotes.model.doctype
 
 sql = webnotes.conn.sql
-	
-# -----------------------------------------------------------------------------------------
-
 
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
 
-	#-----------------------------------------------------------------------------------------------------------------------------------
-	def get_transactions(self):
-		return "\n".join([''] + [i[0] for i in sql("SELECT `tabDocField`.`parent` FROM `tabDocField`, `tabDocType` WHERE `tabDocField`.`fieldname` = 'naming_series' and `tabDocType`.name=`tabDocField`.parent order by `tabDocField`.parent")])
+	def get_transactions(self, arg=None):
+		return {
+			"transactions": "\n".join([''] + [i[0] for i in sql("""select `tabDocField`.`parent` 
+				FROM `tabDocField`, `tabDocType` WHERE `tabDocField`.`fieldname` = 'naming_series' 
+				and `tabDocType`.name=`tabDocField`.parent order by `tabDocField`.parent""")]),
+			"prefixes": "\n".join([''] + [i[0] for i in sql("""select name from tabSeries""")])}
 	
 	def scrub_options_list(self, ol):
 		options = filter(lambda x: x, [cstr(n.upper()).strip() for n in ol])
 		return options
+
+	def update_series(self, arg=None):
+		"""update series list"""
+		self.check_duplicate()
+		series_list = self.doc.set_options.split("\n")
+		
+		# set in doctype
+		self.set_series_for(self.doc.select_doc_for_series, series_list)
+		
+		# create series
+		map(self.insert_series, series_list)
+		
+		msgprint('Series Updated')
+		
+		return self.get_transactions()
 	
-	#-----------------------------------------------------------------------------------------------------------------------------------
 	def set_series_for(self, doctype, ol):
 		options = self.scrub_options_list(ol)
 		
@@ -78,14 +92,7 @@
 
 		from webnotes.utils.cache import CacheItem
 		CacheItem(doctype).clear()
-	
-	#-----------------------------------------------------------------------------------------------------------------------------------
-	def update_series(self):
-			self.check_duplicate()
-			self.set_series_for(self.doc.select_doc_for_series, self.doc.set_options.split("\n"))
-			msgprint('Series Updated')			
 			
-	#-----------------------------------------------------------------------------------------------------------------------------------
 	def check_duplicate(self):
 		from core.doctype.doctype.doctype import DocType
 		dt = DocType()
@@ -100,27 +107,31 @@
 					if series in i[0].split("\n"):
 						msgprint("Oops! Series name %s is already in use in %s. Please select a new one" % (series, i[1]), raise_exception=1)
 			
-	#-----------------------------------------------------------------------------------------------------------------------------------
 	def validate_series_name(self, n):
 		import re
 		if not re.match('[a-zA-Z0-9]+(([-/][a-zA-Z0-9])?[-/][a-zA-Z0-9]*)*',n):
 			msgprint('Special Characters except "-" and "/" not allowed in naming series')
 			raise Exception
 		
-	#-----------------------------------------------------------------------------------------------------------------------------------
 	def get_options(self, arg=''):
-		sr = webnotes.model.doctype.get_property(self.doc.select_doc_for_series, 'options', 'naming_series')
+		sr = webnotes.model.doctype.get_property(self.doc.select_doc_for_series, 
+			'options', 'naming_series')
 		return sr
 
+	def get_current(self, arg=None):
+		"""get series current"""
+		self.doc.current_value = webnotes.conn.sql("""select current from tabSeries where name=%s""", 
+			self.doc.prefix)[0][0]
 
-	#-----------------------------------------------------------------------------------------------------------------------------------
+	def insert_series(self, series):
+		"""insert series if missing"""
+		if not webnotes.conn.exists('Series', series):
+			sql("insert into tabSeries (name, current) values (%s,0)", (series))			
+
 	def update_series_start(self):
 		if self.doc.prefix:
-			ser_det = sql("select name from `tabSeries` where name = %s", self.doc.prefix)
-			if ser_det:
-				sql("update `tabSeries` set current = '%s' where name = '%s'" % (self.doc.starts_from-1,self.doc.prefix))
-			else:
-				sql("insert into tabSeries (name, current) values (%s,%s)",(cstr(self.doc.prefix),cint(self.doc.starts_from)-1))
+			self.insert_series(self.doc.prefix)
+			sql("update `tabSeries` set current = '%s' where name = '%s'" % (self.doc.current_value,self.doc.prefix))
 			msgprint("Series Updated Successfully")
 		else:
 			msgprint("Please select prefix first")
diff --git a/erpnext/setup/doctype/naming_series/naming_series.txt b/erpnext/setup/doctype/naming_series/naming_series.txt
index 6cb1dab..ff83af8 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.txt
+++ b/erpnext/setup/doctype/naming_series/naming_series.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-10 13:01:16',
+		'creation': '2012-07-03 13:30:54',
 		'docstatus': 0,
-		'modified': '2012-04-10 18:45:34',
+		'modified': '2012-07-12 15:59:52',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -16,7 +16,7 @@
 		'description': u'Set prefix for numbering series on your transactions',
 		'doctype': 'DocType',
 		'hide_heading': 0,
-		'hide_toolbar': 0,
+		'hide_toolbar': 1,
 		'issingle': 1,
 		'module': u'Setup',
 		'name': '__common__',
@@ -24,7 +24,7 @@
 		'section_style': u'Tray',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 66
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -123,7 +123,7 @@
 		'fieldname': u'help_html',
 		'fieldtype': u'HTML',
 		'label': u'Help HTML',
-		'options': u'<div style="padding: 8px; background-color: #FFD; margin: 8px 0px;">\nWrite the list of series options in the list below. Each on a new line<br>\nAllowed special characters are "/" and "-"<br>\nExamples:<br>\nINV-<br>\nINV-10-<br>\nINVK-<br>\n</div>'
+		'options': u'<div class="help-box">\nEdit list of Series in the box below. Each Series Prefix on a new line.<br><br>\nAllowed special characters are "/" and "-"<br>\nExamples:<br>\nINV-<br>\nINV-10-<br>\nINVK-<br>\n</div>'
 	},
 
 	# DocField
@@ -131,7 +131,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'set_options',
 		'fieldtype': u'Text',
-		'label': u'Set Series'
+		'label': u'Series List for this Transaction'
 	},
 
 	# DocField
@@ -146,16 +146,17 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'update',
 		'fieldtype': u'Button',
-		'label': u'Update',
-		'options': u'update_series'
+		'label': u'Update'
 	},
 
 	# DocField
 	{
-		'description': u'Set starting number for series of your transactions',
+		'colour': u'White:FFF',
+		'description': u'Change the starting / current sequence number of an existing series.',
 		'doctype': u'DocField',
 		'fieldname': u'update_series',
 		'fieldtype': u'Section Break',
@@ -166,24 +167,27 @@
 	{
 		'doctype': u'DocField',
 		'fieldname': u'prefix',
-		'fieldtype': u'Data',
+		'fieldtype': u'Select',
 		'label': u'Prefix'
 	},
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'This is the number of the last created transaction with this prefix',
 		'doctype': u'DocField',
-		'fieldname': u'starts_from',
+		'fieldname': u'current_value',
 		'fieldtype': u'Int',
-		'label': u'Starts From'
+		'label': u'Current Value'
 	},
 
 	# DocField
 	{
+		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'update_series_start',
 		'fieldtype': u'Button',
-		'label': u'Update Series Start',
+		'label': u'Update Series Number',
 		'options': u'update_series_start'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/naming_series_options/__init__.py b/erpnext/setup/doctype/naming_series_options/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/naming_series_options/__init__.py
+++ b/erpnext/setup/doctype/naming_series_options/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/notification_control/__init__.py b/erpnext/setup/doctype/notification_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/notification_control/__init__.py
+++ b/erpnext/setup/doctype/notification_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/notification_control/notification_control.py b/erpnext/setup/doctype/notification_control/notification_control.py
index 8602fe2..f8b0ee2 100644
--- a/erpnext/setup/doctype/notification_control/notification_control.py
+++ b/erpnext/setup/doctype/notification_control/notification_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import validate_email_add, cint, cstr
diff --git a/erpnext/setup/doctype/notification_control/notification_control.txt b/erpnext/setup/doctype/notification_control/notification_control.txt
index 000902e..15c8eb2 100644
--- a/erpnext/setup/doctype/notification_control/notification_control.txt
+++ b/erpnext/setup/doctype/notification_control/notification_control.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-03 16:16:21',
+		'creation': '2012-07-03 13:30:56',
 		'docstatus': 0,
-		'modified': '2012-05-03 16:23:29',
+		'modified': '2012-07-12 16:20:36',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -16,6 +16,7 @@
 		'allow_email': 1,
 		'allow_print': 1,
 		'colour': u'White:FFF',
+		'description': u'Send automatic emails to Contacts on Submitting transactions.',
 		'doctype': 'DocType',
 		'issingle': 1,
 		'module': u'Setup',
@@ -70,10 +71,12 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'When any of the checked transactions are "Submitted", an email is automatically sent to the associated "Contact" in that transaction, with the transaction as an attachment.',
 		'doctype': u'DocField',
 		'fieldname': u'send_autonotification_for',
 		'fieldtype': u'Section Break',
-		'label': u'Send Auto-notification for'
+		'label': u'Send Email Automatically on Submission of'
 	},
 
 	# DocField
@@ -152,6 +155,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'Customize the introductory text that goes as a part of that email. Each transaction has a separate introductory text.',
 		'doctype': u'DocField',
 		'fieldname': u'customize_the_notification',
 		'fieldtype': u'Section Break',
diff --git a/erpnext/setup/doctype/period/__init__.py b/erpnext/setup/doctype/period/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/period/__init__.py
+++ b/erpnext/setup/doctype/period/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/period_control/__init__.py b/erpnext/setup/doctype/period_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/period_control/__init__.py
+++ b/erpnext/setup/doctype/period_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/period_control/period_control.py b/erpnext/setup/doctype/period_control/period_control.py
index cb6c2fd..727664e 100644
--- a/erpnext/setup/doctype/period_control/period_control.py
+++ b/erpnext/setup/doctype/period_control/period_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/permission_control/__init__.py b/erpnext/setup/doctype/permission_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/permission_control/__init__.py
+++ b/erpnext/setup/doctype/permission_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/permission_control/permission_control.py b/erpnext/setup/doctype/permission_control/permission_control.py
index 9d6f428..988c954 100644
--- a/erpnext/setup/doctype/permission_control/permission_control.py
+++ b/erpnext/setup/doctype/permission_control/permission_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/price_list/__init__.py b/erpnext/setup/doctype/price_list/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/price_list/__init__.py
+++ b/erpnext/setup/doctype/price_list/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/price_list/price_list.js b/erpnext/setup/doctype/price_list/price_list.js
index a222a65..11993f8 100644
--- a/erpnext/setup/doctype/price_list/price_list.js
+++ b/erpnext/setup/doctype/price_list/price_list.js
@@ -14,24 +14,34 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-
-//--------- ONLOAD -------------
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-}
-
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
 	if(doc.__islocal) {
-		set_field_options('price_help', ''); return;
+		cur_frm.set_intro("Save this list to begin.");
+		return;
 	}
 	if(!doc.file_list) {
-		set_field_options('price_help', '<div class="help_box">To upload a price list, please attach a (.csv) file with 3 columns - <b>Item Code, Price and Currency</b> (no headings necessary). See attachments box in the right column</div>')
-	} else {
-		set_field_options('price_help', '<div class="help_box">To update prices from the attachment, please click on "Update Prices"</div>')
-	}
-}
+		cur_frm.set_intro('<p>1. Click on "Download Template" \
+			to download the template of all Items.</p>'
+		+'<p>2. Update prices and Currency.</p>'
+		+'<p>3. Save it as a CSV (.csv) file.</p>'
+		+'<p>4. Upload the file.</p>');
+		
+		cur_frm.add_custom_button('Download Template', function() {
+			$c_obj_csv(cur_frm.get_doclist(), 'download_template');
+		}, 'icon-download')
+		
+		cur_frm.add_custom_button('Upload Price List', function() {
+			cur_frm.attachments.add_attachment();
+		}, 'icon-upload')
+		
 
-cur_frm.cscript.clear_prices = function(doc, cdt, cdn) {
-	if(confirm("This action will clear all rates for '"+ doc.name +"' from the Item Master and cannot be un-done. Are you sure you want to continue?")) {
-		$c_obj(make_doclist(doc.doctype, doc.name), 'clear_prices', '', function(r, rt) { });
+	} else {
+		cur_frm.set_intro('To update prices from the attachment, click on "Update Prices". \
+			To reset prices, delete the attachment (in the sidebar) and upload again.');
+		
+		// Update Prices
+		cur_frm.add_custom_button('Update Prices', function() {
+			cur_frm.call_server('update_prices');
+		}, 'icon-refresh')		
 	}
 }
diff --git a/erpnext/setup/doctype/price_list/price_list.py b/erpnext/setup/doctype/price_list/price_list.py
index be59c65..02f6b89 100644
--- a/erpnext/setup/doctype/price_list/price_list.py
+++ b/erpnext/setup/doctype/price_list/price_list.py
@@ -14,23 +14,11 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
+from webnotes.model.doc import Document
+from webnotes import msgprint
 
 
 class DocType:
@@ -43,29 +31,43 @@
 		if currency in self.cl:
 			return 1
 			
-		if sql("select name from tabCurrency where name=%s", currency):
+		if webnotes.conn.sql("select name from tabCurrency where name=%s", currency):
 			self.cl.append(currency)
 			return 1
 		else:
 			return 0
+			
+	def download_template(self, arg=None):
+		"""download 3 column template with all Items"""
+		default_currency = webnotes.conn.get_default('currency')
+		item_list = webnotes.conn.sql("""select name from tabItem where 
+			(ifnull(is_sales_item,'')='Yes' or ifnull(is_service_item,'')='Yes')""")
+		data = [self.get_price(i[0], default_currency) for i in item_list]
+		return [['Item', 'Rate', 'Currency']] + data
+	
+	def get_price(self, item, default_currency):
+		rate = webnotes.conn.sql("""select ref_rate, ref_currency from `tabItem Price` 
+			where parent=%s and price_list_name=%s""", (item, self.doc.name))
+		return [item, rate and rate[0][0] or 0, rate and rate[0][1] or default_currency]
 	
 	# update prices in Price List
 	def update_prices(self):
-		import csv 
-		data = csv.reader(self.get_csv_data().splitlines())
+		from core.page.data_import_tool.data_import_tool import read_csv_content
+		
+		data = read_csv_content(self.get_csv_data())
 				
 		updated = 0
 		
 		for line in data:
-			if line and len(line)==3:
+			if line and len(line)==3 and line[0]!='Item':
 				# if item exists
-				if sql("select name from tabItem where name=%s", line[0]):
+				if webnotes.conn.sql("select name from tabItem where name=%s", line[0]):
 					if self.is_currency_valid(line[2]):
 						# if price exists
-						ref_ret_detail = sql("select name from `tabItem Price` where parent=%s and price_list_name=%s and ref_currency=%s", \
+						ref_ret_detail = webnotes.conn.sql("select name from `tabItem Price` where parent=%s and price_list_name=%s and ref_currency=%s", \
 							(line[0], self.doc.name, line[2]))
 						if ref_ret_detail:
-							sql("update `tabItem Price` set ref_rate=%s where name=%s", (line[1], ref_ret_detail[0][0]))
+							webnotes.conn.sql("update `tabItem Price` set ref_rate=%s where name=%s", (line[1], ref_ret_detail[0][0]))
 						else:
 							d = Document('Item Price')
 							d.parent = line[0]
@@ -80,17 +82,9 @@
 						msgprint("[Ignored] Unknown currency '%s' for Item '%s'" % (line[2], line[0]))
 				else:
 					msgprint("[Ignored] Did not find Item '%s'" % line[1])
-			else:
-				msgprint("[Ignored] Incorrect format: %s" % str(line))
 		
 		msgprint("<b>%s</b> items updated" % updated)
 
-	# clear prices
-	def clear_prices(self):
-		cnt = sql("select count(*) from `tabItem Price` where price_list_name = %s", self.doc.name)
-		sql("delete from `tabItem Price` where price_list_name = %s", self.doc.name)
-		msgprint("%s prices cleared" % cnt[0][0])
-
 	# Update CSV data
 	def get_csv_data(self):
 		if not self.doc.file_list:
@@ -99,11 +93,11 @@
 
 		fid = self.doc.file_list.split(',')[1]
 		  
-		from webnotes.utils import file_manager
-		fn, content = file_manager.get_file(fid)
-	
-		# NOTE: Don't know why this condition exists
-		if not isinstance(content, basestring) and hasattr(content, 'tostring'):
-		  content = content.tostring()
+		try:
+			from webnotes.utils import file_manager
+			fn, content = file_manager.get_file(fid)
+		except Exception, e:
+			webnotes.msgprint("Unable to open attached file. Please try again.")
+			raise e
 
 		return content	
diff --git a/erpnext/setup/doctype/price_list/price_list.txt b/erpnext/setup/doctype/price_list/price_list.txt
index 2881cd7..79a7644 100644
--- a/erpnext/setup/doctype/price_list/price_list.txt
+++ b/erpnext/setup/doctype/price_list/price_list.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-15 12:15:02',
+		'creation': '2012-07-03 13:30:55',
 		'docstatus': 0,
-		'modified': '2012-06-22 10:51:23',
+		'modified': '2012-07-11 17:35:10',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -14,9 +14,13 @@
 	{
 		'_last_update': u'1303100817',
 		'allow_attach': 1,
+		'allow_copy': 1,
+		'allow_email': 1,
+		'allow_print': 1,
 		'allow_trash': 1,
 		'autoname': u'field:price_list_name',
 		'colour': u'White:FFF',
+		'description': u'Maintain multiple selling rates for the same **Item** using **Price Lists**. You can upload / edit multiple prices by downloading and uploading the template.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'max_attachments': 1,
@@ -34,7 +38,8 @@
 		'name': '__common__',
 		'parent': u'Price List',
 		'parentfield': u'fields',
-		'parenttype': u'DocType'
+		'parenttype': u'DocType',
+		'permlevel': 0
 	},
 
 	# These values are common for all DocPerm
@@ -108,71 +113,20 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'trash_reason',
-		'fieldtype': u'Small Text',
-		'label': u'Trash Reason',
-		'oldfieldname': u'trash_reason',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'price_list_name',
 		'fieldtype': u'Data',
 		'label': u'Price List Name',
 		'oldfieldname': u'price_list_name',
 		'oldfieldtype': u'Data',
-		'permlevel': 0,
 		'reqd': 1
 	},
 
 	# DocField
 	{
-		'colour': u'White:FFF',
-		'depends_on': u'eval:!doc.__islocal',
-		'doctype': u'DocField',
-		'fieldname': u'price_help',
-		'fieldtype': u'HTML',
-		'label': u'Price Help',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'depends_on': u'eval:!doc.__islocal',
-		'description': u'Click on this button to clear prices for this list in all items',
-		'doctype': u'DocField',
-		'fieldname': u'clear_prices',
-		'fieldtype': u'Button',
-		'label': u'Clear Prices',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
 		'doctype': u'DocField',
 		'fieldname': u'file_list',
 		'fieldtype': u'Text',
 		'hidden': 1,
-		'label': u'File List',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'depends_on': u'eval:!doc.__islocal',
-		'description': u'Update prices from the attachment',
-		'doctype': u'DocField',
-		'fieldname': u'update_prices',
-		'fieldtype': u'Button',
-		'label': u'Update Prices',
-		'options': u'update_prices',
-		'permlevel': 0,
-		'trigger': u'Server'
+		'label': u'File List'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/print_heading/__init__.py b/erpnext/setup/doctype/print_heading/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/print_heading/__init__.py
+++ b/erpnext/setup/doctype/print_heading/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/print_heading/print_heading.py b/erpnext/setup/doctype/print_heading/print_heading.py
index b147bc8..04ee345 100644
--- a/erpnext/setup/doctype/print_heading/print_heading.py
+++ b/erpnext/setup/doctype/print_heading/print_heading.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/quotation_lost_reason/__init__.py b/erpnext/setup/doctype/quotation_lost_reason/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/quotation_lost_reason/__init__.py
+++ b/erpnext/setup/doctype/quotation_lost_reason/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/sales_browser_control/__init__.py b/erpnext/setup/doctype/sales_browser_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/sales_browser_control/__init__.py
+++ b/erpnext/setup/doctype/sales_browser_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/sales_browser_control/sales_browser_control.py b/erpnext/setup/doctype/sales_browser_control/sales_browser_control.py
index 74d6051..76ae1ba 100644
--- a/erpnext/setup/doctype/sales_browser_control/sales_browser_control.py
+++ b/erpnext/setup/doctype/sales_browser_control/sales_browser_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/sales_partner/__init__.py b/erpnext/setup/doctype/sales_partner/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/sales_partner/__init__.py
+++ b/erpnext/setup/doctype/sales_partner/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.js b/erpnext/setup/doctype/sales_partner/sales_partner.js
index 92c9966..4f2aba2 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.js
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.js
@@ -95,55 +95,7 @@
 
 }
 
-// ******************** ITEM Group ******************************** 
 cur_frm.fields_dict['partner_target_details'].grid.get_field("item_group").get_query = function(doc, dt, dn) {
   return 'SELECT `tabItem Group`.`name`,`tabItem Group`.`parent_item_group` FROM `tabItem Group` WHERE `tabItem Group`.is_group="No" AND `tabItem Group`.docstatus != 2 AND `tabItem Group`.%(key)s LIKE "%s" LIMIT 50'
 }
 
-// make sales order list
-cur_frm.cscript.make_so_list = function(parent, doc){
-	var lst = new Listing();
-	lst.colwidths = ['5%','20%','20%','15%','20%','20%'];
-	lst.colnames = ['Sr.','Id','Status','SO Date','Total Commission','Grand Total'];
-	lst.coltypes = ['Data','Link','Data','Data','Currency','Currency'];
-	lst.coloptions = ['','Sales Order','','','','',''];
-
-	cur_frm.cscript.set_list_opts(lst);
-	
-	var q = repl("select name,status,transaction_date, total_commission,grand_total from `tabSales Order` where sales_partner='%(sp)s'", {'sp':doc.name});
-	var q_max = repl("select count(name) from `tabSales Order` where sales_partner='%(cust)s'", {'sp':doc.name});
-	
-	cur_frm.cscript.run_list(lst,parent,q,q_max,doc,'Sales Order','Sales Order');
-}
-
-// make delivery note list
-cur_frm.cscript.make_dn_list = function(parent,doc){
-	var lst = new Listing();
-	lst.colwidths = ['5%','20%','20%','15%','20%','20%'];
-	lst.colnames = ['Sr.','Id','Status','Date','Total Commission','Grand Total'];
-	lst.coltypes = ['Data','Link','Data','Data','Currency','Currency'];
-	lst.coloptions = ['','Delivery Note','','','','',''];
-
-	cur_frm.cscript.set_list_opts(lst);
-
-	var q = repl("select name,status,transaction_date, total_commission,grand_total from `tabDelivery Note` where sales_partner='%(sp)s'", {'sp':doc.name});
-	var q_max = repl("select count(name) from `tabDelivery Note` where sales_partner='%(cust)s'", {'sp':doc.name});
-	
-	cur_frm.cscript.run_list(lst,parent,q,q_max,doc,'Delivery Note','Delivery Note');	
-}
-
-// make sales invoice list
-cur_frm.cscript.make_si_list = function(parent,doc){
-	var lst = new Listing();
-	lst.colwidths = ['5%','25%','20%','25%','25%'];
-	lst.colnames = ['Sr.','Id','Invoice Date','Total Commission','Grand Total'];
-	lst.coltypes = ['Data','Link','Data','Data','Currency','Currency'];
-	lst.coloptions = ['','Sales Invoice','','','',''];
-
-	cur_frm.cscript.set_list_opts(lst);
-
-	var q = repl("select name,posting_date, total_commission,grand_total from `tabSales Invoice` where sales_partner='%(sp)s'", {'sp':doc.name});
-	var q_max = repl("select count(name) from `tabSales Invoice` where sales_partner='%(cust)s'", {'sp':doc.name});
-	
-	cur_frm.cscript.run_list(lst,parent,q,q_max,doc,'Sales Invoice','Sales Invoice');	
-}
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.py b/erpnext/setup/doctype/sales_partner/sales_partner.py
index cd787df..b9bf561 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.py
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.txt b/erpnext/setup/doctype/sales_partner/sales_partner.txt
index 0aa2de7..4e79261 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.txt
+++ b/erpnext/setup/doctype/sales_partner/sales_partner.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:23',
+		'creation': '2012-07-03 13:30:54',
 		'docstatus': 0,
-		'modified': '2012-03-27 18:49:33',
+		'modified': '2012-07-12 11:22:15',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,6 +17,7 @@
 		'autoname': u'field:partner_name',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'A **Sales Partner** is a third party distributor / dealer / commission agent / affiliate / reseller who sells the companies products for a commission. This is useful if you make the end sale to the **Customer**, involving your **Sales Partner**.\n\nIf you sell to your **Sales Partner** who in-turn sells it to the **Customer**, then you must make a **Customer** instead.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'in_create': 0,
@@ -26,7 +27,7 @@
 		'section_style': u'Tabbed',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 74
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -57,49 +58,6 @@
 	# DocPerm
 	{
 		'amend': 0,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales Master Manager',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales Master Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'System Manager',
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'System Manager',
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
 		'cancel': 0,
 		'create': 0,
 		'doctype': u'DocPerm',
@@ -145,6 +103,49 @@
 		'write': 0
 	},
 
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales Master Manager',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales Master Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'System Manager',
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'System Manager',
+		'write': 0
+	},
+
 	# DocField
 	{
 		'colour': u'White:FFF',
@@ -152,7 +153,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'basic_info',
 		'fieldtype': u'Section Break',
-		'label': u'Basic Info',
+		'label': u'Sales Partner Details',
 		'oldfieldtype': u'Section Break',
 		'permlevel': 0
 	},
@@ -282,7 +283,7 @@
 		'doctype': u'DocField',
 		'fieldname': u'partner_target_details_section_break',
 		'fieldtype': u'Section Break',
-		'label': u'Partner Target Details',
+		'label': u'Sales Partner Target',
 		'oldfieldtype': u'Section Break',
 		'permlevel': 0
 	},
@@ -290,18 +291,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'distribution_id',
-		'fieldtype': u'Link',
-		'label': u'Distribution Id',
-		'oldfieldname': u'distribution_id',
-		'oldfieldtype': u'Link',
-		'options': u'Budget Distribution',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'partner_target_details',
 		'fieldtype': u'Table',
 		'label': u'Partner Target Detail',
@@ -314,35 +303,15 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'manage_html',
-		'fieldtype': u'HTML',
-		'hidden': 1,
-		'label': u'Manage HTML',
-		'oldfieldtype': u'HTML',
-		'permlevel': 0,
-		'print_hide': 1
-	},
-
-	# DocField
-	{
 		'colour': u'White:FFF',
-		'depends_on': u'eval:!doc.__islocal',
+		'description': u'Select Budget Distribution to unevenly distribute targets across months.',
 		'doctype': u'DocField',
-		'fieldname': u'transaction_history',
-		'fieldtype': u'Section Break',
-		'label': u'Transaction History',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'history_html',
-		'fieldtype': u'HTML',
-		'label': u'History HTML',
-		'oldfieldtype': u'HTML',
+		'fieldname': u'distribution_id',
+		'fieldtype': u'Link',
+		'label': u'Target Distribution',
+		'oldfieldname': u'distribution_id',
+		'oldfieldtype': u'Link',
+		'options': u'Budget Distribution',
 		'permlevel': 0
 	},
 
diff --git a/erpnext/setup/doctype/sales_person/__init__.py b/erpnext/setup/doctype/sales_person/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/sales_person/__init__.py
+++ b/erpnext/setup/doctype/sales_person/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/sales_person/sales_person.js b/erpnext/setup/doctype/sales_person/sales_person.js
index 453d88a..a1cac8a 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.js
+++ b/erpnext/setup/doctype/sales_person/sales_person.js
@@ -14,30 +14,19 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+cur_frm.cscript.set_breadcrumbs = function(barea) {
+	cur_frm.frm_head.appframe.add_breadcrumb(cur_frm.docname);
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!Sales Browser/Sales Person">\
+		Sales Person Tree</a>');
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!selling-home">Selling</a>');
+}
 
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
 }
 
 cur_frm.cscript.onload = function(){
-  if(doc.__islocal){
-    doc.parent_sales_person = 'Root';
-    refresh('parent_sales_person');
-  }
-}
-cur_frm.cscript.country = function(doc, cdt, cdn) {
-  var mydoc=doc;
-  $c('runserverobj', args={'method':'check_state', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
-    function(r,rt){
-      if(r.message) {
-        var doc = locals[mydoc.doctype][mydoc.name];
-        doc.state = '';
-        get_field(doc.doctype, 'state' , doc.name).options = r.message;
-        refresh_field('state');
-      }
-    }  
-  );
-}
 
+}
 
 //get query select sales person
 cur_frm.fields_dict['parent_sales_person'].get_query = function(doc,cdt,cdn) {
diff --git a/erpnext/setup/doctype/sales_person/sales_person.py b/erpnext/setup/doctype/sales_person/sales_person.py
index d8c6e43..0e0bd93 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.py
+++ b/erpnext/setup/doctype/sales_person/sales_person.py
@@ -15,81 +15,22 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
-from webnotes.model.doc import Document
 from webnotes.model.doclist import getlist
-from webnotes.model.code import get_obj
-from webnotes import session, form, is_testing, msgprint, errprint
-from webnotes.utils import flt, cstr
+from webnotes.utils import flt
 
-sql = webnotes.conn.sql
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
+from webnotes.utils.nestedset import DocTypeNestedSet
 
-class DocType:
+class DocType(DocTypeNestedSet):
 	def __init__(self, doc, doclist=[]):
 		self.doc = doc
 		self.doclist = doclist
 		self.nsm_parent_field = 'parent_sales_person';
-	
-	def check_state(self):
-		return "\n" + "\n".join([i[0] for i in sql("select state_name from `tabState` where `tabState`.country='%s' " % self.doc.country)])
-
-
-	# update Node Set Model
-	def update_nsm_model(self):
-		import webnotes
-		import webnotes.utils.nestedset
-		webnotes.utils.nestedset.update_nsm(self)
-
-	# ON UPDATE
-	#--------------------------------------
-	def on_update(self):
-		# update nsm
-		self.update_nsm_model()	 
-
 
 	def validate(self): 
 		for d in getlist(self.doclist, 'target_details'):
 			if not flt(d.target_qty) and not flt(d.target_amount):
-				msgprint("Either target qty or target amount is mandatory.")
+				webnotes.msgprint("Either target qty or target amount is mandatory.")
 				raise Exception
-				
-		#self.sync_with_contact()
-		
-	def sync_with_contact(self):
-		cid = sql("select name from tabContact where sales_person_id = %s and is_sales_person=1", self.doc.name)
-		if cid:
-			d = Document('Contact', cid[0][0])
-		else:
-			d = Document('Contact')
-		
-		name_split = self.doc.sales_person_name.split()
-		d.contact_name = self.doc.sales_person_name
-		d.first_name = name_split[0]
-		d.last_name = len(name_split) > 1 and name_split[1] or ''
-		d.email_id = self.doc.email_id
-		d.contact_no = d.mobile_no = self.doc.mobile_no
-		d.designation = self.doc.designation
-		d.department = self.doc.department
-		d.sales_person_id = self.doc.name
-		d.is_sales_person = 1
-		
-		d.save(new = (not d.name))
-		
-
-	def on_trash(self):
-		st = sql("select parent, parenttype from `tabSales Team` where ifnull(sales_person, '') = %s and docstatus != 2", self.doc.name)
-		st = [(d[1] + ' : ' + d[0]) for d in st]
-		if st:
-			msgprint("""Sales Person: %s can not be trashed/deleted because it is used in  %s. 
-				To trash/delete this, remove/change sales person in %s""" % (self.doc.name, st or '', st or ''), raise_exception=1)
-
-		if sql("select name from `tabSales Person` where parent_sales_person = %s and docstatus != 2", self.doc.name):
-			msgprint("Child sales person exists for this sales person. You can not trash/cancel this sales person.", raise_exception=1)
-
-		# rebuild tree
-		webnotes.conn.set(self.doc,'old_parent', '')
-		self.update_nsm_model()
diff --git a/erpnext/setup/doctype/sales_person/sales_person.txt b/erpnext/setup/doctype/sales_person/sales_person.txt
index 5ff8e94..028d828 100644
--- a/erpnext/setup/doctype/sales_person/sales_person.txt
+++ b/erpnext/setup/doctype/sales_person/sales_person.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-13 11:56:32',
+		'creation': '2012-07-03 13:30:54',
 		'docstatus': 0,
-		'modified': '2012-05-31 11:28:32',
+		'modified': '2012-07-12 10:33:10',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -16,6 +16,7 @@
 		'allow_trash': 1,
 		'autoname': u'field:sales_person_name',
 		'colour': u'White:FFF',
+		'description': u'All Sales Transactions can be tagged against multiple **Sales Persons** so that you can set and monitor targets.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'in_create': 1,
@@ -129,17 +130,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'general_info',
-		'fieldtype': u'Section Break',
-		'label': u'General Info',
-		'oldfieldtype': u'Section Break',
-		'options': u'Simple',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'sales_person_name',
 		'fieldtype': u'Data',
 		'in_filter': 1,
@@ -170,17 +160,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'sphelp',
-		'fieldtype': u'HTML',
-		'label': u'SPHelp',
-		'oldfieldtype': u'HTML',
-		'options': u'<a href="#!Sales Browser/Sales Person">To manage Sales Person, click here</a>',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'is_group',
 		'fieldtype': u'Select',
 		'label': u'Has Child Node',
@@ -194,6 +173,14 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'cb0',
+		'fieldtype': u'Column Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'employee',
 		'fieldtype': u'Link',
 		'label': u'Employee',
@@ -204,125 +191,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'department',
-		'fieldtype': u'Data',
-		'label': u'Department',
-		'oldfieldname': u'department',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'designation',
-		'fieldtype': u'Data',
-		'label': u'Designation',
-		'oldfieldname': u'designation',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'mobile_no',
-		'fieldtype': u'Data',
-		'label': u'Mobile No',
-		'oldfieldname': u'mobile_no',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break0',
-		'fieldtype': u'Column Break',
-		'oldfieldtype': u'Column Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'email_id',
-		'fieldtype': u'Data',
-		'label': u'Email Id',
-		'oldfieldname': u'email_id',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'country',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'Country',
-		'oldfieldname': u'country',
-		'oldfieldtype': u'Select',
-		'options': u'link:Country',
-		'permlevel': 0,
-		'search_index': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'state',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'State',
-		'oldfieldname': u'state',
-		'oldfieldtype': u'Select',
-		'options': u'link:State',
-		'permlevel': 0,
-		'search_index': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'city',
-		'fieldtype': u'Data',
-		'label': u'City',
-		'oldfieldname': u'city',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'territory',
-		'fieldtype': u'Link',
-		'hidden': 0,
-		'label': u'Territory',
-		'oldfieldname': u'territory',
-		'oldfieldtype': u'Link',
-		'options': u'Territory',
-		'permlevel': 0,
-		'search_index': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'territory_help',
-		'fieldtype': u'HTML',
-		'label': u'Territory Help',
-		'oldfieldtype': u'HTML',
-		'options': u'<a href="#!Sales Browser/Territory">To manage Territories, click here</a>',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'lft',
 		'fieldtype': u'Int',
 		'hidden': 1,
@@ -368,25 +236,13 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'distribution_id',
-		'fieldtype': u'Link',
-		'label': u'Distribution Id',
-		'oldfieldname': u'distribution_id',
-		'oldfieldtype': u'Link',
-		'options': u'Budget Distribution',
-		'permlevel': 0,
-		'search_index': 0
-	},
-
-	# DocField
-	{
+		'colour': u'White:FFF',
+		'description': u'Set targets Item Group-wise for this Sales Person.',
 		'doctype': u'DocField',
 		'fieldname': u'target_details_section_break',
 		'fieldtype': u'Section Break',
-		'label': u'Target Details',
+		'label': u'Sales Person Targets',
 		'oldfieldtype': u'Section Break',
-		'options': u'Simple',
 		'permlevel': 0
 	},
 
@@ -400,5 +256,20 @@
 		'oldfieldtype': u'Table',
 		'options': u'Target Detail',
 		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'Select Budget Distribution to unevenly distribute targets across months.',
+		'doctype': u'DocField',
+		'fieldname': u'distribution_id',
+		'fieldtype': u'Link',
+		'label': u'Target Distribution',
+		'oldfieldname': u'distribution_id',
+		'oldfieldtype': u'Link',
+		'options': u'Budget Distribution',
+		'permlevel': 0,
+		'search_index': 0
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/series_detail/__init__.py b/erpnext/setup/doctype/series_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/series_detail/__init__.py
+++ b/erpnext/setup/doctype/series_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/setup_control/__init__.py b/erpnext/setup/doctype/setup_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/setup_control/__init__.py
+++ b/erpnext/setup/doctype/setup_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/setup_control/setup_control.py b/erpnext/setup/doctype/setup_control/setup_control.py
index 444b796..1eca582 100644
--- a/erpnext/setup/doctype/setup_control/setup_control.py
+++ b/erpnext/setup/doctype/setup_control/setup_control.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import cint, cstr, flt, getdate, now, nowdate
@@ -49,9 +50,7 @@
 		master_dict = {'Fiscal Year':{
 			'year': curr_fiscal_year,
 			'year_start_date': fy_start_date,
-			'abbreviation': fy_abbr,
-			'company': args.get('company_name'),
-			'is_fiscal_year_closed': 'No'}}
+			'company': args.get('company_name')}}
 		self.create_records(master_dict)
 		
 		# Company
diff --git a/erpnext/setup/doctype/sms_parameter/__init__.py b/erpnext/setup/doctype/sms_parameter/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/setup/doctype/sms_parameter/__init__.py
+++ b/erpnext/setup/doctype/sms_parameter/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/sms_settings/__init__.py b/erpnext/setup/doctype/sms_settings/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/setup/doctype/sms_settings/__init__.py
+++ b/erpnext/setup/doctype/sms_settings/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/state/__init__.py b/erpnext/setup/doctype/state/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/state/__init__.py
+++ b/erpnext/setup/doctype/state/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/supplier_type/__init__.py b/erpnext/setup/doctype/supplier_type/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/supplier_type/__init__.py
+++ b/erpnext/setup/doctype/supplier_type/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/supplier_type/supplier_type.js b/erpnext/setup/doctype/supplier_type/supplier_type.js
index 306ead0..945dec0 100644
--- a/erpnext/setup/doctype/supplier_type/supplier_type.js
+++ b/erpnext/setup/doctype/supplier_type/supplier_type.js
@@ -14,14 +14,6 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
- 
-
-// ONLOAD
-// ===================================================================================
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-   
-}
-
-cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-   
+cur_frm.cscript.refresh = function(doc) {
+	cur_frm.set_intro(doc.__islocal ? "" : "There is nothing to edit.")
 }
\ No newline at end of file
diff --git a/erpnext/setup/doctype/target_detail/__init__.py b/erpnext/setup/doctype/target_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/target_detail/__init__.py
+++ b/erpnext/setup/doctype/target_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/terms_and_conditions/__init__.py b/erpnext/setup/doctype/terms_and_conditions/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/terms_and_conditions/__init__.py
+++ b/erpnext/setup/doctype/terms_and_conditions/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.txt b/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.txt
index 09d71f4..c120b2c 100644
--- a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.txt
+++ b/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:25',
+		'creation': '2012-07-03 13:30:54',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:25',
+		'modified': '2012-07-12 11:37:56',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,6 +17,7 @@
 		'autoname': u'field:title',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'Standard Terms and Conditions that can be added to Sales and Purchases.\n\nExamples:\n\n1. Validity of the offer.\n1. Payment Terms (In Advance, On Credit, part advance etc).\n1. What is extra (or payable by the Customer).\n1. Safety / usage warning.\n1. Warranty if any.\n1. Returns Policy.\n1. Terms of shipping, if applicable.\n1. Ways of addressing disputes, indemnity, liability, etc.\n1. Address and Contact of your Company.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'module': u'Setup',
@@ -24,7 +25,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 11
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -58,6 +59,42 @@
 		'cancel': 0,
 		'create': 0,
 		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales Master Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales Master Manager',
+		'submit': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
 		'permlevel': 0,
 		'role': u'Sales User',
 		'submit': 0,
@@ -91,42 +128,6 @@
 		'write': 1
 	},
 
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales Master Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales Master Manager',
-		'submit': 0,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Sales User',
-		'submit': 0,
-		'write': 0
-	},
-
 	# DocField
 	{
 		'doctype': u'DocField',
diff --git a/erpnext/setup/doctype/territory/__init__.py b/erpnext/setup/doctype/territory/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/territory/__init__.py
+++ b/erpnext/setup/doctype/territory/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/territory/territory.js b/erpnext/setup/doctype/territory/territory.js
index 46312c4..9b36d0c 100644
--- a/erpnext/setup/doctype/territory/territory.js
+++ b/erpnext/setup/doctype/territory/territory.js
@@ -15,17 +15,19 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
  
+cur_frm.cscript.set_breadcrumbs = function(barea) {
+	cur_frm.frm_head.appframe.add_breadcrumb(cur_frm.docname);
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!Sales Browser/Territory">\
+		Territory Tree</a>');
+	cur_frm.frm_head.appframe.add_breadcrumb(' in <a href="#!selling-home">Selling</a>');
+}
 
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
    
 }
 
 cur_frm.cscript.onload = function(){
-   
-  if(doc.__islocal){
-    doc.parent_territory = 'All Territories';
-    refresh('parent_territory');
-  }
+
 }
 
 
diff --git a/erpnext/setup/doctype/territory/territory.py b/erpnext/setup/doctype/territory/territory.py
index 606efa8..ebc25ea 100644
--- a/erpnext/setup/doctype/territory/territory.py
+++ b/erpnext/setup/doctype/territory/territory.py
@@ -8,87 +8,29 @@
 # 
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 # GNU General Public License for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes.model.doclist import getlist
+from webnotes.utils import flt
 
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
+from webnotes.utils.nestedset import DocTypeNestedSet
 	
-# -----------------------------------------------------------------------------------------
+class DocType(DocTypeNestedSet):
+	def __init__(self, doc, doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
+		self.nsm_parent_field = 'parent_territory'
 
-
-class DocType:
-  def __init__(self, doc, doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
-    self.nsm_parent_field = 'parent_territory'
-
-  def check_state(self):
-    return "\n" + "\n".join([i[0] for i in sql("select state_name from `tabState` where `tabState`.country='%s' " % self.doc.country)])
-
-       
-
-  # update Node Set Model
-  def update_nsm_model(self):
-    import webnotes
-    import webnotes.utils.nestedset
-    webnotes.utils.nestedset.update_nsm(self)
-
-  # ON UPDATE
-  #--------------------------------------
-  def on_update(self):
-  
-    # update nsm
-    self.update_nsm_model()  
-    
-
-
-  def validate(self): 
-    if self.doc.lft and self.doc.rgt:
-      res = sql("select name from `tabTerritory` where is_group = 'Yes' and docstatus!= 2 and name ='%s' and name !='%s'"%(self.doc.parent_territory,self.doc.territory_name))
-      if not res:
-        msgprint("Please enter proper parent territory.") 
-        raise Exception
-
-    r = sql("select name from `tabTerritory` where name = '%s' and docstatus = 2"%(self.doc.territory_name))
-    if r:
-      msgprint("%s record is trashed. To untrash please go to Setup & click on Trash."%(self.doc.territory_name))
-      raise Exception
-
-    for d in getlist(self.doclist, 'target_details'):
-      if not flt(d.target_qty) and not flt(d.target_amount):
-        msgprint("Either target qty or target amount is mandatory.")
-        raise Exception
-
-
-	def on_trash(self):
-		cust = sql("select name from `tabCustomer` where ifnull(territory, '') = %s", self.doc.name)
-		cust = [d[0] for d in cust]		
-		
-		if cust:
-			msgprint("""Territory: %s can not be trashed/deleted because it is used in customer: %s. 
-				To trash/delete this, remove/change territory in customer master""" % (self.doc.name, cust or ''), raise_exception=1)
-				
-				
-		if sql("select name from `tabTerritory` where parent_territory = %s and docstatus != 2", self.doc.name):
-			msgprint("Child territory exists for this territory. You can not trash/cancel/delete this territory.", raise_exception=1)
-
-		# rebuild tree
-		set(self.doc,'old_parent', '')
-		self.update_nsm_model()
+	def validate(self): 
+		for d in getlist(self.doclist, 'target_details'):
+			if not flt(d.target_qty) and not flt(d.target_amount):
+				msgprint("Either target qty or target amount is mandatory.")
+				raise Exception
diff --git a/erpnext/setup/doctype/territory/territory.txt b/erpnext/setup/doctype/territory/territory.txt
index 3632801..a9cdf05 100644
--- a/erpnext/setup/doctype/territory/territory.txt
+++ b/erpnext/setup/doctype/territory/territory.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-13 11:56:32',
+		'creation': '2012-07-03 13:30:55',
 		'docstatus': 0,
-		'modified': '2012-05-31 11:39:33',
+		'modified': '2012-07-12 10:01:47',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,12 +17,14 @@
 		'autoname': u'field:territory_name',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'You can create **Territories** If your organization operates in multiple regions (could be countries, states or cities). Once you group **Customers** by **Territories**, you can set annual targets for each **Item Group** and get reports that will show your actual performance in the territory v/s what you had planned.',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'in_create': 1,
 		'module': u'Setup',
 		'name': '__common__',
 		'name_case': u'Title Case',
+		'read_only': 1,
 		'search_fields': u'name,parent_territory,territory_manager',
 		'section_style': u'Simple',
 		'server_code_error': u' ',
@@ -144,20 +146,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'territory_manager',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'Territory Manager',
-		'oldfieldname': u'territory_manager',
-		'oldfieldtype': u'Link',
-		'options': u'Sales Person',
-		'permlevel': 0,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'parent_territory',
 		'fieldtype': u'Link',
 		'label': u'Parent Territory',
@@ -171,17 +159,6 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'territoryhelp',
-		'fieldtype': u'HTML',
-		'label': u'TerritoryHelp',
-		'oldfieldtype': u'HTML',
-		'options': u'<a href="#!Sales Browser/Territory">To manage Territories, click here</a>',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
 		'colour': u'White:FFF',
 		'description': u'Only leaf nodes are allowed in transaction',
 		'doctype': u'DocField',
@@ -198,6 +175,30 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'cb0',
+		'fieldtype': u'Column Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'For reference',
+		'doctype': u'DocField',
+		'fieldname': u'territory_manager',
+		'fieldtype': u'Link',
+		'in_filter': 1,
+		'label': u'Territory Manager',
+		'oldfieldname': u'territory_manager',
+		'oldfieldtype': u'Link',
+		'options': u'Sales Person',
+		'permlevel': 0,
+		'search_index': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'lft',
 		'fieldtype': u'Int',
 		'hidden': 1,
@@ -247,22 +248,12 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'distribution_id',
-		'fieldtype': u'Link',
-		'label': u'Distribution Id',
-		'oldfieldname': u'distribution_id',
-		'oldfieldtype': u'Link',
-		'options': u'Budget Distribution',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
+		'colour': u'White:FFF',
+		'description': u'Set Item Group-wise budgets on this Territory. You can also include seasonality by setting the Distribution.',
 		'doctype': u'DocField',
 		'fieldname': u'target_details_section_break',
 		'fieldtype': u'Section Break',
-		'label': u'Target Details',
+		'label': u'Territory Targets',
 		'oldfieldtype': u'Section Break',
 		'permlevel': 0
 	},
@@ -272,10 +263,24 @@
 		'doctype': u'DocField',
 		'fieldname': u'target_details',
 		'fieldtype': u'Table',
-		'label': u'Target Details1',
+		'label': u'Target Details',
 		'oldfieldname': u'target_details',
 		'oldfieldtype': u'Table',
 		'options': u'Target Detail',
 		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'description': u'Select Budget Distribution to unevenly distribute targets across months.',
+		'doctype': u'DocField',
+		'fieldname': u'distribution_id',
+		'fieldtype': u'Link',
+		'label': u'Target Distribution',
+		'oldfieldname': u'distribution_id',
+		'oldfieldtype': u'Link',
+		'options': u'Budget Distribution',
+		'permlevel': 0
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/uom/__init__.py b/erpnext/setup/doctype/uom/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/uom/__init__.py
+++ b/erpnext/setup/doctype/uom/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/warehouse_type/__init__.py b/erpnext/setup/doctype/warehouse_type/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/warehouse_type/__init__.py
+++ b/erpnext/setup/doctype/warehouse_type/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/workflow_action_detail/__init__.py b/erpnext/setup/doctype/workflow_action_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/workflow_action_detail/__init__.py
+++ b/erpnext/setup/doctype/workflow_action_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/workflow_engine/__init__.py b/erpnext/setup/doctype/workflow_engine/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/workflow_engine/__init__.py
+++ b/erpnext/setup/doctype/workflow_engine/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/workflow_engine/workflow_engine.py b/erpnext/setup/doctype/workflow_engine/workflow_engine.py
index ce15416..82152b9 100644
--- a/erpnext/setup/doctype/workflow_engine/workflow_engine.py
+++ b/erpnext/setup/doctype/workflow_engine/workflow_engine.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/workflow_rule/__init__.py b/erpnext/setup/doctype/workflow_rule/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/workflow_rule/__init__.py
+++ b/erpnext/setup/doctype/workflow_rule/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/workflow_rule/workflow_rule.py b/erpnext/setup/doctype/workflow_rule/workflow_rule.py
index c5b198b..ca09f2f 100644
--- a/erpnext/setup/doctype/workflow_rule/workflow_rule.py
+++ b/erpnext/setup/doctype/workflow_rule/workflow_rule.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/setup/doctype/workflow_rule_detail/__init__.py b/erpnext/setup/doctype/workflow_rule_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/doctype/workflow_rule_detail/__init__.py
+++ b/erpnext/setup/doctype/workflow_rule_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/page/__init__.py b/erpnext/setup/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/page/__init__.py
+++ b/erpnext/setup/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/page/modules_setup/__init__.py b/erpnext/setup/page/modules_setup/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/page/modules_setup/__init__.py
+++ b/erpnext/setup/page/modules_setup/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/page/modules_setup/modules_setup.py b/erpnext/setup/page/modules_setup/modules_setup.py
index ee36dfa..3a3504a 100644
--- a/erpnext/setup/page/modules_setup/modules_setup.py
+++ b/erpnext/setup/page/modules_setup/modules_setup.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 
 @webnotes.whitelist()
diff --git a/erpnext/setup/page/permission_engine/__init__.py b/erpnext/setup/page/permission_engine/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/page/permission_engine/__init__.py
+++ b/erpnext/setup/page/permission_engine/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/page/setup/__init__.py b/erpnext/setup/page/setup/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/page/setup/__init__.py
+++ b/erpnext/setup/page/setup/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/setup/page/setup/setup.html b/erpnext/setup/page/setup/setup.html
index 70143a4..1eca285 100644
--- a/erpnext/setup/page/setup/setup.html
+++ b/erpnext/setup/page/setup/setup.html
@@ -19,7 +19,7 @@
 		<div class="setup-column">
 			<h3>Users and Permissions</h3>
 			<p>
-				<b><a href="#!users">Users</a></b><br>
+				<b><a href="#!List/Profile">Users</a></b><br>
 				<span class="help">Add/remove users, set roles, passwords etc</span>
 			</p>
 			<p>
@@ -49,10 +49,6 @@
 				<b><a href="#!Form/Rename Tool/Rename Tool">Rename Master</a></b><br>
 				<span class="help">Rename a single master record</span>
 			</p>
-			<p>
-				<b><a href="#!List/Bulk Rename Tool">Rename Many</a></b><br>
-				<span class="help">Rename by uploading a csv file</span>
-			</p>
 		</div>
 		<div class="setup-column">
 			<h3>Email and Notifications</h3>
diff --git a/erpnext/setup/page/webforms/__init__.py b/erpnext/setup/page/webforms/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/setup/page/webforms/__init__.py
+++ b/erpnext/setup/page/webforms/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/startup/__init__.py b/erpnext/startup/__init__.py
index cd443a0..c763d9c 100644
--- a/erpnext/startup/__init__.py
+++ b/erpnext/startup/__init__.py
@@ -14,6 +14,15 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# default settings that can be made for a profile.
+from __future__ import unicode_literals
+
+product_name = "ERPNext"
+profile_defaults = {
+	"Company": "company",
+	"Territory": "territory"
+}
+	
 # add startup propertes
 mail_footer = """<div style="padding: 7px; text-align: right; color: #888"><small>Sent via 
 	<a style="color: #888" href="https://erpnext.com">ERPNext</a></div>"""
@@ -24,4 +33,4 @@
 	if webnotes.conn.get_value('Email Settings', None, 'outgoing_mail_server'):
 		return 999999
 	else:
-		return 500
\ No newline at end of file
+		return 500
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index 0c5eae1..c5bcb1b 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import cint
 import home
@@ -40,8 +41,9 @@
 	if webnotes.session['user'] not in ('Guest', 'demo@webnotestech.com'):
 		# create feed
 		from webnotes.utils import nowtime
+		from webnotes.profile import get_user_fullname
 		home.make_feed('Login', 'Profile', login_manager.user, login_manager.user,
-			'%s logged in at %s' % (login_manager.user_fullname, nowtime()), 
+			'%s logged in at %s' % (get_user_fullname, nowtime()), 
 			login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D')		
 
 
diff --git a/erpnext/startup/schedule_handlers.py b/erpnext/startup/schedule_handlers.py
index 2df7a57..f3eb05a 100644
--- a/erpnext/startup/schedule_handlers.py
+++ b/erpnext/startup/schedule_handlers.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """will be called by scheduler"""
 
 import webnotes
@@ -27,10 +28,6 @@
 	# pull emails
 	from support.doctype.support_ticket import get_support_mails
 	run_fn(get_support_mails)
-
-	# run recurring invoices
-	from accounts.doctype.gl_control.gl_control import manage_recurring_invoices
-	run_fn(manage_recurring_invoices)
 	
 	# bulk email
 	from webnotes.utils.email_lib.bulk import flush
@@ -41,6 +38,10 @@
 	from setup.doctype.email_digest.email_digest import send
 	run_fn(send)
 
+	# run recurring invoices
+	from accounts.doctype.gl_control.gl_control import manage_recurring_invoices
+	run_fn(manage_recurring_invoices)
+
 	# send bulk emails
 	from webnotes.utils.email_lib.bulk import clear_outbox
 	run_fn(clear_outbox)
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index 6010464..67a7486 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -100,10 +100,6 @@
 		if(wn.control_panel.custom_startup_code)
 			eval(wn.control_panel.custom_startup_code);		
 	}
-
-		
-	$('body').append('<a class="erpnext-logo" title="Powered by ERPNext" \
-		href="http://erpnext.com" target="_blank"></a>')
 }
 
 
diff --git a/erpnext/stock/__init__.py b/erpnext/stock/__init__.py
index f171425..7c2a0d4 100644
--- a/erpnext/stock/__init__.py
+++ b/erpnext/stock/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{"doctype":"Role", "role_name":"Material Manager", "name":"Material Manager"},
 	{"doctype":"Role", "role_name":"Material Master Manager", "name":"Material Master Manager"},
diff --git a/erpnext/stock/doctype/__init__.py b/erpnext/stock/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/__init__.py
+++ b/erpnext/stock/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/batch/__init__.py b/erpnext/stock/doctype/batch/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/batch/__init__.py
+++ b/erpnext/stock/doctype/batch/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/bin/__init__.py b/erpnext/stock/doctype/bin/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/bin/__init__.py
+++ b/erpnext/stock/doctype/bin/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index f2cd873..f48cc50 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/delivery_note/__init__.py b/erpnext/stock/doctype/delivery_note/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/delivery_note/__init__.py
+++ b/erpnext/stock/doctype/delivery_note/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 3231523..06f14d4 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -196,51 +197,6 @@
 		get_obj('DocType Mapper', 'Sales Order-Delivery Note', with_children = 1).validate_reference_value(self, self.doc.name)
 
 
-	def validate_prevdoc_details(self):
-		for d in getlist(self.doclist,'delivery_note_details'):
-			prevdoc = d.prevdoc_doctype
-			prevdoc_docname = d.prevdoc_docname
-
-			if prevdoc_docname and prevdoc:
-				# Validates Transaction Date of DN and previous doc (i.e. SO , PO, PR)
-				trans_date = sql("select posting_date from `tab%s` where name = '%s'" %(prevdoc,prevdoc_docname))[0][0]
-				if trans_date and getdate(self.doc.posting_date) < (trans_date):
-					msgprint("Your Posting Date cannot be before "+cstr(prevdoc)+" Date.")
-					raise Exception
-				# Validates DN and previous doc details
-				get_name = sql("select name from `tab%s` where name = '%s'" % (prevdoc, prevdoc_docname))
-				name = get_name and get_name[0][0] or ''
-				if name:	#check for incorrect docname
-					if prevdoc == 'Sales Order':
-						dt = sql("select company, docstatus, customer, currency, sales_partner from `tab%s` where name = '%s'" % (prevdoc, name))
-						cust_name = dt and dt[0][2] or ''
-						if cust_name != self.doc.customer:
-							msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " customer :" + cstr(cust_name) + " does not match with customer : " + cstr(self.doc.customer) + " of current document.")
-							raise Exception, "Validation Error. "
-						sal_partner = dt and dt[0][4] or ''
-						if sal_partner != self.doc.sales_partner:
-							msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " sales partner name :" + cstr(sal_partner) + " does not match with sales partner name : " + cstr(self.doc.sales_partner_name) + " of current document.")
-							raise Exception, "Validation Error. "
-					else:
-						dt = sql("select company, docstatus, supplier, currency from `tab%s` where name = '%s'" % (prevdoc, name))
-						supp_name = dt and dt[0][2] or ''
-						company_name = dt and dt[0][0] or ''
-						docstatus = dt and dt[0][1] or 0
-						currency = dt and dt[0][3] or ''
-						if (currency != self.doc.currency):
-							msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " currency : "+ cstr(currency) + "does not match with Currency: " + cstr(self.doc.currency) + "of current document")
-							raise Exception, "Validation Error."
-						if (company_name != self.doc.company):
-							msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " does not belong to the Company: " + cstr(self.doc.company_name))
-							raise Exception, "Validation Error."
-						if (docstatus != 1):
-							msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " is not Submitted Document.")
-							raise Exception, "Validation Error."
-				else:
-					msgprint(cstr(prevdoc) + ": " + cstr(prevdoc_docname) + " is not a valid " + cstr(prevdoc))
-					raise Exception, "Validation Error."
-
-
 	def validate_for_items(self):
 		check_list, chk_dupl_itm = [], []
 		for d in getlist(self.doclist,'delivery_note_details'):
@@ -291,11 +247,22 @@
 		set(self.doc, 'message', 'Items against your Order #%s have been delivered. Delivery #%s: ' % (self.doc.po_no, self.doc.name))
 		# Check for Approving Authority
 		get_obj('Authorization Control').validate_approving_authority(self.doc.doctype, self.doc.company, self.doc.grand_total, self)
+		
+		# validate serial no for item table (non-sales-bom item) and packing list (sales-bom item)
 		sl_obj = get_obj("Stock Ledger")
+		sl_obj.validate_serial_no(self, 'delivery_note_details')
+		sl_obj.validate_serial_no_warehouse(self, 'delivery_note_details')
 		sl_obj.validate_serial_no(self, 'packing_details')
 		sl_obj.validate_serial_no_warehouse(self, 'packing_details')
+		
+		# update delivery details in serial no
+		sl_obj.update_serial_record(self, 'delivery_note_details', is_submit = 1, is_incoming = 0)
 		sl_obj.update_serial_record(self, 'packing_details', is_submit = 1, is_incoming = 0)
+		
+		# update delivered qty in sales order
 		get_obj("Sales Common").update_prevdoc_detail(1,self)
+		
+		# create stock ledger entry
 		self.update_stock_ledger(update_stock = 1)
 
 		self.credit_limit()
@@ -331,10 +298,14 @@
 		sales_com_obj = get_obj(dt = 'Sales Common')
 		sales_com_obj.check_stop_sales_order(self)
 		self.check_next_docstatus()
-		get_obj('Stock Ledger').update_serial_record(self, 'packing_details', is_submit = 0, is_incoming = 0)
+		
+		# remove delivery details from serial no
+		sl = get_obj('Stock Ledger')		
+		sl.update_serial_record(self, 'delivery_note_details', is_submit = 0, is_incoming = 0)
+		sl.update_serial_record(self, 'packing_details', is_submit = 0, is_incoming = 0)
+		
 		sales_com_obj.update_prevdoc_detail(0,self)
 		self.update_stock_ledger(update_stock = -1)
-		# :::::: set DN status :::::::
 		set(self.doc, 'status', 'Cancelled')
 		self.cancel_packing_slips()
 
@@ -434,7 +405,7 @@
 
 	def on_update(self):
 		self.doclist = get_obj('Sales Common').make_packing_list(self,'delivery_note_details')
-		self.set_actual_qty()
-		get_obj('Stock Ledger').scrub_serial_nos(self)
-
+		sl = get_obj('Stock Ledger')
+		sl.scrub_serial_nos(self)
+		sl.scrub_serial_nos(self, 'packing_details')
 
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.txt b/erpnext/stock/doctype/delivery_note/delivery_note.txt
index 7db9513..2520c47 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.txt
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-15 12:15:05',
+		'creation': '2012-07-13 11:57:15',
 		'docstatus': 0,
-		'modified': '2012-05-18 18:06:26',
+		'modified': '2012-07-16 16:24:46',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -58,68 +58,6 @@
 		'name': u'Delivery Note'
 	},
 
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Sales User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Master Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'All'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 2,
-		'role': u'All'
-	},
-
 	# DocField
 	{
 		'colour': u'White:FFF',
@@ -340,6 +278,7 @@
 	# DocField
 	{
 		'allow_on_submit': 1,
+		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'delivery_note_details',
 		'fieldtype': u'Table',
@@ -355,6 +294,16 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'sales_bom_help',
+		'fieldtype': u'HTML',
+		'label': u'Sales BOM Help',
+		'permlevel': 0,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'section_break0',
 		'fieldtype': u'Section Break',
 		'options': u'Simple',
@@ -486,7 +435,7 @@
 		'description': u"Rate at which Price list currency is converted to company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'plc_conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Price List Currency Conversion Rate',
 		'permlevel': 0,
 		'print_hide': 1,
@@ -525,7 +474,7 @@
 		'description': u"Rate at which customer's currency is converted to company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Conversion Rate',
 		'no_copy': 0,
 		'oldfieldname': u'conversion_rate',
@@ -1412,5 +1361,111 @@
 		'no_copy': 1,
 		'permlevel': 0,
 		'print_hide': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Sales User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Accounts User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Accounts User'
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'match': u'customer_name',
+		'permlevel': 0,
+		'role': u'Customer'
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 2,
+		'role': u'All',
+		'write': 1
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/delivery_note_item/__init__.py b/erpnext/stock/doctype/delivery_note_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/delivery_note_item/__init__.py
+++ b/erpnext/stock/doctype/delivery_note_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/delivery_note_packing_item/__init__.py b/erpnext/stock/doctype/delivery_note_packing_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/delivery_note_packing_item/__init__.py
+++ b/erpnext/stock/doctype/delivery_note_packing_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt b/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
index 51001fc..db512c6 100644
--- a/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
+++ b/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-13 11:56:35',
+		'creation': '2012-06-11 12:10:10',
 		'docstatus': 0,
-		'modified': '2012-05-09 12:55:23',
+		'modified': '2012-07-10 12:05:31',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -111,7 +111,7 @@
 		'oldfieldname': u'warehouse',
 		'oldfieldtype': u'Link',
 		'options': u'Warehouse',
-		'permlevel': 1
+		'permlevel': 0
 	},
 
 	# DocField
diff --git a/erpnext/stock/doctype/item/__init__.py b/erpnext/stock/doctype/item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/item/__init__.py
+++ b/erpnext/stock/doctype/item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 572a790..0a255d1 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -35,8 +35,8 @@
 
 cur_frm.cscript.hide_website_fields = function(doc) {
 	var website_fields_list = ['page_name', 'website_image', 'web_short_description',
-								'web_long_description']
-	if (cint(doc.show_in_website)) {
+								'web_long_description'];
+	if (doc && cint(doc.show_in_website)) {
 		unhide_field(website_fields_list);
 	} else {
 		hide_field(website_fields_list);
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index c21b552..6a0f200 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -222,7 +223,7 @@
 		import website.utils
 		
 		# if same name, do not repeat twice
-		if self.doc.name == self.doc.item_name:
+		if self.doc.name == self.doc.item_name or not self.doc.item_name:
 			page_name = self.doc.name
 		else:
 			page_name = self.doc.name + " " + self.doc.item_name
diff --git a/erpnext/stock/doctype/item/item.txt b/erpnext/stock/doctype/item/item.txt
index d87f56d..c624fc1 100644
--- a/erpnext/stock/doctype/item/item.txt
+++ b/erpnext/stock/doctype/item/item.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-06-08 12:54:51',
+		'creation': '2012-07-03 13:30:46',
 		'docstatus': 0,
-		'modified': '2012-07-04 11:10:51',
+		'modified': '2012-07-11 09:57:42',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -196,7 +196,7 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'description': u'Classify your item in any one item group by clicking on the magnifying glass',
+		'description': u'<a href="#!Sales Browser/Item Group">Manage Item Groups</a>',
 		'doctype': u'DocField',
 		'fieldname': u'item_group',
 		'fieldtype': u'Link',
@@ -212,17 +212,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'ighelp',
-		'fieldtype': u'HTML',
-		'label': u'IGHelp',
-		'oldfieldtype': u'HTML',
-		'options': u'<a href="#!Sales Browser/Item Group">To manage Item Groups, click here</a>',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'brand',
 		'fieldtype': u'Link',
 		'hidden': 0,
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index 43ace79..b48e2d2 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import unittest
 import webnotes
 import copy
diff --git a/erpnext/stock/doctype/item_customer_detail/__init__.py b/erpnext/stock/doctype/item_customer_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/item_customer_detail/__init__.py
+++ b/erpnext/stock/doctype/item_customer_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item_price/__init__.py b/erpnext/stock/doctype/item_price/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/item_price/__init__.py
+++ b/erpnext/stock/doctype/item_price/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py b/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py
+++ b/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item_supplier/__init__.py b/erpnext/stock/doctype/item_supplier/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/item_supplier/__init__.py
+++ b/erpnext/stock/doctype/item_supplier/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/item_tax/__init__.py b/erpnext/stock/doctype/item_tax/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/item_tax/__init__.py
+++ b/erpnext/stock/doctype/item_tax/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_item/__init__.py b/erpnext/stock/doctype/landed_cost_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/landed_cost_item/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_master/__init__.py b/erpnext/stock/doctype/landed_cost_master/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/landed_cost_master/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_master/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_master_detail/__init__.py b/erpnext/stock/doctype/landed_cost_master_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/landed_cost_master_detail/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_master_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py b/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_wizard/__init__.py b/erpnext/stock/doctype/landed_cost_wizard/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/landed_cost_wizard/__init__.py
+++ b/erpnext/stock/doctype/landed_cost_wizard/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
index f73845c..6d235ae 100644
--- a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
+++ b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import cint, cstr, flt
 from webnotes.model.doc import addchild, getchildren
diff --git a/erpnext/stock/doctype/packing_slip/__init__.py b/erpnext/stock/doctype/packing_slip/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/packing_slip/__init__.py
+++ b/erpnext/stock/doctype/packing_slip/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.py b/erpnext/stock/doctype/packing_slip/packing_slip.py
index 74c8036..9e544b6 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.py
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import flt, cint
 
diff --git a/erpnext/stock/doctype/packing_slip_item/__init__.py b/erpnext/stock/doctype/packing_slip_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/packing_slip_item/__init__.py
+++ b/erpnext/stock/doctype/packing_slip_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py b/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py
index 761c572..cfd57e7 100644
--- a/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py
+++ b/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 class DocType:
diff --git a/erpnext/stock/doctype/purchase_receipt/__init__.py b/erpnext/stock/doctype/purchase_receipt/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/purchase_receipt/__init__.py
+++ b/erpnext/stock/doctype/purchase_receipt/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 10fecbf..caf4d5a 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt
index ea50db2..af6b484 100755
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-10 12:42:13',
+		'creation': '2012-06-11 12:10:11',
 		'docstatus': 0,
-		'modified': '2012-05-10 14:01:16',
+		'modified': '2012-07-16 16:26:24',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -56,89 +56,6 @@
 		'name': u'Purchase Receipt'
 	},
 
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Purchase User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Purchase User'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'match': u'supplier',
-		'permlevel': 0,
-		'role': u'Supplier'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 2,
-		'role': u'All',
-		'write': 1
-	},
-
 	# DocField
 	{
 		'colour': u'White:FFF',
@@ -449,7 +366,7 @@
 		'description': u"Rate at which supplier's currency is converted to company's base currency",
 		'doctype': u'DocField',
 		'fieldname': u'conversion_rate',
-		'fieldtype': u'Currency',
+		'fieldtype': u'Float',
 		'label': u'Conversion Rate',
 		'oldfieldname': u'conversion_rate',
 		'oldfieldtype': u'Currency',
@@ -1183,5 +1100,88 @@
 		'no_copy': 1,
 		'permlevel': 0,
 		'print_hide': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material Manager',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material Manager',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material User',
+		'submit': 0,
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'amend': 1,
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Purchase User',
+		'submit': 1,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Purchase User'
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'match': u'supplier',
+		'permlevel': 0,
+		'role': u'Supplier'
+	},
+
+	# DocPerm
+	{
+		'doctype': u'DocPerm',
+		'permlevel': 2,
+		'role': u'All',
+		'write': 1
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/purchase_receipt_item/__init__.py b/erpnext/stock/doctype/purchase_receipt_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/purchase_receipt_item/__init__.py
+++ b/erpnext/stock/doctype/purchase_receipt_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py b/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py
+++ b/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py b/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
index 00319bd..d8ff604 100644
--- a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
+++ b/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/sales_bom/__init__.py b/erpnext/stock/doctype/sales_bom/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/sales_bom/__init__.py
+++ b/erpnext/stock/doctype/sales_bom/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.js b/erpnext/stock/doctype/sales_bom/sales_bom.js
index 275af6a..b6ba779 100644
--- a/erpnext/stock/doctype/sales_bom/sales_bom.js
+++ b/erpnext/stock/doctype/sales_bom/sales_bom.js
@@ -14,35 +14,26 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
- 
-
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-    
-  if(!doc.price_list) set_multiple(cdt,cdn,{price_list:sys_defaults.price_list_name});
-}
-
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
+	cur_frm.toggle_enable('new_item_code', doc.__islocal);
 	if(!doc.__islocal) {
-		get_field(doc.doctype, 'new_item_code', doc.name).permlevel = 1;
+		cur_frm.add_custom_button("Check for Duplicates", function() {
+			cur_frm.call_server('check_duplicate', 1)			
+		}, 'icon-search')
 	}
 }
 
-/* Get Item Code */
+cur_frm.fields_dict.new_item_code.get_query = function() {
+	return 'select name, description from tabItem where is_stock_item="No" and is_sales_item="Yes"\
+		and name not in (select name from `tabSales BOM`)\
+		and `%(key)s` like "%s"'
+}
+cur_frm.fields_dict.new_item_code.query_description = 'Select Item where "Is Stock Item" is "No" \
+	and "Is Sales Item" is "Yes" and there is no other Sales BOM';
+
 cur_frm.cscript.item_code = function(doc, dt, dn) {
-  var d = locals[dt][dn];
-  if (d.item_code){
-    get_server_fields('get_item_details', d.item_code, 'sales_bom_items', doc ,dt, dn, 1);
-  }
-}
-
-cur_frm.cscript.price_list = function(doc, cdt, cdn) {
-  $c_obj(make_doclist(cdt,cdn), 'get_rates', '', function(r,rt){refresh_field('sales_bom_items');});
-}
-
-cur_frm.cscript.currency = function(doc, cdt, cdn) {
-  $c_obj(make_doclist(cdt,cdn), 'get_rates', '', function(r,rt){refresh_field('sales_bom_items');});
-}
-
-cur_frm.cscript.find_sales_bom = function(doc, dt, dn) {
-  $c_obj(make_doclist(dt,dn), 'check_duplicate', 1, '');
-}
+	var d = locals[dt][dn];
+	if (d.item_code){
+		get_server_fields('get_item_details', d.item_code, 'sales_bom_items', doc ,dt, dn, 1);
+	}
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.py b/erpnext/stock/doctype/sales_bom/sales_bom.py
index 03e1bd0..03479eb 100644
--- a/erpnext/stock/doctype/sales_bom/sales_bom.py
+++ b/erpnext/stock/doctype/sales_bom/sales_bom.py
@@ -14,24 +14,10 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
-# Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
+from webnotes.utils import flt
+from webnotes.model.utils import getlist
 
 class DocType:
 	def __init__(self,d,dl):
@@ -40,139 +26,53 @@
 	def autoname(self):
 		self.doc.name = self.doc.new_item_code
 	
-	# Get Ref Rates
-	# --------------
-	def get_rates(self):
-		for d in getlist(self.doclist, "sales_bom_items"):
-			r = sql("select ref_rate from `tabItem Price` where price_list_name=%s and parent=%s and ref_currency = %s", (self.doc.price_list, d.item_code, self.doc.currency))
-			d.rate = r and flt(r[0][0]) or 0.00
-
-
-	# Get Item Details
-	# -----------------
-	def get_item_details(self, name):
-		det = sql("select description, stock_uom from `tabItem` where name = '%s' " % cstr(name))
-		rate = sql("select ref_rate from `tabItem Price` where price_list_name = %s and parent = %s and ref_currency = %s", (self.doc.price_list, name, self.doc.currency))
-		return {'description' : det and det[0][0] or '', 'uom': det and det[0][1] or '', 'rate': rate and flt(rate[0][0]) or 0.00}
-
-
-	def get_main_item(self):
-		is_main_item = []
-		for d in getlist(self.doclist,'sales_bom_items'):
-			if d.is_main_item == 'Yes':
-				is_main_item.append(d.item_code)
-			# Check that Sales Bom Item cannot be child of Sales Bom.
-			if d.item_code == self.doc.new_item_code:
-				msgprint("Sales Bom Item " + d.new_item_code +" cannot be child item.")
-				raise Exception
-		if len(is_main_item) > 1:
-			msgprint('Main item cannot be more than one.')
-			raise Exception , " Validation Error."
-		if len(is_main_item) == 0:
-			msgprint("At least one item should be main item.")
-			raise Exception , " Validation Error."
-		return is_main_item[0]
-
-
-	# Make Item
-	# ---------
-	def create_new_item(self):
-		i = Document("Item")		
-		i.item_code = self.doc.new_item_code
-		i.item_name = self.doc.new_item_name
-		i.name = i.item_code
-		i.is_sales_item = 'Yes'
-		i.is_stock_item = 'No'
-		i.save(1)
-
-	# Update Rate	
-	def update_ref_rate(self, i):
-		ref_rate = 0
-		if self.doc.price_list:
-			if not cstr(self.doc.currency):
-				msgprint("Please enter Currency.")
-				raise Exception
-			for d in getlist(self.doclist, "sales_bom_items"):
-				item_rate = sql("select ref_rate,ref_currency from `tabItem Price` where price_list_name=%s and parent=%s", (self.doc.price_list, d.item_code))
-				ref_rate += flt(d.qty) * (item_rate and flt(item_rate[0][0]) or 0)
-
-			if ref_rate:
-				# clear old rates
-				sql("delete from `tabItem Price` where parent=%s and price_list_name = %s", (i.name, self.doc.price_list))
-				
-				pld = addchild(i,"ref_rate_details", "Item Price")
-				pld.price_list_name = self.doc.price_list
-				pld.ref_rate = flt(ref_rate)
-				pld.ref_currency = self.doc.currency
-				pld.save()
-
-	# Update Items
-	# ------------
-	def update_item(self):
-		i = Document("Item", self.doc.new_item_code)
-		
-		# update fields
-		i.brand = self.doc.new_item_brand
-		i.stock_uom = self.doc.stock_uom 
-		i.item_group = self.doc.item_group
-		
-
-		i.item_name = self.doc.new_item_name
-		i.description = self.doc.description
-
-		# set default as 'No' or 0
-		i.is_sample_item = 'No'
-		i.is_asset_item = 'No'
-		i.is_purchase_item = 'No'
-		i.is_manufactured_item = 'No'
-		i.is_sub_contracted_item = 'No'
-		i.is_service_item = 'No'
-		i.inspection_required = 'No'
-		i.has_serial_no = 'No'
-		i.lead_time_days = flt(0)
-		# update rates
-		self.update_ref_rate(i)
-		i.save()
-		msgprint("Items: %s updated successfully. To update more details open and edit item master" % self.doc.new_item_code)
-
-
 	def validate(self):
 		# check for duplicate
 		self.check_duplicate()
-		item_code = self.get_main_item()
-		if not self.doc.new_item_code:
-			self.doc.new_item_code = make_autoname(item_code +'.###')
+		self.validate_main_item()
 
- 
-	def on_update(self):
-		# if no item code, create new item code
-		if not sql("select name from tabItem where name=%s", self.doc.new_item_code):
-			self.create_new_item()
-		self.update_item()
+	def validate_main_item(self):
+		"""main item must have Is Stock Item as No and Is Sales Item as Yes"""
+		if not webnotes.conn.sql("""select name from tabItem where name=%s and
+			ifnull(is_stock_item,'')='No' and ifnull(is_sales_item,'')='Yes'""", self.doc.new_item_code):
+			webnotes.msgprint("""Parent Item %s is either a Stock Item or a not a Sales Item""",
+				raise_exception=1)
 
+	def get_item_details(self, name):
+		det = webnotes.conn.sql("""select description, stock_uom from `tabItem` 
+			where name = %s""", name)
+		rate = webnotes.conn.sql("""select ref_rate from `tabItem Price` 
+			where price_list_name = %s and parent = %s 
+			and ref_currency = %s""", (self.doc.price_list, name, self.doc.currency))
+		return {
+			'description' : det and det[0][0] or '', 
+			'uom': det and det[0][1] or '', 
+			'rate': rate and flt(rate[0][0]) or 0.00
+		}
 
 	def check_duplicate(self, finder=0):
 		il = getlist(self.doclist, "sales_bom_items")
 		if not il:
-			msgprint("Add atleast one item")
+			webnotes.msgprint("Add atleast one item")
 			return
 		
 		# get all Sales BOM that have the first item	
-		sbl = sql("select distinct parent from `tabSales BOM Item` where item_code=%s and parent != %s and docstatus != 2", (il[0].item_code, self.doc.name))
+		sbl = webnotes.conn.sql("""select distinct parent from `tabSales BOM Item` where item_code=%s 
+			and parent != %s and docstatus != 2""", (il[0].item_code, self.doc.name))
 		
 		# check all siblings
 		sub_items = [[d.item_code, flt(d.qty)] for d in il]
 		
 		for s in sbl:
-			t = sql("select item_code, qty from `tabSales BOM Item` where parent=%s and docstatus != 2", s[0])
+			t = webnotes.conn.sql("""select item_code, qty from `tabSales BOM Item` where parent=%s and 
+				docstatus != 2""", s[0])
 			t = [[d[0], flt(d[1])] for d in t]
 	
 			if self.has_same_items(sub_items, t):
-				msgprint("%s has the same Sales BOM details" % s[0])
+				webnotes.msgprint("%s has the same Sales BOM details" % s[0])
 				raise Exception
 		if finder:
-			msgprint("There is no Sales BOM present with the following Combination.")
-
+			webnotes.msgprint("There is no Sales BOM present with the following Combination.")
 
 	def has_same_items(self, l1, l2):
 		if len(l1)!=len(l2): return 0
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.txt b/erpnext/stock/doctype/sales_bom/sales_bom.txt
index 29fcd31..7426821 100644
--- a/erpnext/stock/doctype/sales_bom/sales_bom.txt
+++ b/erpnext/stock/doctype/sales_bom/sales_bom.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-30 12:08:49',
+		'creation': '2012-07-03 13:30:44',
 		'docstatus': 0,
-		'modified': '2012-05-04 09:53:08',
+		'modified': '2012-07-12 18:00:16',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -15,10 +15,10 @@
 		'_last_update': u'1322549701',
 		'allow_trash': 1,
 		'colour': u'White:FFF',
-		'description': u'Aggregate item and accessories to form a Sales Item. There is no inventory of the new item but of the sub-components.',
+		'description': u'Aggregate group of **Items** into another **Item**. This is useful if you are bundling a certain **Items** into a package and you maintain stock of the packed **Items** and not the aggregate **Item**. \n\nThe package **Item** will have "Is Stock Item" as "No" and "Is Sales Item" as "Yes".\n\nFor Example: If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Sales BOM Item.\n\nNote: BOM = Bill of Materials',
 		'doctype': 'DocType',
 		'document_type': u'Master',
-		'is_submittable': 1,
+		'is_submittable': 0,
 		'module': u'Stock',
 		'name': '__common__',
 		'section_style': u'Simple',
@@ -33,17 +33,20 @@
 		'name': '__common__',
 		'parent': u'Sales BOM',
 		'parentfield': u'fields',
-		'parenttype': u'DocType'
+		'parenttype': u'DocType',
+		'permlevel': 0
 	},
 
 	# These values are common for all DocPerm
 	{
+		'amend': 0,
 		'doctype': u'DocPerm',
 		'name': '__common__',
 		'parent': u'Sales BOM',
 		'parentfield': u'permissions',
 		'parenttype': u'DocType',
-		'read': 1
+		'read': 1,
+		'submit': 0
 	},
 
 	# DocType, Sales BOM
@@ -54,73 +57,61 @@
 
 	# DocPerm
 	{
-		'amend': 0,
 		'cancel': 0,
-		'create': 0,
+		'create': 1,
 		'doctype': u'DocPerm',
 		'permlevel': 1,
 		'role': u'Material Manager',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material Manager',
-		'submit': 1,
 		'write': 1
 	},
 
 	# DocPerm
 	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
-		'cancel': 0,
-		'create': 0,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Material User',
-		'submit': 0,
-		'write': 0
-	},
-
-	# DocPerm
-	{
-		'amend': 0,
 		'cancel': 1,
 		'create': 1,
 		'doctype': u'DocPerm',
 		'permlevel': 0,
-		'role': u'Sales User',
-		'submit': 0,
+		'role': u'Material Manager',
 		'write': 1
 	},
 
 	# DocPerm
 	{
-		'amend': 0,
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 1,
+		'role': u'Material User',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 0,
+		'create': 0,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Material User',
+		'write': 0
+	},
+
+	# DocPerm
+	{
+		'cancel': 1,
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Sales User',
+		'write': 1
+	},
+
+	# DocPerm
+	{
 		'cancel': 0,
 		'create': 0,
 		'doctype': u'DocPerm',
 		'permlevel': 1,
 		'role': u'Sales User',
-		'submit': 0,
 		'write': 0
 	},
 
@@ -129,167 +120,32 @@
 		'doctype': u'DocField',
 		'fieldname': u'basic_section',
 		'fieldtype': u'Section Break',
-		'label': u'Basic Section',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'col1',
-		'fieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
+		'label': u'Sales BOM Item'
 	},
 
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'description': u'Item code of the new aggregate item.',
+		'description': u'The Item that represents the Package. This Item must have "Is Stock Item" as "No" and "Is Sales Item" as "Yes"',
 		'doctype': u'DocField',
 		'fieldname': u'new_item_code',
-		'fieldtype': u'Data',
-		'label': u'New Item Code',
+		'fieldtype': u'Link',
+		'label': u'Parent Item',
 		'no_copy': 1,
 		'oldfieldname': u'new_item_code',
 		'oldfieldtype': u'Data',
+		'options': u'Item',
 		'reqd': 1
 	},
 
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'new_item_name',
-		'fieldtype': u'Data',
-		'label': u'New Item Name',
-		'oldfieldname': u'new_item_name',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'new_item_brand',
-		'fieldtype': u'Data',
-		'label': u'New Item Brand',
-		'oldfieldname': u'new_item_brand',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'description',
-		'fieldtype': u'Text',
-		'label': u'New Description',
-		'oldfieldname': u'description',
-		'oldfieldtype': u'Text',
-		'permlevel': 0,
-		'reqd': 1,
-		'width': u'300px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'col2',
-		'fieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'item_group',
-		'fieldtype': u'Link',
-		'label': u'Item Group',
-		'oldfieldname': u'item_group',
-		'oldfieldtype': u'Link',
-		'options': u'Item Group',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'stock_uom',
-		'fieldtype': u'Link',
-		'label': u'Stock UOM',
-		'oldfieldname': u'stock_uom',
-		'oldfieldtype': u'Link',
-		'options': u'UOM',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'price_list',
-		'fieldtype': u'Select',
-		'label': u'Price List',
-		'oldfieldname': u'price_list',
-		'oldfieldtype': u'Select',
-		'options': u'link:Price List',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'currency',
-		'fieldtype': u'Select',
-		'label': u'Currency',
-		'oldfieldname': u'currency',
-		'oldfieldtype': u'Select',
-		'options': u'link:Currency',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'depends_on': u'eval:doc.amended_from',
-		'description': u'The date at which current entry is corrected in the system.',
-		'doctype': u'DocField',
-		'fieldname': u'amendment_date',
-		'fieldtype': u'Date',
-		'label': u'Amendment Date',
-		'no_copy': 1,
-		'permlevel': 1,
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amended_from',
-		'fieldtype': u'Link',
-		'label': u'Amended From',
-		'no_copy': 1,
-		'options': u'Sales BOM',
-		'permlevel': 1,
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u'List items that form a package. One of the items has to be a "main item".',
+		'description': u'List items that form the package.',
 		'doctype': u'DocField',
 		'fieldname': u'item_section',
 		'fieldtype': u'Section Break',
-		'label': u'Items',
-		'permlevel': 0
+		'label': u'Package Items'
 	},
 
 	# DocField
@@ -301,30 +157,6 @@
 		'oldfieldname': u'sales_bom_items',
 		'oldfieldtype': u'Table',
 		'options': u'Sales BOM Item',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'description': u'Add a few items and find if there are any Sales BOM created with the same combination to help you identify duplication.',
-		'doctype': u'DocField',
-		'fieldname': u'find_sales_bom',
-		'fieldtype': u'Button',
-		'label': u'Find Sales BOM',
-		'oldfieldtype': u'Button',
-		'permlevel': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'trash_reason',
-		'fieldtype': u'Small Text',
-		'label': u'Trash Reason',
-		'oldfieldname': u'trash_reason',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 1
+		'reqd': 1
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/sales_bom_item/__init__.py b/erpnext/stock/doctype/sales_bom_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/sales_bom_item/__init__.py
+++ b/erpnext/stock/doctype/sales_bom_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt b/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt
index 8cf93f5..76e3f26 100644
--- a/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt
+++ b/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:37',
+		'creation': '2012-07-03 13:30:46',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:37',
+		'modified': '2012-07-11 18:56:27',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -20,7 +20,7 @@
 		'section_style': u'Tray',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 3
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -41,18 +41,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'is_main_item',
-		'fieldtype': u'Select',
-		'label': u'Is Main Item',
-		'oldfieldname': u'is_main_item',
-		'oldfieldtype': u'Select',
-		'options': u'\nYes\nNo',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'item_code',
 		'fieldtype': u'Link',
 		'label': u'Item',
@@ -67,6 +55,18 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'qty',
+		'fieldtype': u'Currency',
+		'label': u'Qty',
+		'oldfieldname': u'qty',
+		'oldfieldtype': u'Currency',
+		'permlevel': 0,
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'description',
 		'fieldtype': u'Text',
 		'label': u'Description',
@@ -90,18 +90,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'qty',
-		'fieldtype': u'Currency',
-		'label': u'Qty',
-		'oldfieldname': u'qty',
-		'oldfieldtype': u'Currency',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'uom',
 		'fieldtype': u'Link',
 		'label': u'UOM',
diff --git a/erpnext/stock/doctype/serial_no/__init__.py b/erpnext/stock/doctype/serial_no/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/serial_no/__init__.py
+++ b/erpnext/stock/doctype/serial_no/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index b6dd690..e811d73 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import cint, flt, cstr, getdate, nowdate
diff --git a/erpnext/stock/doctype/stock_entry/__init__.py b/erpnext/stock/doctype/stock_entry/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/stock_entry/__init__.py
+++ b/erpnext/stock/doctype/stock_entry/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 1cc49f8..5fa9eb6 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/stock_entry_detail/__init__.py b/erpnext/stock/doctype/stock_entry_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/stock_entry_detail/__init__.py
+++ b/erpnext/stock/doctype/stock_entry_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_ledger/__init__.py b/erpnext/stock/doctype/stock_ledger/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/stock_ledger/__init__.py
+++ b/erpnext/stock/doctype/stock_ledger/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_ledger/stock_ledger.py b/erpnext/stock/doctype/stock_ledger/stock_ledger.py
index d529ae3..8b51b5c 100644
--- a/erpnext/stock/doctype/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/doctype/stock_ledger/stock_ledger.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -51,19 +52,16 @@
 		self.doclist = doclist
 
 
-	# -----------------
-	# scrub serial nos
-	# -----------------
-	def scrub_serial_nos(self, obj):
-		for d in getlist(obj.doclist, obj.fname):
+	def scrub_serial_nos(self, obj, table_name = ''):
+		if not table_name:
+			table_name = obj.fname
+		
+		for d in getlist(obj.doclist, table_name):
 			if d.serial_no:
 				d.serial_no = d.serial_no.replace(',', '\n')
 				d.save()
 
 
-	# -----------------------------
-	# validate serial no warehouse
-	# -----------------------------
 	def validate_serial_no_warehouse(self, obj, fname):
 		for d in getlist(obj.doclist, fname):
 			wh = d.warehouse or d.s_warehouse
@@ -80,10 +78,8 @@
 						msgprint("Serial No : %s for Item : %s doesn't exists in Warehouse : %s" % (s, d.item_code, wh), raise_exception = 1)
 
 
-	# ------------------------------------
-	# check whether serial no is required
-	# ------------------------------------
 	def validate_serial_no(self, obj, fname):
+		"""check whether serial no is required"""
 		for d in getlist(obj.doclist, fname):
 			is_stock_item = get_value('Item', d.item_code, 'is_stock_item')
 			ar_required = get_value('Item', d.item_code, 'has_serial_no')
@@ -105,18 +101,10 @@
 				msgprint("Rejected serial no is mandatory for rejected qty of item: "+ d.item_code, raise_exception = 1)
 				
 				
-
-
-
-	# -------------------
-	# get serial no list
-	# -------------------
 	def get_sr_no_list(self, sr_nos, qty = 0, item_code = ''):
 		return get_sr_no_list(sr_nos, qty, item_code)
 
-	# ---------------------
-	# set serial no values
-	# ---------------------
+
 	def set_pur_serial_no_values(self, obj, serial_no, d, s, new_rec):
 		item_details = sql("select item_group, warranty_period from `tabItem` where name = '%s' and \
 			(ifnull(end_of_life,'')='' or end_of_life = '0000-00-00' or end_of_life > now()) " %(d.item_code), as_dict=1)
@@ -147,9 +135,6 @@
 		s.save(new_rec)
 
 
-	# ----------------------------------
-	# update serial no purchase details
-	# ----------------------------------
 	def update_serial_purchase_details(self, obj, d, serial_no, is_submit, purpose = ''):
 		exists = sql("select name, status, docstatus from `tabSerial No` where name = '%s'" % (serial_no))
 		if is_submit:
@@ -172,9 +157,6 @@
 				sql("update `tabSerial No` set docstatus = 2, status = 'Not in Use', purchase_document_type = '', purchase_document_no = '', purchase_date = null, purchase_rate = 0, supplier = null, supplier_name = '', supplier_address = '', warehouse = '' where name = '%s'" % serial_no)
 
 
-	# -------------------------------
-	# check whether serial no exists
-	# -------------------------------
 	def check_serial_no_exists(self, serial_no, item_code):
 		chk = sql("select name, status, docstatus, item_code from `tabSerial No` where name = %s", (serial_no), as_dict=1)
 		if not chk:
@@ -186,9 +168,7 @@
 		elif chk and chk[0]['status'] == 'Delivered':
 			msgprint("Serial No: %s of Item : %s is already delivered." % (serial_no, item_code), raise_exception = 1)
 
-	# ---------------------
-	# set serial no values
-	# ---------------------
+
 	def set_delivery_serial_no_values(self, obj, serial_no):
 		s = Document('Serial No', serial_no)
 		s.delivery_document_type =	 obj.doc.doctype
@@ -207,9 +187,6 @@
 		s.save()
 
 
-	# ----------------------------------
-	# update serial no delivery details
-	# ----------------------------------
 	def update_serial_delivery_details(self, obj, d, serial_no, is_submit):
 		if is_submit:
 			self.check_serial_no_exists(serial_no, d.item_code)
@@ -218,9 +195,6 @@
 			sql("update `tabSerial No` set docstatus = 0, status = 'In Store', delivery_document_type = '', delivery_document_no = '', delivery_date = null, customer = null, customer_name = '', delivery_address = '', territory = null where name = '%s'" % (serial_no))
 
 
-	# ---------------------
-	# update serial record
-	# ---------------------
 	def update_serial_record(self, obj, fname, is_submit = 1, is_incoming = 0):
 		import datetime
 		for d in getlist(obj.doclist, fname):
@@ -239,11 +213,6 @@
 					self.update_serial_purchase_details(obj, d, a, is_submit)
 				
 				
-
-
-	# -------------
-	# update stock
-	# -------------
 	def update_stock(self, values, is_amended = 'No'):
 		for v in values:
 			sle_id, serial_nos = '', ''
@@ -265,9 +234,6 @@
 				v["posting_date"], sle_id, v["posting_time"], '', v["is_cancelled"],v["voucher_type"],v["voucher_no"], is_amended)
 
 
-	# -----------
-	# make entry
-	# -----------
 	def make_entry(self, args):
 		sle = Document(doctype = 'Stock Ledger Entry')
 		for k in args.keys():
diff --git a/erpnext/stock/doctype/stock_ledger_entry/__init__.py b/erpnext/stock/doctype/stock_ledger_entry/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/__init__.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index b545d7d..645b7c9 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import cstr, cint, flt, cstr, getdate
diff --git a/erpnext/stock/doctype/stock_reconciliation/__init__.py b/erpnext/stock/doctype/stock_reconciliation/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/stock_reconciliation/__init__.py
+++ b/erpnext/stock/doctype/stock_reconciliation/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 06b0cc4..d922a11 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import cstr, flt, get_defaults, nowdate
 from webnotes import msgprint, errprint
@@ -46,10 +47,6 @@
 			
 			from webnotes.utils import file_manager
 			fn, content = file_manager.get_file(filename[1])
-		
-			# NOTE: Don't know why this condition exists
-			if not isinstance(content, basestring) and hasattr(content, 'tostring'):
-				content = content.tostring()
 		else:
 			content = self.doc.diff_info
 
@@ -81,8 +78,10 @@
 
 	def get_reconciliation_data(self,submit = 1):
 		"""Read and validate csv data"""
-		import csv 
-		data = csv.reader(self.get_csv_file_data(submit).splitlines())
+		import csv
+		from core.page.data_import_tool.data_import_tool import read_csv_content
+		csv_content = self.get_csv_file_data(submit).encode('utf-8')
+		data = read_csv_content(csv_content)
 		self.convert_into_list(data, submit)
 		
 
@@ -185,7 +184,7 @@
 			# Diff between file and system
 			qty_diff = row[2] != '~' and flt(row[2]) - flt(sys_stock['actual_qty']) or 0
 			rate_diff = row[3] != '~' and flt(row[3]) - flt(sys_stock['val_rate']) or 0
-
+			
 			# Make sl entry
 			if qty_diff:
 				self.make_sl_entry(is_submit, row, qty_diff, sys_stock)
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py b/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py
+++ b/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
index f7ff36b..b128094 100644
--- a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
+++ b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
@@ -116,4 +117,4 @@
 		# update bin
 		self.update_bin()
 
-		get_obj("Item", self.doc.item_code).on_update()
\ No newline at end of file
+		get_obj("Item", self.doc.item_code).on_update()
diff --git a/erpnext/stock/doctype/uom_conversion_detail/__init__.py b/erpnext/stock/doctype/uom_conversion_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/uom_conversion_detail/__init__.py
+++ b/erpnext/stock/doctype/uom_conversion_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/valuation_control/__init__.py b/erpnext/stock/doctype/valuation_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/valuation_control/__init__.py
+++ b/erpnext/stock/doctype/valuation_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/valuation_control/valuation_control.py b/erpnext/stock/doctype/valuation_control/valuation_control.py
index f0cbed9..1318db6 100644
--- a/erpnext/stock/doctype/valuation_control/valuation_control.py
+++ b/erpnext/stock/doctype/valuation_control/valuation_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes, unittest
 
 from webnotes.utils import flt
diff --git a/erpnext/stock/doctype/warehouse/__init__.py b/erpnext/stock/doctype/warehouse/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/doctype/warehouse/__init__.py
+++ b/erpnext/stock/doctype/warehouse/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/erpnext/stock/doctype/warehouse/warehouse.js
index b218063..0017c75 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.js
+++ b/erpnext/stock/doctype/warehouse/warehouse.js
@@ -14,16 +14,6 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-cur_frm.cscript.country = function(doc, cdt, cdn) {
-  var mydoc=doc;
-  $c('runserverobj', args={'method':'check_state', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
-    function(r,rt){
-      if(r.message) {
-        var doc = locals[mydoc.doctype][mydoc.name];
-        doc.state = '';
-        get_field(doc.doctype, 'state' , doc.name).options = r.message;
-        refresh_field('state');
-      }
-    }  
-  );
-}
+cur_frm.cscript.refresh = function(doc) {
+	cur_frm.toggle_display('warehouse_name', doc.__islocal);
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 887d5fe..1766dad 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/stock/doctype/warehouse/warehouse.txt b/erpnext/stock/doctype/warehouse/warehouse.txt
index 16bf59d..844e3f3 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.txt
+++ b/erpnext/stock/doctype/warehouse/warehouse.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-05-15 12:15:13',
+		'creation': '2012-07-03 13:30:45',
 		'docstatus': 0,
-		'modified': '2012-05-21 18:02:46',
+		'modified': '2012-07-11 10:18:07',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -17,6 +17,7 @@
 		'autoname': u'field:warehouse_name',
 		'colour': u'White:FFF',
 		'default_print_format': u'Standard',
+		'description': u'A logical Warehouse against which stock entries are made.\n\nThere are two main Warehouse Types that are significant in ERPNext.\n\n1. **Stores:** These are where your incoming **Items** are kept before they are consumed or sold. You can have as many \u201cStores\u201d type **Warehouses** as you wish. Stores type warehouses are significant because if you set an Item for automatic re-order, ERPNext will check its quantities in all \u201cStores\u201d type **Warehouses** when deciding whether to re-order or not.\n\n2. **Asset**: **Items** marked as type \u201cFixed Asset\u201d are maintained in Asset Type **Warehouses**. This helps you separate them for the **Items** that are consumed as a part of your regular operations or \u201cCost of Goods Sold\u201d.\n',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'module': u'Stock',
@@ -173,17 +174,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'trash_reason',
-		'fieldtype': u'Small Text',
-		'label': u'Trash Reason',
-		'oldfieldname': u'trash_reason',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'warehouse_detail',
 		'fieldtype': u'Section Break',
 		'label': u'Warehouse Detail',
@@ -220,7 +210,6 @@
 	# DocField
 	{
 		'colour': u'White:FFF',
-		'description': u'The valuation of items in this warehouse will be considered for the company that is specified',
 		'doctype': u'DocField',
 		'fieldname': u'company',
 		'fieldtype': u'Link',
@@ -235,6 +224,17 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'For Reference Only.',
+		'doctype': u'DocField',
+		'fieldname': u'warehouse_contact_info',
+		'fieldtype': u'Section Break',
+		'label': u'Warehouse Contact Info',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
 		'doctype': u'DocField',
 		'fieldname': u'email_id',
 		'fieldtype': u'Data',
@@ -249,24 +249,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'auto_indent_mail',
-		'fieldtype': u'Select',
-		'hidden': 1,
-		'label': u'Send Reorder Alert Mail ',
-		'no_copy': 1,
-		'oldfieldname': u'auto_indent_mail',
-		'oldfieldtype': u'Select',
-		'options': u'No\nYes',
-		'permlevel': 0,
-		'print_hide': 1,
-		'report_hide': 1,
-		'reqd': 0,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'phone_no',
 		'fieldtype': u'Data',
 		'label': u'Phone No',
@@ -357,6 +339,8 @@
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'description': u'For Admin use only. Please report errors to support@erpnext.com',
 		'doctype': u'DocField',
 		'fieldname': u'repost_stock',
 		'fieldtype': u'Section Break',
diff --git a/erpnext/stock/page/__init__.py b/erpnext/stock/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/page/__init__.py
+++ b/erpnext/stock/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/page/stock_home/__init__.py b/erpnext/stock/page/stock_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/page/stock_home/__init__.py
+++ b/erpnext/stock/page/stock_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/page/stock_home/stock_home.html b/erpnext/stock/page/stock_home/stock_home.html
index ef941ab..0939a77 100644
--- a/erpnext/stock/page/stock_home/stock_home.html
+++ b/erpnext/stock/page/stock_home/stock_home.html
@@ -51,8 +51,13 @@
 					</div>
 					<div class="section-item">
 						<a class="section-link" 
+							title = "Multiple prices lists for items"
+							href="#!List/Price List">Price List</a>
+					</div>
+					<div class="section-item">
+						<a class="section-link" 
 							title = "Readings of incoming quality inspections"
-							href="#!List/Quality Inspection">Incoming Inspection</a>
+							href="#!List/Quality Inspection">Quality Inspection</a>
 					</div>
 					<div class="section-item">
 						<a class="section-link" 
diff --git a/erpnext/stock/search_criteria/__init__.py b/erpnext/stock/search_criteria/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/search_criteria/__init__.py
+++ b/erpnext/stock/search_criteria/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/search_criteria/itemwise_price_list/__init__.py b/erpnext/stock/search_criteria/itemwise_price_list/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/search_criteria/itemwise_price_list/__init__.py
+++ b/erpnext/stock/search_criteria/itemwise_price_list/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/search_criteria/itemwise_receipt_details/__init__.py b/erpnext/stock/search_criteria/itemwise_receipt_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/search_criteria/itemwise_receipt_details/__init__.py
+++ b/erpnext/stock/search_criteria/itemwise_receipt_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/search_criteria/shortage_to_purchase_request/__init__.py b/erpnext/stock/search_criteria/shortage_to_purchase_request/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/search_criteria/shortage_to_purchase_request/__init__.py
+++ b/erpnext/stock/search_criteria/shortage_to_purchase_request/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/search_criteria/stock_aging_report/__init__.py b/erpnext/stock/search_criteria/stock_aging_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/search_criteria/stock_aging_report/__init__.py
+++ b/erpnext/stock/search_criteria/stock_aging_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.py b/erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.py
index 2557451..695ad02 100644
--- a/erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.py
+++ b/erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 col = [['In Store Period (in days)', 'Data', '']]
 for c in col:
   colnames.append(str(c[0]))
diff --git a/erpnext/stock/search_criteria/stock_ledger/__init__.py b/erpnext/stock/search_criteria/stock_ledger/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/search_criteria/stock_ledger/__init__.py
+++ b/erpnext/stock/search_criteria/stock_ledger/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/search_criteria/stock_level/__init__.py b/erpnext/stock/search_criteria/stock_level/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/search_criteria/stock_level/__init__.py
+++ b/erpnext/stock/search_criteria/stock_level/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/search_criteria/stock_level/stock_level.py b/erpnext/stock/search_criteria/stock_level/stock_level.py
index 7782805..d53ab5f 100644
--- a/erpnext/stock/search_criteria/stock_level/stock_level.py
+++ b/erpnext/stock/search_criteria/stock_level/stock_level.py
@@ -14,5 +14,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 colwidths[col_idx['Reserved Quantity']]= "120px" 
 colwidths[col_idx['Ordered Quantity']] = "120px"
\ No newline at end of file
diff --git a/erpnext/stock/search_criteria/stock_report/__init__.py b/erpnext/stock/search_criteria/stock_report/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/stock/search_criteria/stock_report/__init__.py
+++ b/erpnext/stock/search_criteria/stock_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/stock/search_criteria/stock_report/stock_report.py b/erpnext/stock/search_criteria/stock_report/stock_report.py
index b87f684..970141a 100644
--- a/erpnext/stock/search_criteria/stock_report/stock_report.py
+++ b/erpnext/stock/search_criteria/stock_report/stock_report.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 cols, columns = [], []
 # Add columns
 # ------------
diff --git a/erpnext/stock/tests.py b/erpnext/stock/tests.py
index acd0edc..92378dc 100644
--- a/erpnext/stock/tests.py
+++ b/erpnext/stock/tests.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import unittest
 
 import sys
diff --git a/erpnext/support/__init__.py b/erpnext/support/__init__.py
index 71ef684..b72925e 100644
--- a/erpnext/support/__init__.py
+++ b/erpnext/support/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{'doctype':'Role', 'role_name':'Support Team', 'name':'Support Team'},
 	{'doctype':'Role', 'role_name':'Support Manager', 'name':'Support Manager'},
diff --git a/erpnext/support/doctype/__init__.py b/erpnext/support/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/__init__.py
+++ b/erpnext/support/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/doctype/communication/__init__.py b/erpnext/support/doctype/communication/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/communication/__init__.py
+++ b/erpnext/support/doctype/communication/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/doctype/communication/communication.py b/erpnext/support/doctype/communication/communication.py
index 8382eb7..b046d2c 100644
--- a/erpnext/support/doctype/communication/communication.py
+++ b/erpnext/support/doctype/communication/communication.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import make_autoname
 
diff --git a/erpnext/support/doctype/customer_issue/__init__.py b/erpnext/support/doctype/customer_issue/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/customer_issue/__init__.py
+++ b/erpnext/support/doctype/customer_issue/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.py b/erpnext/support/doctype/customer_issue/customer_issue.py
index 0561ce0..1876169 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.py
+++ b/erpnext/support/doctype/customer_issue/customer_issue.py
@@ -16,6 +16,7 @@
 
 # Please edit this list and import only required elements
 
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/support/doctype/maintenance_schedule/__init__.py b/erpnext/support/doctype/maintenance_schedule/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/maintenance_schedule/__init__.py
+++ b/erpnext/support/doctype/maintenance_schedule/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
index 9ad9eb9..75300e1 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/support/doctype/maintenance_schedule_detail/__init__.py b/erpnext/support/doctype/maintenance_schedule_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/maintenance_schedule_detail/__init__.py
+++ b/erpnext/support/doctype/maintenance_schedule_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/doctype/maintenance_schedule_item/__init__.py b/erpnext/support/doctype/maintenance_schedule_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/maintenance_schedule_item/__init__.py
+++ b/erpnext/support/doctype/maintenance_schedule_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/doctype/maintenance_visit/__init__.py b/erpnext/support/doctype/maintenance_visit/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/maintenance_visit/__init__.py
+++ b/erpnext/support/doctype/maintenance_visit/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
index 1954def..5175ca9 100644
--- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
@@ -15,6 +15,7 @@
 # along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/support/doctype/maintenance_visit_purpose/__init__.py b/erpnext/support/doctype/maintenance_visit_purpose/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/maintenance_visit_purpose/__init__.py
+++ b/erpnext/support/doctype/maintenance_visit_purpose/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/doctype/support_ticket/__init__.py b/erpnext/support/doctype/support_ticket/__init__.py
index de596f9..bf69228 100644
--- a/erpnext/support/doctype/support_ticket/__init__.py
+++ b/erpnext/support/doctype/support_ticket/__init__.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import cstr, cint
 
@@ -66,7 +67,10 @@
 			import re
 			re_result = re.findall('(?<=\<)(\S+)(?=\>)', mail.mail['From'])
 			if re_result and re_result[0]: email_id = re_result[0]
-
+		
+		from webnotes.utils import decode_email_header
+		
+		full_email_id = decode_email_header(mail.mail['From'])
 
 		for thread_id in thread_list:
 			exists = webnotes.conn.sql("""\
@@ -78,7 +82,7 @@
 				from webnotes.model.code import get_obj
 				
 				st = get_obj('Support Ticket', thread_id)
-				st.make_response_record(content, mail.mail['From'], content_type)
+				st.make_response_record(content, full_email_id, content_type)
 				
 				# to update modified date
 				#webnotes.conn.set(st.doc, 'status', 'Open')
@@ -97,8 +101,10 @@
 		from webnotes.model.doc import Document
 		d = Document('Support Ticket')
 		d.description = content
-		d.subject = mail.mail['Subject']
-		d.raised_by = mail.mail['From']
+		
+		d.subject = decode_email_header(mail.mail['Subject'])
+		
+		d.raised_by = full_email_id
 		d.content_type = content_type
 		d.status = 'Open'
 		d.naming_series = opts and opts.split("\n")[0] or 'SUP'
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.py b/erpnext/support/doctype/support_ticket/support_ticket.py
index 384d26f..d04f473 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.py
+++ b/erpnext/support/doctype/support_ticket/support_ticket.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import make_autoname
 
diff --git a/erpnext/support/doctype/support_ticket_response/__init__.py b/erpnext/support/doctype/support_ticket_response/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/doctype/support_ticket_response/__init__.py
+++ b/erpnext/support/doctype/support_ticket_response/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/page/__init__.py b/erpnext/support/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/page/__init__.py
+++ b/erpnext/support/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/page/support_home/__init__.py b/erpnext/support/page/support_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/page/support_home/__init__.py
+++ b/erpnext/support/page/support_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/search_criteria/__init__.py b/erpnext/support/search_criteria/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/search_criteria/__init__.py
+++ b/erpnext/support/search_criteria/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/search_criteria/amc_summary/__init__.py b/erpnext/support/search_criteria/amc_summary/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/search_criteria/amc_summary/__init__.py
+++ b/erpnext/support/search_criteria/amc_summary/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/search_criteria/amc_summary/amc_summary.py b/erpnext/support/search_criteria/amc_summary/amc_summary.py
index f0b7631..926da01 100644
--- a/erpnext/support/search_criteria/amc_summary/amc_summary.py
+++ b/erpnext/support/search_criteria/amc_summary/amc_summary.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # ADD NEW COLUMNS
+from __future__ import unicode_literals
 row_list = [['Item Group','Data','150px',''],
             ['Out of AMC','Int','150px',''],
             ['Under AMC','Int','150px',''],
diff --git a/erpnext/support/search_criteria/customer_issues/__init__.py b/erpnext/support/search_criteria/customer_issues/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/search_criteria/customer_issues/__init__.py
+++ b/erpnext/support/search_criteria/customer_issues/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/__init__.py b/erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/__init__.py
+++ b/erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/search_criteria/maintenance_schedule_details/__init__.py b/erpnext/support/search_criteria/maintenance_schedule_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/search_criteria/maintenance_schedule_details/__init__.py
+++ b/erpnext/support/search_criteria/maintenance_schedule_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/search_criteria/warranty_amc_expiry_details/__init__.py b/erpnext/support/search_criteria/warranty_amc_expiry_details/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/search_criteria/warranty_amc_expiry_details/__init__.py
+++ b/erpnext/support/search_criteria/warranty_amc_expiry_details/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/search_criteria/warranty_amc_summary/__init__.py b/erpnext/support/search_criteria/warranty_amc_summary/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/support/search_criteria/warranty_amc_summary/__init__.py
+++ b/erpnext/support/search_criteria/warranty_amc_summary/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.py b/erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.py
index 17f36c0..8c102c3 100644
--- a/erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.py
+++ b/erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
+from __future__ import unicode_literals
 opt = filter_values.get('based_on')
 opt_dict = {'Territory':'territory', 'Item Group':'item_group'}
 
diff --git a/erpnext/utilities/__init__.py b/erpnext/utilities/__init__.py
index f6f3859..a6e4625 100644
--- a/erpnext/utilities/__init__.py
+++ b/erpnext/utilities/__init__.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 @webnotes.whitelist()
diff --git a/erpnext/utilities/cleanup_data.py b/erpnext/utilities/cleanup_data.py
index 60b54ec..f433790 100644
--- a/erpnext/utilities/cleanup_data.py
+++ b/erpnext/utilities/cleanup_data.py
@@ -7,6 +7,7 @@
 # This script can be executed from lib/wnf.py using 
 # lib/wnf.py --cleanup-data
 
+from __future__ import unicode_literals
 import sys
 sys.path.append("lib/py")
 sys.path.append(".")
diff --git a/erpnext/utilities/doctype/__init__.py b/erpnext/utilities/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/__init__.py
+++ b/erpnext/utilities/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/address/__init__.py b/erpnext/utilities/doctype/address/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/address/__init__.py
+++ b/erpnext/utilities/doctype/address/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/address/address.py b/erpnext/utilities/doctype/address/address.py
index cd6a188..f9e53e7 100644
--- a/erpnext/utilities/doctype/address/address.py
+++ b/erpnext/utilities/doctype/address/address.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.model.doc import Document
diff --git a/erpnext/utilities/doctype/answer/__init__.py b/erpnext/utilities/doctype/answer/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/answer/__init__.py
+++ b/erpnext/utilities/doctype/answer/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/bulk_rename_tool/__init__.py b/erpnext/utilities/doctype/bulk_rename_tool/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/utilities/doctype/bulk_rename_tool/__init__.py
+++ /dev/null
diff --git a/erpnext/utilities/doctype/bulk_rename_tool/bulk_rename_tool.py b/erpnext/utilities/doctype/bulk_rename_tool/bulk_rename_tool.py
deleted file mode 100644
index c1a6d3f..0000000
--- a/erpnext/utilities/doctype/bulk_rename_tool/bulk_rename_tool.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Please edit this list and import only required elements
-import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-	
-	# bulk rename
-	def do_rename(self):
-		import csv 
-		data = csv.reader(self.get_csv_data().splitlines())
-		
-		updated = 0
-				
-		msgprint(self.doc.rename_doctype)
-		
-		if self.doc.rename_doctype == 'Account':
-			for line in data:
-				if len(line)==2:
-					rec = sql("select tc.abbr, ta.name from `tabAccount` ta, `tabCompany` tc where ta.company = tc.name and ta.account_name = %s", line[0], as_dict=1)
-					if rec:										
-						new_name = line[1] + ' - ' + rec[0]['abbr']						
-						
-						webnotes.conn.begin()
-						webnotes.model.rename(self.doc.rename_doctype, rec[0]['name'], new_name)						
-						sql("update `tabAccount` set account_name = '%s' where name = '%s'" %(line[1],new_name))						
-						webnotes.conn.commit()												
-						
-						updated += 1			
-				else:
-					msgprint("[Ignored] Incorrect format: %s" % str(line))		
-		else:		
-			for line in data:
-				if len(line)==2:
-				
-					webnotes.conn.begin()				
-
-					obj = get_obj(self.doc.rename_doctype, line[0])
-					if hasattr(obj, 'on_rename'):
-						obj.on_rename(line[1],line[0])			
-
-					webnotes.model.rename(self.doc.rename_doctype, line[0], line[1])
-					
-					webnotes.conn.commit()
-						
-					updated += 1
-				else:
-					msgprint("[Ignored] Incorrect format: %s" % str(line))
-		
-		
-		msgprint("<b>%s</b> items updated" % updated)		
-
-	# Update CSV data
-	def get_csv_data(self):
-		if not self.doc.file_list:
-		  msgprint("File not attached!")
-		  raise Exception
-
-		fid = self.doc.file_list.split(',')[1]
-		  
-		from webnotes.utils import file_manager
-		fn, content = file_manager.get_file(fid)
-		
-		# NOTE: Don't know why this condition exists
-		if not isinstance(content, basestring) and hasattr(content, 'tostring'):
-		  content = content.tostring()
-
-		return content
diff --git a/erpnext/utilities/doctype/bulk_rename_tool/bulk_rename_tool.txt b/erpnext/utilities/doctype/bulk_rename_tool/bulk_rename_tool.txt
deleted file mode 100644
index d8f9c00..0000000
--- a/erpnext/utilities/doctype/bulk_rename_tool/bulk_rename_tool.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-# DocType, Bulk Rename Tool
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:46',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:45:46',
-		'modified_by': u'Administrator',
-		'owner': u'Administrator'
-	},
-
-	# These values are common for all DocType
-	{
-		'_last_update': u'1322549701',
-		'allow_attach': 1,
-		'autoname': u'field:rename_doctype',
-		'colour': u'White:FFF',
-		'default_print_format': u'Standard',
-		'doctype': 'DocType',
-		'is_submittable': 1,
-		'module': u'Utilities',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'show_in_menu': 0,
-		'version': 8
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'name': '__common__',
-		'parent': u'Bulk Rename Tool',
-		'parentfield': u'fields',
-		'parenttype': u'DocType'
-	},
-
-	# These values are common for all DocPerm
-	{
-		'doctype': u'DocPerm',
-		'name': '__common__',
-		'parent': u'Bulk Rename Tool',
-		'parentfield': u'permissions',
-		'parenttype': u'DocType',
-		'read': 1,
-		'role': u'System Manager'
-	},
-
-	# DocType, Bulk Rename Tool
-	{
-		'doctype': 'DocType',
-		'name': u'Bulk Rename Tool'
-	},
-
-	# DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'rename_doctype',
-		'fieldtype': u'Data',
-		'label': u'Rename DocType',
-		'options': u'Suggest',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'file_list',
-		'fieldtype': u'Text',
-		'hidden': 1,
-		'label': u'File List',
-		'no_copy': 1,
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'rename',
-		'fieldtype': u'Button',
-		'label': u'Rename',
-		'options': u'do_rename',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'depends_on': u'eval:doc.amended_from',
-		'description': u'The date at which current entry is corrected in the system.',
-		'doctype': u'DocField',
-		'fieldname': u'amendment_date',
-		'fieldtype': u'Date',
-		'label': u'Amendment Date',
-		'no_copy': 1,
-		'permlevel': 0,
-		'print_hide': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amended_from',
-		'fieldtype': u'Link',
-		'label': u'Amended From',
-		'no_copy': 1,
-		'options': u'Sales Invoice',
-		'permlevel': 1,
-		'print_hide': 1
-	}
-]
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/contact/__init__.py b/erpnext/utilities/doctype/contact/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/contact/__init__.py
+++ b/erpnext/utilities/doctype/contact/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/contact/contact.py b/erpnext/utilities/doctype/contact/contact.py
index 3b5131f..f384ebb 100644
--- a/erpnext/utilities/doctype/contact/contact.py
+++ b/erpnext/utilities/doctype/contact/contact.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.model.doc import Document
diff --git a/erpnext/utilities/doctype/gl_mapper/__init__.py b/erpnext/utilities/doctype/gl_mapper/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/gl_mapper/__init__.py
+++ b/erpnext/utilities/doctype/gl_mapper/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/gl_mapper_detail/__init__.py b/erpnext/utilities/doctype/gl_mapper_detail/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/gl_mapper_detail/__init__.py
+++ b/erpnext/utilities/doctype/gl_mapper_detail/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/profile_control/__init__.py b/erpnext/utilities/doctype/profile_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/profile_control/__init__.py
+++ b/erpnext/utilities/doctype/profile_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/profile_control/profile_control.py b/erpnext/utilities/doctype/profile_control/profile_control.py
index ef1a6b0..570be06 100644
--- a/erpnext/utilities/doctype/profile_control/profile_control.py
+++ b/erpnext/utilities/doctype/profile_control/profile_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/utilities/doctype/question/__init__.py b/erpnext/utilities/doctype/question/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/question/__init__.py
+++ b/erpnext/utilities/doctype/question/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/question/question.py b/erpnext/utilities/doctype/question/question.py
index c104cfa..6a6fd5b 100644
--- a/erpnext/utilities/doctype/question/question.py
+++ b/erpnext/utilities/doctype/question/question.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
diff --git a/erpnext/utilities/doctype/rename_tool/__init__.py b/erpnext/utilities/doctype/rename_tool/__init__.py
index e69de29..baffc48 100755
--- a/erpnext/utilities/doctype/rename_tool/__init__.py
+++ b/erpnext/utilities/doctype/rename_tool/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/rename_tool/rename_tool.py b/erpnext/utilities/doctype/rename_tool/rename_tool.py
index 6c4b058..2a2ad92 100644
--- a/erpnext/utilities/doctype/rename_tool/rename_tool.py
+++ b/erpnext/utilities/doctype/rename_tool/rename_tool.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 class DocType:
 	def __init__(self, d, dl=[]):
 		self.doc, self.doclist = d, dl
diff --git a/erpnext/utilities/doctype/reposting_tool/__init__.py b/erpnext/utilities/doctype/reposting_tool/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/reposting_tool/__init__.py
+++ b/erpnext/utilities/doctype/reposting_tool/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/reposting_tool/reposting_tool.py b/erpnext/utilities/doctype/reposting_tool/reposting_tool.py
index 646e09b..feb1ea0 100644
--- a/erpnext/utilities/doctype/reposting_tool/reposting_tool.py
+++ b/erpnext/utilities/doctype/reposting_tool/reposting_tool.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/utilities/doctype/sms_control/__init__.py b/erpnext/utilities/doctype/sms_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/sms_control/__init__.py
+++ b/erpnext/utilities/doctype/sms_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/sms_control/sms_control.py b/erpnext/utilities/doctype/sms_control/sms_control.py
index 42a38fd..9f74e35 100644
--- a/erpnext/utilities/doctype/sms_control/sms_control.py
+++ b/erpnext/utilities/doctype/sms_control/sms_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import cint, flt, load_json, nowdate, cstr
diff --git a/erpnext/utilities/doctype/sms_log/__init__.py b/erpnext/utilities/doctype/sms_log/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/sms_log/__init__.py
+++ b/erpnext/utilities/doctype/sms_log/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/sms_receiver/__init__.py b/erpnext/utilities/doctype/sms_receiver/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/sms_receiver/__init__.py
+++ b/erpnext/utilities/doctype/sms_receiver/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/trash_control/__init__.py b/erpnext/utilities/doctype/trash_control/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/doctype/trash_control/__init__.py
+++ b/erpnext/utilities/doctype/trash_control/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/doctype/trash_control/trash_control.py b/erpnext/utilities/doctype/trash_control/trash_control.py
index c9643b1..1b4ec8a 100644
--- a/erpnext/utilities/doctype/trash_control/trash_control.py
+++ b/erpnext/utilities/doctype/trash_control/trash_control.py
@@ -15,6 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
diff --git a/erpnext/utilities/page/__init__.py b/erpnext/utilities/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/__init__.py
+++ b/erpnext/utilities/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/calendar/__init__.py b/erpnext/utilities/page/calendar/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/calendar/__init__.py
+++ b/erpnext/utilities/page/calendar/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/calendar/calendar.py b/erpnext/utilities/page/calendar/calendar.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/calendar/calendar.py
+++ b/erpnext/utilities/page/calendar/calendar.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/markdown_reference/__init__.py b/erpnext/utilities/page/markdown_reference/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/markdown_reference/__init__.py
+++ b/erpnext/utilities/page/markdown_reference/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/markdown_reference/markdown_reference.py b/erpnext/utilities/page/markdown_reference/markdown_reference.py
index f807eb0..fbba099 100644
--- a/erpnext/utilities/page/markdown_reference/markdown_reference.py
+++ b/erpnext/utilities/page/markdown_reference/markdown_reference.py
@@ -1 +1,2 @@
+from __future__ import unicode_literals
 import webnotes
\ No newline at end of file
diff --git a/erpnext/utilities/page/messages/__init__.py b/erpnext/utilities/page/messages/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/messages/__init__.py
+++ b/erpnext/utilities/page/messages/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/messages/messages.py b/erpnext/utilities/page/messages/messages.py
index db27805..9627d99 100644
--- a/erpnext/utilities/page/messages/messages.py
+++ b/erpnext/utilities/page/messages/messages.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 @webnotes.whitelist()
diff --git a/erpnext/utilities/page/question_view/__init__.py b/erpnext/utilities/page/question_view/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/question_view/__init__.py
+++ b/erpnext/utilities/page/question_view/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/question_view/question_view.py b/erpnext/utilities/page/question_view/question_view.py
index c7d927e..7829385 100644
--- a/erpnext/utilities/page/question_view/question_view.py
+++ b/erpnext/utilities/page/question_view/question_view.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import load_json, cstr, now
 
diff --git a/erpnext/utilities/page/questions/__init__.py b/erpnext/utilities/page/questions/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/questions/__init__.py
+++ b/erpnext/utilities/page/questions/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/questions/questions.py b/erpnext/utilities/page/questions/questions.py
index 7420d5f..459a32f 100644
--- a/erpnext/utilities/page/questions/questions.py
+++ b/erpnext/utilities/page/questions/questions.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 
 from webnotes.utils import load_json, cint, cstr
diff --git a/erpnext/utilities/page/todo/__init__.py b/erpnext/utilities/page/todo/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/todo/__init__.py
+++ b/erpnext/utilities/page/todo/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/todo/todo.css b/erpnext/utilities/page/todo/todo.css
index 499d891..6c1ec36 100644
--- a/erpnext/utilities/page/todo/todo.css
+++ b/erpnext/utilities/page/todo/todo.css
@@ -23,10 +23,6 @@
 	float: right;
 }
 
-.todoitem .ref_link {
-	line-height: 18px;
-}
-
 .todoitem .description {
 	padding: 3px 0px;
 	display: inline-block;
diff --git a/erpnext/utilities/page/todo/todo.js b/erpnext/utilities/page/todo/todo.js
index 89c1ed8..39c8c2d 100644
--- a/erpnext/utilities/page/todo/todo.js
+++ b/erpnext/utilities/page/todo/todo.js
@@ -79,10 +79,10 @@
 		parent_list += " div.todo-content";
 		
 		if(todo.reference_name && todo.reference_type) {
-			todo.link = repl('<a href="#!Form/%(reference_type)s/%(reference_name)s">\
+			todo.link = repl('<br><a href="#!Form/%(reference_type)s/%(reference_name)s">\
 						%(reference_type)s: %(reference_name)s</a>', todo);
 		} else if(todo.reference_type) {
-			todo.link = repl('<a href="#!List/%(reference_type)s">\
+			todo.link = repl('<br><a href="#!List/%(reference_type)s">\
 						%(reference_type)s</a>', todo);
 		} else {
 			todo.link = '';
@@ -95,12 +95,10 @@
 			<div class="todoitem">\
 				<span class="label %(labelclass)s">%(priority)s</span>\
 				<span class="description">\
-					<span class="popup-on-click">\
 					<span class="help" style="margin-right: 7px">%(userdate)s</span>\
 					%(fullname)s%(desc)s\
-					</span>\
-					<span class="ref_link"><br>\
-					%(link)s</span>\
+					<span class="popup-on-click"><a href="#"> [edit]</a></span>\
+					<span class="ref_link">%(link)s</span>\
 				</span>\
 				<span class="close-span"><a href="#" class="close">&times;</a></span>\
 			</div>\
diff --git a/erpnext/utilities/page/todo/todo.py b/erpnext/utilities/page/todo/todo.py
index 05c695d..37f9295 100644
--- a/erpnext/utilities/page/todo/todo.py
+++ b/erpnext/utilities/page/todo/todo.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import Document
 
diff --git a/erpnext/utilities/page/trash/__init__.py b/erpnext/utilities/page/trash/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/trash/__init__.py
+++ b/erpnext/utilities/page/trash/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/users/__init__.py b/erpnext/utilities/page/users/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/users/__init__.py
+++ b/erpnext/utilities/page/users/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/page/users/users.html b/erpnext/utilities/page/users/users.html
index fe2f000..e69de29 100644
--- a/erpnext/utilities/page/users/users.html
+++ b/erpnext/utilities/page/users/users.html
@@ -1,13 +0,0 @@
-<div class="layout-wrapper">
-	<a class="close" onclick="window.history.back();">&times;</a>		
-	<h1>Users</h1>
-	<hr>
-	<div class="help" style="margin-bottom: 20px">Add, disable, delete users and change their roles, passwords and security settings</div>
-	<div style="margin: 11px">
-		<button class="btn btn-small add-user" onclick="wn.pages.users.add_user()"
-			><i class="icon-plus"></i> Add User</button>
-	</div>
-	<div class="users-area">
-	</div>
-	<div style="clear: both"></div>
-</div>
\ No newline at end of file
diff --git a/erpnext/utilities/page/users/users.js b/erpnext/utilities/page/users/users.js
index 517c3cf..ee05001 100644
--- a/erpnext/utilities/page/users/users.js
+++ b/erpnext/utilities/page/users/users.js
@@ -16,26 +16,37 @@
 
 $.extend(wn.pages.users, {
 	onload: function(wrapper) {
-		wn.pages.users.profiles = {};
-		wn.pages.users.refresh();
-		wn.pages.users.setup();
-		wn.pages.users.role_editor = new erpnext.RoleEditor();
+		var w = wn.pages.users;
+		wn.ui.make_app_page({
+			parent: w,
+			title: "Users",
+			single_column: true
+		});
+		w.profiles = {};
+		w.refresh();
+		w.setup();
+		w.role_editor = new erpnext.RoleEditor();
 	},
 	setup: function() {
+		wn.pages.users.appframe.add_button('+ Add User', function() {
+			wn.pages.users.add_user();
+		});
+		
 		// set roles
-		$('.users-area').on('click', '.btn.user-roles', function() {
+		var w = wn.pages.users;
+		$(w).on('click', '.btn.user-roles', function() {
 			var uid = $(this).parent().parent().attr('data-name');
 			wn.pages.users.role_editor.show(uid);
 		});
 
 		// settings
-		$('.users-area').on('click', '.btn.user-settings', function() {
+		$(w).on('click', '.btn.user-settings', function() {
 			var uid = $(this).parent().parent().attr('data-name');
 			wn.pages.users.show_settings(uid);
 		});
 		
 		// delete
-		$('.users-area').on('click', 'a.close', function() {
+		$(w).on('click', 'a.close', function() {
 			$card = $(this).parent();
 			var uid = $card.attr('data-name');
 			$card.css('opacity', 0.6);
@@ -55,7 +66,7 @@
 		wn.call({
 			method:'utilities.page.users.users.get',
 			callback: function(r, rt) {
-				$('.users-area').empty();
+				$(wn.pages.users).find('.layout-main').empty();
 				for(var i in r.message) {
 					var p = r.message[i];
 					wn.pages.users.profiles[p.name] = p;
@@ -91,7 +102,7 @@
 		if(!data.enabled) 
 			data.delete_html = '<a class="close" title="delete">&times;</a>';
 		
-		$('.users-area').append(repl('<div class="user-card" data-name="%(name)s">\
+		$(wn.pages.users).find('.layout-main').append(repl('<div class="user-card" data-name="%(name)s">\
 			%(delete_html)s\
 			<img src="%(imgsrc)s">\
 			<div class="user-info">\
@@ -103,7 +114,7 @@
 		</div>', data));
 		
 		if(!data.enabled) {
-			$('.users-area .user-card:last')
+			$(wn.pages.users).find('.layout-main .user-card:last')
 				.addClass('disabled')
 				.find('.user-fullname').html('Disabled');
 		}
@@ -225,8 +236,7 @@
 		var me = wn.pages.users;
 		var active_users = $('.user-card:not(.disabled)');
 		if(wn.boot.max_users && (active_users.length >= wn.boot.max_users)) {
-			msgprint(repl("Alas! <br />\
-			You already have <b>%(active_users)s</b> active users, \
+			msgprint(repl("You already have <b>%(active_users)s</b> active users, \
 			which is the maximum number that you are currently allowed to add. <br /><br /> \
 			So, to add more users, you can:<br /> \
 			1. <b>Upgrade to the unlimited users plan</b>, or<br /> \
diff --git a/erpnext/utilities/page/users/users.py b/erpnext/utilities/page/users/users.py
index 07504a8..9878d3c 100644
--- a/erpnext/utilities/page/users/users.py
+++ b/erpnext/utilities/page/users/users.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 import json
 
@@ -30,9 +31,13 @@
 
 @webnotes.whitelist()
 def get_roles(arg=None):
-	"""return all roles"""
+	"""return all roles except standard"""
+	return _get_roles(webnotes.form_dict['uid'])
+
+def _get_roles(user):
+	"""return all roles except standard"""
 	return [r[0] for r in webnotes.conn.sql("""select name from tabRole
-		where name not in ('Administrator', 'Guest', 'All') order by name""")]
+		where name not in ('Administrator', 'Guest', 'All') order by name""", user)]
 
 @webnotes.whitelist()
 def get_user_roles(arg=None):
diff --git a/erpnext/utilities/page/wip_monitor/__init__.py b/erpnext/utilities/page/wip_monitor/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/utilities/page/wip_monitor/__init__.py
+++ b/erpnext/utilities/page/wip_monitor/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 3bc7821..0e10eea 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import load_json, cint, cstr, flt, get_defaults
 from webnotes.model.doc import Document, addchild, getchildren
diff --git a/erpnext/website/__init__.py b/erpnext/website/__init__.py
index eb3a055..dbf65dd 100644
--- a/erpnext/website/__init__.py
+++ b/erpnext/website/__init__.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 install_docs = [
 	{"doctype":"Role", "role_name":"Blogger", "name":"Blogger"},
 	{"doctype":"Role", "role_name":"Website Manager", "name":"Website Manager"},
diff --git a/erpnext/website/blog.py b/erpnext/website/blog.py
index ea1992b..e89e2df 100644
--- a/erpnext/website/blog.py
+++ b/erpnext/website/blog.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 
 @webnotes.whitelist(allow_guest=True)
@@ -16,7 +17,8 @@
 		select
 			cache.name as name, cache.html as content,
 			blog.owner as owner, blog.creation as published,
-			blog.title as title
+			blog.title as title, (select count(name) from `tabComment` where
+				comment_doctype='Blog' and comment_docname=blog.name) as comments
 		from `tabWeb Cache` cache, `tabBlog` blog
 		where cache.doc_type = 'Blog' and blog.page_name = cache.name
 		order by published desc, name asc"""
@@ -85,25 +87,43 @@
 		}
 	"""
 	import webnotes
+	import webnotes.utils, markdown2
+	import webnotes.widgets.form.comments	
+	import website.web_cache
 	
 	if not args: args = webnotes.form_dict
+	args['comment'] = markdown2.markdown(args.get('comment') or '')
 	
-	import webnotes.widgets.form.comments
 	comment = webnotes.widgets.form.comments.add_comment(args)
 	
 	# since comments are embedded in the page, clear the web cache
-	import website.web_cache
 	website.web_cache.clear_cache(args.get('page_name'),
 		args.get('comment_doctype'), args.get('comment_docname'))
 	
-	import webnotes.utils
 	
 	comment['comment_date'] = webnotes.utils.pretty_date(comment['creation'])
 	template_args = { 'comment_list': [comment], 'template': 'html/comment.html' }
 	
 	# get html of comment row
 	comment_html = website.web_cache.build_html(template_args)
-
+	
+	# notify commentors 
+	commentors = [d[0] for d in webnotes.conn.sql("""select comment_by from tabComment where
+		comment_doctype='Blog' and comment_docname=%s and
+		ifnull(unsubscribed, 0)=0""", args.get('comment_docname'))]
+	
+	blog = webnotes.conn.sql("""select * from tabBlog where name=%s""", 
+		args.get('comment_docname'), as_dict=1)[0]
+	
+	from webnotes.utils.email_lib.bulk import send
+	send(recipients=list(set(commentors + [blog['owner']])), 
+		doctype='Comment', 
+		email_field='comment_by', 
+		first_name_field="comment_by_fullname",
+		last_name_field="NA", 
+		subject='New Comment on Blog: ' + blog['title'], 
+		message='%(comment)s<p>By %(comment_by_fullname)s</p>' % args)
+	
 	return comment_html
 
 @webnotes.whitelist(allow_guest=True)
@@ -118,7 +138,8 @@
 		lead = Document('Lead', name[0][0])
 	else:
 		lead = Document('Lead')
-		
+	
+	if not lead.source: lead.source = 'Blog'
 	lead.unsubscribed = 0
 	lead.blog_subscriber = 1
 	lead.lead_name = full_name
diff --git a/erpnext/website/doctype/__init__.py b/erpnext/website/doctype/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/doctype/__init__.py
+++ b/erpnext/website/doctype/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/doctype/blog/__init__.py b/erpnext/website/doctype/blog/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/doctype/blog/__init__.py
+++ b/erpnext/website/doctype/blog/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/doctype/blog/blog.py b/erpnext/website/doctype/blog/blog.py
index 786941c..c1b25f6 100644
--- a/erpnext/website/doctype/blog/blog.py
+++ b/erpnext/website/doctype/blog/blog.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 """
 record of files
 
diff --git a/erpnext/website/doctype/related_page/__init__.py b/erpnext/website/doctype/related_page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/doctype/related_page/__init__.py
+++ b/erpnext/website/doctype/related_page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/doctype/style_settings/__init__.py b/erpnext/website/doctype/style_settings/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/doctype/style_settings/__init__.py
+++ b/erpnext/website/doctype/style_settings/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/doctype/style_settings/style_settings.py b/erpnext/website/doctype/style_settings/style_settings.py
index 233ae1d..face729 100644
--- a/erpnext/website/doctype/style_settings/style_settings.py
+++ b/erpnext/website/doctype/style_settings/style_settings.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
diff --git a/erpnext/website/doctype/top_bar_item/__init__.py b/erpnext/website/doctype/top_bar_item/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/doctype/top_bar_item/__init__.py
+++ b/erpnext/website/doctype/top_bar_item/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/doctype/web_cache/__init__.py b/erpnext/website/doctype/web_cache/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/doctype/web_cache/__init__.py
+++ b/erpnext/website/doctype/web_cache/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/doctype/web_page/__init__.py b/erpnext/website/doctype/web_page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/doctype/web_page/__init__.py
+++ b/erpnext/website/doctype/web_page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/doctype/web_page/web_page.py b/erpnext/website/doctype/web_page/web_page.py
index 2a3e84a..3cfa425 100644
--- a/erpnext/website/doctype/web_page/web_page.py
+++ b/erpnext/website/doctype/web_page/web_page.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 import website.utils
 import website.web_page
diff --git a/erpnext/website/doctype/website_settings/__init__.py b/erpnext/website/doctype/website_settings/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/doctype/website_settings/__init__.py
+++ b/erpnext/website/doctype/website_settings/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/doctype/website_settings/website_settings.py b/erpnext/website/doctype/website_settings/website_settings.py
index 4ceef6e..47a1245 100644
--- a/erpnext/website/doctype/website_settings/website_settings.py
+++ b/erpnext/website/doctype/website_settings/website_settings.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
diff --git a/erpnext/website/page/__init__.py b/erpnext/website/page/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/page/__init__.py
+++ b/erpnext/website/page/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.py b/erpnext/website/page/unsubscribe/unsubscribe.py
new file mode 100644
index 0000000..9e32fc7
--- /dev/null
+++ b/erpnext/website/page/unsubscribe/unsubscribe.py
@@ -0,0 +1,27 @@
+# ERPNext - web based ERP (http://erpnext.com)
+# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import unicode_literals
+import webnotes
+
+@webnotes.whitelist()
+def unsubscribe(arg):
+	"""unsubscribe from lists"""
+	lists = [['Blog Subscriber', 'name']]
+	for l in lists:
+		webnotes.conn.sql("""delete from `tab%s` where %s=%s""" % (l[0], l[1], '%s'), arg)
+		
+	webnotes.msgprint('Unsubscribed!')
\ No newline at end of file
diff --git a/erpnext/website/page/website_home/__init__.py b/erpnext/website/page/website_home/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/page/website_home/__init__.py
+++ b/erpnext/website/page/website_home/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/product.py b/erpnext/website/product.py
index aff15d9..1c0d6d9 100644
--- a/erpnext/website/product.py
+++ b/erpnext/website/product.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 import webnotes
 
 @webnotes.whitelist(allow_guest=True)
diff --git a/erpnext/website/templates/__init__.py b/erpnext/website/templates/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/website/templates/__init__.py
+++ b/erpnext/website/templates/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/website/templates/js/blog.js b/erpnext/website/templates/js/blog.js
index 78dd3b7..76b9fb6 100644
--- a/erpnext/website/templates/js/blog.js
+++ b/erpnext/website/templates/js/blog.js
@@ -22,10 +22,19 @@
 		hide_refresh: true,
 		no_toolbar: true,
 		render_row: function(parent, data) {
+			if(!data.comments) {
+				data.comment_text = 'No comments yet.'
+			} else if (data.comments=1) {
+				data.comment_text = '1 comment.'
+			} else {
+				data.comment_text = data.comments + ' comments.'
+			} 
+			
 			if(data.content && data.content.length==1000) {
 				data.content += repl('... <a href="%(name)s.html">(read on)</a>', data);
 			}
 			parent.innerHTML = repl('<h2><a href="%(name)s.html">%(title)s</a></h2>\
+				<div class="help">%(comment_text)s</div>\
 				%(content)s<br /><br />', data);
 		},
 		page_length: 10
diff --git a/erpnext/website/templates/js/login.js b/erpnext/website/templates/js/login.js
index 29e4922..4ca18c9 100644
--- a/erpnext/website/templates/js/login.js
+++ b/erpnext/website/templates/js/login.js
@@ -59,6 +59,7 @@
       args['remember_me'] = 1;
 
 	$('#login_btn').set_working();
+	$('#login_message').empty();
 	
     $c("login", args, erpnext.login.onLoginReply);
 
diff --git a/erpnext/website/utils.py b/erpnext/website/utils.py
index 470dbd7..5393a3d 100644
--- a/erpnext/website/utils.py
+++ b/erpnext/website/utils.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.model.doc import Document
 
@@ -53,9 +54,9 @@
 	except Exception, e:
 		html = get_html('404')
 
-	print "Content-Type: text/html"
-	print
-	print html.encode('utf-8')
+	from webnotes.handler import eprint, print_zip
+	eprint("Content-Type: text/html")
+	print_zip(html)
 	
 def get_html(page_name):
 	"""get page html"""
diff --git a/erpnext/website/web_cache.py b/erpnext/website/web_cache.py
index e08499b..7b3de0a 100644
--- a/erpnext/website/web_cache.py
+++ b/erpnext/website/web_cache.py
@@ -16,6 +16,7 @@
 
 # html generation functions
 
+from __future__ import unicode_literals
 template_map = {
 	'Web Page': 'html/web_page.html',
 	'Blog': 'html/blog_page.html',
diff --git a/erpnext/website/web_page.py b/erpnext/website/web_page.py
index 1058d7f..2e04982 100644
--- a/erpnext/website/web_page.py
+++ b/erpnext/website/web_page.py
@@ -14,6 +14,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import unicode_literals
 import webnotes
 import website.utils
 import website.web_cache
diff --git a/install_erpnext.py b/install_erpnext.py
index 75a44ae..240eca6 100644
--- a/install_erpnext.py
+++ b/install_erpnext.py
@@ -1,4 +1,5 @@
 #!/usr/bin/python
+from __future__ import unicode_literals
 import os, commands
 
 # ask for root mysql password
diff --git a/public/css/all-app.css b/public/css/all-app.css
index dcc2138..487290b 100644
--- a/public/css/all-app.css
+++ b/public/css/all-app.css
@@ -2077,7 +2077,7 @@
 div.comment { color: #444; }
 
 .small {
-	font-size: 11px;
+	font-size: 12px;
 }
 
 .help {
@@ -2262,11 +2262,27 @@
 	position: fixed;
 	bottom: 5px;
 	left: 5px;
-	height: 40px;
-	width: 40px;
+	height: 30px;
+	width: 30px;
 	background: url('../images/erpnext-fade.png') no-repeat top left;
 }
 
+.markdown p {
+	font-size: 13px;
+}
+
+.markdown h1 {
+	margin-bottom: 9px;
+}
+
+.markdown h2 {
+	margin-bottom: 7px;
+}
+
+.markdown h3, .markdown h4 {
+	margin-bottom: 5px;
+}
+
 /*
  *	lib/css/legacy/messages.css
  */
@@ -2277,6 +2293,14 @@
 
 div.fetching { color: #888; text-align:right; }
 
+.msgprint {
+	min-height: 60px; 
+	max-height: 500px;
+	padding: 9px;
+	color: #333;
+	overflow: auto;
+}
+
 div.notice {
 	postion: absolute;
 	background-color: #000;
@@ -2302,24 +2326,17 @@
 }
 
 .help_box, .help-box {
-	background-color:#FFC;
-	font-size: 13px;
-	color: #864;
-	padding: 7px;
+	background-color: #ffe;
+	padding: 9px 9px 9px 9px;
+	border: 1px dashed #fc7;
 	margin: 11px 0px;
-	border: 1px solid #EEB;
 }
 
-.help_box_big {
-	background-color:#FFC;
-	color: #864;
-	padding: 7px;
-	margin: 7px 0px;
-	border: 1px solid #EEB;
-	text-align: center;
-	font-size: 14px;
+.help-box, .help-box p, .help-box h1, .help-box h2, .help-box h3, .help-box h4 {
+	color: #643;
 }
 
+
 /*
  *	lib/css/legacy/forms.css
  */
@@ -2337,6 +2354,11 @@
 	margin-right: 7px;
 }
 
+div.form-intro-area {
+	padding: 9px 9px 0px 9px;
+	margin: 0px 0px 15px 0px;
+}
+
 div.form-section-head {
 	margin: 11px -15px 3px -15px;
 	border-top: 1px solid #ccc;
@@ -2346,7 +2368,7 @@
 div.form-layout-row:first-child .form-section-head {
 	border-top: 0px solid #ccc !important;
 	margin-top: 0px;
-	padding-top: 15px;
+	padding-top: 0px;
 }
 
 div.form-section-head h3 {
@@ -2373,18 +2395,6 @@
 	border-top: 1px dashed #888;
 }
 
-div.grid_tbarlinks {
-	border-bottom: 0px;
-	background-color: #CCC;
-	padding: 4px 4px 2px 4px;
-	width: 190px;
-	float: right;
-
-	-moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;
-	-webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px;
-}
-
-
 div.dialog_frm {
 	position: relative;
 	margin: 10px;
@@ -2515,6 +2525,10 @@
 .input_area input, select, textarea { 
 	font-size: 14px;
 	padding: 2px;
+
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	border-radius: 3px;
 }
 
 .input_area input { 
@@ -2532,9 +2546,16 @@
 	width: 80%; 
 	padding: 2px 0px; 
 	font-size: 12px; 
+	background-color: #eee;
+	padding: 2px;
+	border: 1px solid #ddd;
+	
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	border-radius: 3px;	
 }
 .disp_area_no_val { 
-	height: 14px; 
+	min-height: 14px; 
 }
 
 .no_img {
@@ -2555,52 +2576,46 @@
 	background-color:#FEE;
 }
 
+.field-has-error {
+	border: 2px solid #C00;
+}
+
 /*
  *	lib/css/legacy/grid.css
  */
 
-
-/* Grid */
-
-
-/* --- Simple --- */
-.grid_wrapper_simple {
-	width: 100%;
-	margin-bottom: 8px;
-	border: 1px solid #AA9;
-}
-
-.grid_head_wrapper_simple {
-	padding: 0px;
-	border-bottom: 2px solid #AAA;
-}
-
-.grid_head_wrapper_simple td {
-	border-right: 1px solid #AA9;
-}
-
-.grid_head_wrapper_simple td div {
-	padding: 2px;
-}
-
-.grid_tab_wrapper_simple {
-}
-
-.grid_cell_simple {
-	padding: 2px;
-	background-color: #fff;
-	border-right: 1px solid #AA9;
-}
-
-
-/* --- Normal --- */
 .grid_wrapper {
 	position: relative;
 	overflow: auto;
 	border: 1px solid #AAA;
 	width: 100%;
 	margin-bottom: 8px;
-	background-color: #fff;	
+	background-color: #f8f8f8;	
+}
+
+div.grid_tbarlinks {
+	border-bottom: 0px;
+	padding: 4px 4px 2px 4px;
+	width: 190px;
+	float: right;
+	margin-right: 12px;
+
+	-webkit-border-top-left-radius: 5px;
+	-webkit-border-top-right-radius: 5px;
+	-moz-border-radius-topleft: 5px;
+	-moz-border-radius-topright: 5px;
+	border-top-left-radius: 5px;
+	border-top-right-radius: 5px;
+
+	background: #dddddd; /* Old browsers */
+	background: -moz-linear-gradient(top,  #dddddd 0%, #bbbbbb 100%); /* FF3.6+ */
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dddddd), color-stop(100%,#bbbbbb)); /* Chrome,Safari4+ */
+	background: -webkit-linear-gradient(top,  #dddddd 0%,#bbbbbb 100%); /* Chrome10+,Safari5.1+ */
+	background: -o-linear-gradient(top,  #dddddd 0%,#bbbbbb 100%); /* Opera 11.10+ */
+	background: -ms-linear-gradient(top,  #dddddd 0%,#bbbbbb 100%); /* IE10+ */
+	background: linear-gradient(to bottom,  #dddddd 0%,#bbbbbb 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#bbbbbb',GradientType=0 ); /* IE6-9 */
+
 }
 
 .grid_tab_wrapper {
@@ -2631,11 +2646,19 @@
 }
 
 .grid_head_table td {
-	background-color: #EEE;
 	border-right: 1px solid #AAA;
 	border-bottom: 1px solid #AAA;
 	height: 40px;
 	padding: 0px;
+
+	background: #eeeeee; /* Old browsers */
+	background: -moz-linear-gradient(top,  #eeeeee 0%, #cccccc 100%); /* FF3.6+ */
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */
+	background: -webkit-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */
+	background: -o-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */
+	background: -ms-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* IE10+ */
+	background: linear-gradient(to bottom,  #eeeeee 0%,#cccccc 100%); /* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */
 }
 
 .grid_head_table td div {
@@ -3302,6 +3325,8 @@
 	border-bottom: 1px solid #ccc;
 }
 
+
+
 /*
  *	lib/css/ui/fonts.css
  */
diff --git a/public/css/all-web.css b/public/css/all-web.css
index 971d32f..fca3485 100644
--- a/public/css/all-web.css
+++ b/public/css/all-web.css
@@ -1938,7 +1938,7 @@
 div.comment { color: #444; }
 
 .small {
-	font-size: 11px;
+	font-size: 12px;
 }
 
 .help {
@@ -2123,11 +2123,27 @@
 	position: fixed;
 	bottom: 5px;
 	left: 5px;
-	height: 40px;
-	width: 40px;
+	height: 30px;
+	width: 30px;
 	background: url('../images/erpnext-fade.png') no-repeat top left;
 }
 
+.markdown p {
+	font-size: 13px;
+}
+
+.markdown h1 {
+	margin-bottom: 9px;
+}
+
+.markdown h2 {
+	margin-bottom: 7px;
+}
+
+.markdown h3, .markdown h4 {
+	margin-bottom: 5px;
+}
+
 /*
  *	lib/css/legacy/messages.css
  */
@@ -2138,6 +2154,14 @@
 
 div.fetching { color: #888; text-align:right; }
 
+.msgprint {
+	min-height: 60px; 
+	max-height: 500px;
+	padding: 9px;
+	color: #333;
+	overflow: auto;
+}
+
 div.notice {
 	postion: absolute;
 	background-color: #000;
@@ -2163,24 +2187,17 @@
 }
 
 .help_box, .help-box {
-	background-color:#FFC;
-	font-size: 13px;
-	color: #864;
-	padding: 7px;
+	background-color: #ffe;
+	padding: 9px 9px 9px 9px;
+	border: 1px dashed #fc7;
 	margin: 11px 0px;
-	border: 1px solid #EEB;
 }
 
-.help_box_big {
-	background-color:#FFC;
-	color: #864;
-	padding: 7px;
-	margin: 7px 0px;
-	border: 1px solid #EEB;
-	text-align: center;
-	font-size: 14px;
+.help-box, .help-box p, .help-box h1, .help-box h2, .help-box h3, .help-box h4 {
+	color: #643;
 }
 
+
 /*
  *	lib/css/legacy/dialog.css
  */
@@ -2553,6 +2570,8 @@
 	border-bottom: 1px solid #ccc;
 }
 
+
+
 /*
  *	erpnext/startup/startup.css
  */
diff --git a/public/css/fields.css b/public/css/fields.css
index 3f8aaf3..db9f634 100644
--- a/public/css/fields.css
+++ b/public/css/fields.css
@@ -28,6 +28,10 @@
 .input_area input, select, textarea { 
 	font-size: 14px;
 	padding: 2px;
+
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	border-radius: 3px;
 }
 
 .input_area input { 
@@ -45,9 +49,16 @@
 	width: 80%; 
 	padding: 2px 0px; 
 	font-size: 12px; 
+	background-color: #eee;
+	padding: 2px;
+	border: 1px solid #ddd;
+	
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	border-radius: 3px;	
 }
 .disp_area_no_val { 
-	height: 14px; 
+	min-height: 14px; 
 }
 
 .no_img {
@@ -67,3 +78,7 @@
 .field-to-update {
 	background-color:#FEE;
 }
+
+.field-has-error {
+	border: 2px solid #C00;
+}
diff --git a/public/js/all-app.js b/public/js/all-app.js
index f7b34a3..081a800 100644
--- a/public/js/all-app.js
+++ b/public/js/all-app.js
@@ -190,19 +190,20 @@
 /*
  *	lib/js/wn/model.js
  */
-wn.provide('wn.model');wn.model={no_value_type:['Section Break','Column Break','HTML','Table','Button','Image'],new_names:{},with_doctype:function(doctype,callback){if(locals.DocType[doctype]){callback();}else{wn.call({method:'webnotes.widgets.form.load.getdoctype',args:{doctype:doctype},callback:callback});}},with_doc:function(doctype,name,callback){if(!name)name=doctype;if(locals[doctype]&&locals[doctype][name]){callback(name);}else{wn.call({method:'webnotes.widgets.form.load.getdoc',args:{doctype:doctype,name:name},callback:function(r){callback(name,r);}});}},can_delete:function(doctype){if(!doctype)return false;return wn.boot.profile.can_cancel.indexOf(doctype)!=-1;}}
+wn.provide('wn.model');wn.model={no_value_type:['Section Break','Column Break','HTML','Table','Button','Image'],new_names:{},with_doctype:function(doctype,callback){if(locals.DocType[doctype]){callback();}else{wn.call({method:'webnotes.widgets.form.load.getdoctype',args:{doctype:doctype},callback:callback});}},with_doc:function(doctype,name,callback){if(!name)name=doctype;if(locals[doctype]&&locals[doctype][name]){callback(name);}else{wn.call({method:'webnotes.widgets.form.load.getdoc',args:{doctype:doctype,name:name},callback:function(r){callback(name,r);}});}},can_delete:function(doctype){if(!doctype)return false;return wn.boot.profile.can_cancel.indexOf(doctype)!=-1;},has_value:function(dt,dn,fn){var val=locals[dt]&&locals[dt][dn]&&locals[dt][dn][fn];var df=wn.meta.get_docfield(dt,fn,dn);if(df.fieldtype=='Table'){var ret=false;$.each(locals[df.options]||{},function(k,d){if(d.parent==dn&&d.parenttype==dt&&d.parentfield==df.fieldname){ret=true;}});}else{var ret=!is_null(val);}
+return ret?true:false;}}
 /*
  *	lib/js/wn/meta.js
  */
 wn.provide('wn.meta.docfield_map');wn.provide('wn.meta.docfield_list');wn.provide('wn.meta.doctypes');$.extend(wn.meta,{add_field:function(df){wn.provide('wn.meta.docfield_map.'+df.parent);wn.meta.docfield_map[df.parent][df.fieldname||df.label]=df;if(!wn.meta.docfield_list[df.parent])
 wn.meta.docfield_list[df.parent]=[];for(var i in wn.meta.docfield_list[df.parent]){var d=wn.meta.docfield_list[df.parent][i];if(df.fieldname==d.fieldname)
 return;}
-wn.meta.docfield_list[df.parent].push(df);}});
+wn.meta.docfield_list[df.parent].push(df);},get_docfield:function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{return wn.meta.docfield_map[dt][fn];}}});
 /*
  *	lib/js/wn/misc/tools.js
  */
 wn.markdown=function(txt){if(!wn.md2html){wn.require('js/lib/showdown.js');wn.md2html=new Showdown.converter();}
-return wn.md2html.makeHtml(txt);}
+return'<div class="markdown">'+wn.md2html.makeHtml(txt)+'</div>';}
 /*
  *	lib/js/wn/misc/user.js
  */
@@ -363,7 +364,7 @@
 var me=this;if(label.tagName){var page=label;}else{var page=wn.pages[label];}
 if(!page){console.log('Page not found '+label);return;}
 if(this.page){$(this.page).toggle(false);$(this.page).trigger('hide');}
-this.page=page;$(this.page).fadeIn();$(this.page).trigger('show');this.page._route=window.location.hash;document.title=this.page.label;scroll(0,0);return this.page;}});wn.views.add_module_btn=function(parent,module){$(parent).append(repl('<span class="label" style="margin-right: 8px; cursor: pointer;"\
+this.page=page;$(this.page).fadeIn();this.page._route=window.location.hash;document.title=this.page.label;$(this.page).trigger('show');scroll(0,0);return this.page;}});wn.views.add_module_btn=function(parent,module){$(parent).append(repl('<span class="label" style="margin-right: 8px; cursor: pointer;"\
      onclick="wn.set_route(\'%(module_small)s-home\')">\
      <i class="icon-home icon-white"></i> %(module)s Home\
     </span>',{module:module,module_small:module.toLowerCase()}));}
@@ -394,11 +395,12 @@
 throw"Incomplete Request";}}
 wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(opts.show_spinner)hide_loading();if(opts.freeze)unfreeze();if(wn.boot&&wn.boot.sid&&wn.get_cookie('sid')!=wn.boot.sid){if(!wn.app.logged_out){msgprint('Session Expired. Logging you out');wn.app.logout();}
 return;}
-if(r.server_messages)msgprint(r.server_messages)
-if(r.exc){console.log(r.exc);};if(r['403']){wn.container.change_to('403');}
+if(r.server_messages){r.server_messages=JSON.parse(r.server_messages)
+msgprint(r.server_messages);}
+if(r.exc){r.exc=JSON.parse(r.exc);if(r.exc instanceof Array){$.each(r.exc,function(i,v){if(v)console.log(v);})}else{console.log(r.exc);}};if(r['403']){wn.container.change_to('403');}
 if(r.docs){LocalDB.sync(r.docs);}}
-wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus)
-if(opts.error)opts.error(xhr)}})}
+wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success&&opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus)
+opts.error&&opts.error(xhr)}})}
 wn.call=function(opts){var args=$.extend({},opts.args)
 if(opts.module&&opts.page){args.cmd=opts.module+'.page.'+opts.page+'.'+opts.page+'.'+opts.method}else if(opts.method){args.cmd=opts.method;}
 for(key in args){if(args[key]&&typeof args[key]!='string'){args[key]=JSON.stringify(args[key]);}}
@@ -605,16 +607,14 @@
 /*
  *	lib/js/legacy/utils/msgprint.js
  */
-var msg_dialog;function msgprint(msg,issmall,callback){if(!msg)return;if(typeof(msg)!='string')
-msg=JSON.stringify(msg);if(issmall){show_alert(msg);return;}
-if(msg.substr(0,8)=='__small:'){show_alert(msg.substr(8));return;}
-if(!msg_dialog){msg_dialog=new Dialog(500,200,"Message");msg_dialog.make_body([['HTML','Msg']])
-msg_dialog.onhide=function(){msg_dialog.msg_area.innerHTML='';$dh(msg_dialog.msg_icon);if(msg_dialog.custom_onhide)msg_dialog.custom_onhide();}
-$y(msg_dialog.rows['Msg'],{fontSize:'14px',lineHeight:'1.5em',padding:'16px'})
-var t=make_table(msg_dialog.rows['Msg'],1,2,'100%',['20px','250px'],{padding:'2px',verticalAlign:'Top'});msg_dialog.msg_area=$td(t,0,1);msg_dialog.msg_icon=$a($td(t,0,0),'img');}
-if(!msg_dialog.display)msg_dialog.show();var has_msg=msg_dialog.msg_area.innerHTML?1:0;var m=$a(msg_dialog.msg_area,'div','');if(has_msg)$y(m,{marginTop:'4px'});$dh(msg_dialog.msg_icon);if(msg.substr(0,6).toLowerCase()=='error:'){msg_dialog.msg_icon.src='images/lib/icons/error.gif';$di(msg_dialog.msg_icon);msg=msg.substr(6);}else if(msg.substr(0,8).toLowerCase()=='message:'){msg_dialog.msg_icon.src='images/lib/icons/application.gif';$di(msg_dialog.msg_icon);msg=msg.substr(8);}else if(msg.substr(0,3).toLowerCase()=='ok:'){msg_dialog.msg_icon.src='images/lib/icons/accept.gif';$di(msg_dialog.msg_icon);msg=msg.substr(3);}
-m.innerHTML=replace_newlines(msg);if(m.offsetHeight>200){$y(m,{height:'200px',width:'400px',overflow:'auto'})}
-msg_dialog.custom_onhide=callback;}
+var msg_dialog;function msgprint(msg,title){if(!msg)return;if(msg instanceof Array){$.each(msg,function(i,v){if(v)msgprint(v);})
+return;}
+if(typeof(msg)!='string')
+msg=JSON.stringify(msg);if(msg.substr(0,8)=='__small:'){show_alert(msg.substr(8));return;}
+if(!msg_dialog){msg_dialog=new wn.ui.Dialog({title:"Message",onhide:function(){msg_dialog.msg_area.empty();}});msg_dialog.msg_area=$('<div class="msgprint">').appendTo(msg_dialog.body);}
+if(msg.search(/<br>|<p>|<li>/)==-1)
+msg=replace_newlines(msg);msg_dialog.set_title(title||'Message')
+msg_dialog.msg_area.append(msg);msg_dialog.show();}
 var growl_area;function show_alert(txt,id){if(!growl_area){if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
 growl_area=$a($i('dialog-container'),'div','',{position:'fixed',bottom:'8px',right:'8px',width:'320px',zIndex:10});}
 var wrapper=$a(growl_area,'div','',{position:'relative'});var body=$a(wrapper,'div','notice');var c=$a(body,'i','icon-remove-sign',{cssFloat:'right',cursor:'pointer'});$(c).click(function(){$dh(this.wrapper)});c.wrapper=wrapper;var t=$a(body,'div','',{color:'#FFF'});$(t).html(txt);if(id){$(t).attr('id',id);}
@@ -642,9 +642,9 @@
 var no_value_fields=['Section Break','Column Break','HTML','Table','FlexTable','Button','Image'];var codeid=0;var code_editors={};function Field(){this.with_label=1;}
 Field.prototype.make_body=function(){var ischk=(this.df.fieldtype=='Check'?1:0);if(this.parent)
 this.wrapper=$a(this.parent,(this.with_label?'div':'span'));else
-this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
-if(this.with_label){this.label_span=$a(this.label_area,'span','small')
-this.label_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 4px'});$dh(this.label_icon);this.label_icon.src='images/lib/icons/error.gif';this.label_icon.title='Mandatory value needs to be entered';this.suggest_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 0px'});$dh(this.suggest_icon);this.suggest_icon.src='images/lib/icons/bullet_arrow_down.png';this.suggest_icon.title='With suggestions';}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
+this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px',minHeight:'1em'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
+if(this.with_label){this.label_span=$a(this.label_area,'span','small',{cssFloat:'left'})
+this.label_icon=$('<i class="icon icon-warning-sign">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","This field is mandatory.");this.suggest_icon=$('<i class="icon icon-chevron-down">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","will show suggestions as you type.");}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
 $dh(this.label_area);}
 if(!this.input_area){this.input_area=$a(this.wrapper,(this.with_label?'div':'span'));this.disp_area=$a(this.wrapper,(this.with_label?'div':'span'));}
 if(this.in_grid){if(this.label_area)$dh(this.label_area);}else{this.input_area.className='input_area';$y(this.wrapper,{marginBottom:'9px'});this.set_description();}
@@ -655,8 +655,9 @@
 Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help small','',this.df.description)
 if(in_list(['Text Editor','Code'],this.df.fieldtype))
 $(this.desc_area).addClass('help small');}}
-Field.prototype.get_status=function(){if(this.in_filter)this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
-if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE])ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
+Field.prototype.get_status=function(){if(this.in_filter)
+this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
+if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
 ret='None';if(cint(this.df.hidden))
 ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}}
 if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE])ret='Write';}
@@ -679,19 +680,19 @@
 if(this.wrapper){this.wrapper.fieldobj=this;$(this.wrapper).trigger('refresh');}
 if(!this.not_in_form)
 this.set_input(_f.get_value(this.doctype,this.docname,this.df.fieldname));this.refresh_mandatory();this.set_max_width();}
-Field.prototype.refresh_label_icon=function(){if(this.df.reqd){if(this.get_value&&is_null(this.get_value())){if(this.label_icon)$ds(this.label_icon);$(this.txt?this.txt:this.input).addClass('field-to-update')}else{if(this.label_icon)$dh(this.label_icon);$(this.txt?this.txt:this.input).removeClass('field-to-update')}}}
+Field.prototype.refresh_label_icon=function(){var to_update=false;if(this.df.reqd&&this.get_value&&is_null(this.get_value()))
+to_update=true;if(!to_update&&this.df.has_error)this.df.has_error=false;if(this.label_icon)this.label_icon.toggle(to_update);$(this.txt?this.txt:this.input).toggleClass('field-to-update',to_update);$(this.txt?this.txt:this.input).toggleClass('field-has-error',this.df.has_error?true:false);}
 Field.prototype.set=function(val){if(this.not_in_form)
 return;if((!this.docname)&&this.grid){this.docname=this.grid.add_newrow();}
-var set_val=val;if(this.validate)set_val=this.validate(val);_f.set_value(this.doctype,this.docname,this.df.fieldname,set_val);this.value=val;}
+if(this.validate)
+val=this.validate(val);cur_frm.set_value_in_locals(this.doctype,this.docname,this.df.fieldname,val);this.value=val;}
 Field.prototype.set_input=function(val){this.value=val;if(this.input&&this.input.set_input){if(val==null)this.input.set_input('');else this.input.set_input(val);}
 var disp_val=val;if(val==null)disp_val='';this.set_disp(disp_val);}
-Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.df.reqd&&this.get_value&&!is_null(this.get_value())&&this.set_as_error)
-this.set_as_error(0);if(this.not_in_form){return;}
+Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.not_in_form){return;}
 if(cur_frm.cscript[this.df.fieldname])
 cur_frm.runclientscript(this.df.fieldname,this.doctype,this.docname);cur_frm.refresh_dependency();}
 Field.prototype.set_disp_html=function(t){if(this.disp_area){$(this.disp_area).addClass('disp_area');this.disp_area.innerHTML=(t==null?'':t);if(!t)$(this.disp_area).addClass('disp_area_no_val');}}
 Field.prototype.set_disp=function(val){this.set_disp_html(val);}
-Field.prototype.set_as_error=function(set){if(this.in_grid||this.in_filter)return;var w=this.txt?this.txt:this.input;if(set){$y(w,{border:'2px solid RED'});}else{$y(w,{border:'1px solid #888'});}}
 Field.prototype.activate=function(docname){this.docname=docname;this.refresh();if(this.input){var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);this.last_value=v;if(this.input.onchange&&this.input.get_value&&this.input.get_value()!=v){if(this.validate)
 this.input.set_value(this.validate(v));else
 this.input.set_value((v==null)?'':v);if(this.format_input)
@@ -706,7 +707,7 @@
 me.format_input();if(in_list(['Currency','Float','Int'],me.df.fieldtype)){if(flt(me.last_value)==flt(val)){me.last_value=val;return;}}
 me.last_value=val;me.run_trigger();}
 this.input.set_input=function(val){if(val==null)val='';me.input.value=val;if(me.format_input)me.format_input();}
-if(this.df.options=='Suggest'){if(this.suggest_icon)$di(this.suggest_icon);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
+if(this.df.options=='Suggest'){if(this.suggest_icon)this.suggest_icon.toggle(true);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
        `tab%(dt)s` WHERE `%(fieldname)s` LIKE "%s" LIMIT 50',{fieldname:me.df.fieldname,dt:me.df.parent})},callback:function(r){response(r.results);}});},select:function(event,ui){me.set(ui.item.value);}});}}
 DataField.prototype.validate=function(v){if(this.df.options=='Phone'){if(v+''=='')return'';v1=''
 v=v.replace(/ /g,'').replace(/-/g,'').replace(/\(/g,'').replace(/\)/g,'');if(v&&v.substr(0,1)=='+'){v1='+';v=v.substr(1);}
@@ -714,12 +715,11 @@
 if(v&&v.substr(0,1)=='0'){v1+='0';v=v.substr(1);}
 v1+=cint(v)+'';return v1;}else if(this.df.options=='Email'){if(v+''=='')return'';if(!validate_email(v)){msgprint(this.df.label+': '+v+' is not a valid email id');return'';}else
 return v;}else{return v;}}
-DataField.prototype.onrefresh=function(){if(this.input&&this.df.colour){var col='#'+this.df.colour.split(':')[1];$bg(this.input,col);}}
 function ReadOnlyField(){}
 ReadOnlyField.prototype=new Field();function HTMLField(){}
-HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){this.disp_area.innerHTML=val;}
+HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
 HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
-HTMLField.prototype.onrefresh=function(){this.set_disp(this.df.options?this.df.options:'');}
+HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
 var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
 _f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
 me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
@@ -814,7 +814,6 @@
 function TimeField(){}TimeField.prototype=new Field();TimeField.prototype.get_time=function(){return time_to_hhmm(sel_val(this.input_hr),sel_val(this.input_mn),sel_val(this.input_am));}
 TimeField.prototype.set_time=function(v){ret=time_to_ampm(v);this.input_hr.inp.value=ret[0];this.input_mn.inp.value=ret[1];this.input_am.inp.value=ret[2];}
 TimeField.prototype.set_style_mandatory=function(){}
-TimeField.prototype.set_as_error=function(){}
 TimeField.prototype.make_input=function(){var me=this;this.input=$a(this.input_area,'div','time_field');var t=make_table(this.input,1,3,'200px');var opt_hr=['1','2','3','4','5','6','7','8','9','10','11','12'];var opt_mn=['00','05','10','15','20','25','30','35','40','45','50','55'];var opt_am=['AM','PM'];this.input_hr=new SelectWidget($td(t,0,0),opt_hr,'50px');this.input_mn=new SelectWidget($td(t,0,1),opt_mn,'50px');this.input_am=new SelectWidget($td(t,0,2),opt_am,'50px');var onchange_fn=function(){me.set(me.get_time());me.run_trigger();}
 this.input_hr.inp.onchange=onchange_fn;this.input_mn.inp.onchange=onchange_fn;this.input_am.inp.onchange=onchange_fn;this.onrefresh=function(){var v=_f.get_value?_f.get_value(me.doctype,me.docname,me.df.fieldname):null;me.set_time(v);if(!v)
 me.set(me.get_time());}
@@ -831,8 +830,7 @@
 me.btn1.setAttribute('title','Open Link');}
 if(iconsrc2){var c3=tab.rows[0].insertCell(3);$y(c3,{width:'20px'});me.btn2=$a(c3,'i',iconsrc2,icon_style)
 me.btn2.setAttribute('title','Create New');$dh(me.btn2);}
-if(me.df.colour)
-me.txt.style.background='#'+me.df.colour.split(':')[1];me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
+me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
 var tmpid=0;_f.ButtonField=function(){};_f.ButtonField.prototype=new Field();_f.ButtonField.prototype.with_label=0;_f.ButtonField.prototype.init=function(){this.prev_button=null;if(!this.frm)return;if(cur_frm&&cur_frm.fields[cur_frm.fields.length-1]&&cur_frm.fields[cur_frm.fields.length-1].df.fieldtype=='Button'){this.make_body=function(){this.prev_button=cur_frm.fields[cur_frm.fields.length-1];if(!this.prev_button.prev_button){this.prev_button.button_area=$a(this.prev_button.input_area,'span');}
 this.wrapper=this.prev_button.wrapper;this.input_area=this.prev_button.input_area;this.disp_area=this.prev_button.disp_area;this.button_area=$a(this.prev_button.input_area,'span');}}}
 _f.ButtonField.prototype.make_input=function(){var me=this;if(!this.prev_button){$y(this.input_area,{marginTop:'4px',marginBottom:'4px'});}
@@ -854,10 +852,14 @@
    <span class="appframe-title"></span>\
    <span class="close">&times;</span>\
   </div>').appendTo(this.$w);this.$w.find('.close').click(function(){window.history.back();})
-if(title)this.title(title);},title:function(txt){this.$titlebar.find('.appframe-title').html(txt);},add_button:function(label,click,icon){if(!this.$w.find('.appframe-toolbar').length)
-this.$w.append('<div class="appframe-toolbar"></div>');args={label:label,icon:''};if(icon){args.icon='<i class="'+icon+'"></i>';}
+if(title)this.title(title);},title:function(txt){this.clear_breadcrumbs();this.add_breadcrumb(txt);},make_toolbar:function(){if(!this.$w.find('.appframe-toolbar').length)
+this.$w.append('<div class="appframe-toolbar"></div>');},add_button:function(label,click,icon){this.make_toolbar();args={label:label,icon:''};if(icon){args.icon='<i class="icon '+icon+'"></i>';}
 this.buttons[label]=$(repl('<button class="btn btn-small">\
-   %(icon)s %(label)s</button>',args)).click(click).appendTo(this.$w.find('.appframe-toolbar'));return this.buttons[label];},clear_buttons:function(){this.$w.find('.appframe-toolbar').empty();}});wn.ui.make_app_page=function(opts){if(opts.single_column){$(opts.parent).html('<div class="layout-wrapper layout-wrapper-appframe">\
+   %(icon)s %(label)s</button>',args)).click(click).appendTo(this.$w.find('.appframe-toolbar'));return this.buttons[label];},add_help_button:function(txt){this.make_toolbar();$('<button class="btn btn-small" style="float:right;" button-type="help">\
+   <b>?</b></button>').data('help-text',txt).click(function(){msgprint($(this).data('help-text'),'Help');}).appendTo(this.$w.find('.appframe-toolbar'));},clear_buttons:function(){this.$w.find('.appframe-toolbar').empty();},add_breadcrumb:function(html){if(!this.$breadcrumbs)
+this.$breadcrumbs=$('</span>\
+    <span class="breadcrumb-area"></span>').appendTo(this.$titlebar);var crumb=$('<span>').html(html);if(!this.$breadcrumbs.find('span').length){crumb.addClass('appframe-title');}
+crumb.appendTo(this.$breadcrumbs);},clear_breadcrumbs:function(){this.$breadcrumbs&&this.$breadcrumbs.empty();}});wn.ui.make_app_page=function(opts){if(opts.single_column){$(opts.parent).html('<div class="layout-wrapper layout-wrapper-appframe">\
    <div class="layout-appframe"></div>\
    <div class="layout-main"></div>\
   </div>');}else{$(opts.parent).html('<div class="layout-wrapper layout-wrapper-background">\
@@ -875,6 +877,7 @@
 var div=$a(body,'div','',{margin:'6px 0px'})
 f=make_field(df,null,div,null);f.not_in_form=1;this.fields_dict[df.fieldname]=f
 f.refresh();if(df.fieldtype=='Button'&&!this.first_button){$(f.input).addClass('btn-info');this.first_button=true;}}}
+this.catch_enter_as_submit=function(){var me=this;$(this.body).find(':input[type="text"], :input[type="password"]').keypress(function(e){if(e.which==13){$(me.body).find('.btn-info:first').click();}})}
 this.get_values=function(){var ret={};var errors=[];for(var key in this.fields_dict){var f=this.fields_dict[key];var v=f.get_value?f.get_value():null;if(f.df.reqd&&!v)
 errors.push(f.df.label+' is mandatory');if(v)ret[f.df.fieldname]=v;}
 if(errors.length){msgprint('<b>Please check the following Errors</b>\n'+errors.join('\n'));return null;}
@@ -882,19 +885,18 @@
 this.set_value=function(key,val){var f=this.fields_dict[key];if(f){f.set_input(val);f.refresh_mandatory();}}
 this.set_values=function(dict){for(var key in dict){if(this.fields_dict[key]){this.set_value(key,dict[key]);}}}
 this.clear=function(){for(key in this.fields_dict){var f=this.fields_dict[key];if(f){f.set_input(f.df['default']||'');}}}}
-wn.widgets.Dialog=function(opts){this.opts=opts;this.display=false;this.make=function(opts){if(opts)
-this.opts=opts;if(!this.opts.width)this.opts.width=480;if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
+wn.widgets.Dialog=function(opts){this.display=false;this.make=function(opts){if(opts){this.opts=opts;$.extend(this,opts);}
+if(!this.opts.width)this.opts.width=480;if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
 this.wrapper=$('<div class="dialog_wrapper">').appendTo('#dialog-container').get(0);if(this.opts.width)
-this.wrapper.style.width=this.opts.width+'px';this.make_head();this.body=$a(this.wrapper,'div','dialog_body');if(this.opts.fields)
-this.make_fields(this.body,this.opts.fields);}
+this.wrapper.style.width=this.opts.width+'px';this.make_head();this.body=$a(this.wrapper,'div','dialog_body');if(this.opts.fields){this.make_fields(this.body,this.opts.fields);this.catch_enter_as_submit();}}
 this.make_head=function(){var me=this;this.appframe=new wn.ui.AppFrame(this.wrapper);this.appframe.$titlebar.find('.close').unbind('click').click(function(){if(me.oncancel)me.oncancel();me.hide();});this.set_title(this.opts.title);}
 this.set_title=function(t){this.appframe.$titlebar.find('.appframe-title').html(t||'');}
 this.set_postion=function(){this.wrapper.style.left=(($(window).width()-cint(this.wrapper.style.width))/2)+'px';this.wrapper.style.top=($(window).scrollTop()+60)+'px';top_index++;$y(this.wrapper,{zIndex:top_index});}
 this.show=function(){if(this.display)return;this.set_postion()
-$ds(this.wrapper);freeze();this.display=true;cur_dialog=this;if(this.onshow)this.onshow();}
+$ds(this.wrapper);freeze();this.display=true;cur_dialog=this;if(this.onshow)this.onshow();$(this.wrapper).find(':input:first').focus();}
 this.hide=function(){if(this.onhide)this.onhide();unfreeze();$dh(this.wrapper);this.display=false;cur_dialog=null;}
 this.no_cancel=function(){this.appframe.$titlebar.find('.close').toggle(false);}
-if(opts)this.make();}
+if(opts)this.make(opts);}
 wn.widgets.Dialog.prototype=new wn.widgets.FieldGroup();wn.provide('wn.ui');wn.ui.Dialog=wn.widgets.Dialog
 $(document).bind('keydown',function(e){if(cur_dialog&&!cur_dialog.no_cancel_flag&&e.which==27){cur_dialog.hide();}});
 /*
@@ -967,15 +969,16 @@
     </div>\
    </div>\
    <div style="clear: both"></div>\
-  </div>');this.appframe=new wn.ui.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs($('<span class="breadcrumb-area">').appendTo(this.appframe.$titlebar),locals.DocType[this.doctype].module,this.doctype);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.make_report_button();me.add_delete_option();},make_report_button:function(){var me=this;if(wn.boot.profile.can_get_report.indexOf(this.doctype)!=-1){this.appframe.add_button('Build Report',function(){wn.set_route('Report2',me.doctype);},'icon-th')}},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1
+  </div>');this.appframe=new wn.ui.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs(this.appframe,locals.DocType[this.doctype].module,this.doctype);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.make_report_button();me.add_delete_option();me.make_help();},make_report_button:function(){var me=this;if(wn.boot.profile.can_get_report.indexOf(this.doctype)!=-1){this.appframe.add_button('Build Report',function(){wn.set_route('Report2',me.doctype);},'icon-th')}},make_help:function(){if(this.meta.description){this.appframe.add_help_button(wn.markdown('## '+this.meta.name+'\n\n'
++this.meta.description));}},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1
 else return null;}).length;if(this.can_submit){this.$page.find('.show-docstatus').removeClass('hide');this.$page.find('.show-docstatus input').click(function(){me.run();})}},setup_listview:function(){if(this.meta.__listjs){eval(this.meta.__listjs);this.listview=new wn.doclistviews[this.doctype](this);}else{this.listview=new wn.views.ListView(this);}
 this.listview.parent=this;this.wrapper=this.$page.find('.wnlist-area');this.page_length=20;this.allow_delete=true;},init_list:function(auto_run){var me=this;this.make({method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:this.wrapper,start:0,page_length:this.page_length,show_filters:true,show_grid:true,new_doctype:this.doctype,allow_delete:this.allow_delete,no_result_message:this.make_no_result(),columns:this.listview.fields});$(this.wrapper).find('button[list_view_doc="'+me.doctype+'"]').click(function(){me.make_new_doc(me.doctype);});if((auto_run!==false)&&(auto_run!==0))this.run();},make_no_result:function(){var no_result_message=repl('<div class="well">\
   <p>No %(doctype_label)s found</p>\
-  %(description)s\
   <hr>\
   <p><button class="btn btn-info btn-small" list_view_doc="%(doctype)s">\
    Make a new %(doctype_label)s</button>\
-  </p></div>',{doctype_label:get_doctype_label(this.doctype),doctype:this.doctype,description:wn.markdown(locals.DocType[this.doctype].description||''),});return no_result_message;},render_row:function(row,data){data.doctype=this.doctype;this.listview.render(row,data,this);},get_query_fields:function(){return this.listview.fields;},get_args:function(){return{doctype:this.doctype,fields:this.get_query_fields(),filters:this.filter_list.get_filters(),docstatus:this.can_submit?$.map(this.$page.find('.show-docstatus :checked'),function(inp){return $(inp).attr('data-docstatus')}):[],order_by:this.listview.order_by||undefined,group_by:this.listview.group_by||undefined,}},add_delete_option:function(){var me=this;if(this.can_delete){this.add_button('Delete',function(){me.delete_items();},'icon-remove')}},delete_items:function(){var me=this;var dl=$.map(me.$page.find('.list-delete:checked'),function(e){return $(e).data('name');});if(!dl.length)
+  </p></div>',{doctype_label:get_doctype_label(this.doctype),doctype:this.doctype});return no_result_message;},render_row:function(row,data){data.doctype=this.doctype;this.listview.render(row,data,this);},get_query_fields:function(){return this.listview.fields;},get_args:function(){return{doctype:this.doctype,fields:this.get_query_fields(),filters:this.filter_list.get_filters(),docstatus:this.can_submit?$.map(this.$page.find('.show-docstatus :checked'),function(inp){return $(inp).attr('data-docstatus')}):[],order_by:this.listview.order_by||undefined,group_by:this.listview.group_by||undefined,}},add_delete_option:function(){var me=this;if(this.can_delete){this.add_button('Delete',function(){me.delete_items();},'icon-remove');$('<div style="padding: 4px"><input type="checkbox" name="select-all" />\
+     Select all</div>').insertBefore(this.$page.find('.result-list'));this.$page.find('[name="select-all"]').click(function(){me.$page.find('.list-delete').attr('checked',$(this).attr('checked')||false);})}},delete_items:function(){var me=this;var dl=$.map(me.$page.find('.list-delete:checked'),function(e){return $(e).data('name');});if(!dl.length)
 return;if(!confirm('This is PERMANENT action and you cannot undo. Continue?')){return;}
 me.set_working(true);wn.call({method:'webnotes.widgets.doclistview.delete_items',args:{items:dl,doctype:me.doctype},callback:function(){me.set_working(false);me.refresh();}})},init_stats:function(){var me=this
 wn.call({method:'webnotes.widgets.doclistview.get_stats',args:{stats:me.listview.stats,doctype:me.doctype},callback:function(r){$.each(me.listview.stats,function(i,v){me.render_stat(v,r.message[v]);});if(me.listview.stats.length){$('<button class="btn btn-small"><i class="refresh"></i> Refresh</button>').click(function(){me.reload_stats();}).appendTo($('<div class="stat-wrapper">').appendTo(me.$page.find('.layout-side-section')))}}});},render_stat:function(field,stat){var me=this;if(!stat||!stat.length){if(field=='_user_tags'){this.$page.find('.layout-side-section').append('<div class="stat-wrapper"><h4>Tags</h4>\
@@ -1037,7 +1040,7 @@
 rb.load_criteria(rep_name);if(rb.dt&&route_changed){rb.dt.run();}}
 if(!rb.forbidden){wn.container.change_to('Report Builder');}});}}
 wn.views.reportview2={show:function(dt){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){new wn.views.ReportViewPage(route[1],route[2]);}else{wn.set_route('404');}}}}
-wn.views.ReportViewPage=Class.extend({init:function(doctype,docname){this.doctype=doctype;this.docname=docname;this.page_name=wn.get_route_str();this.make_page();var me=this;wn.model.with_doctype(doctype,function(){me.make_report_view();if(docname){wn.model.with_doc('Report',docname,function(r){me.reportview.set_columns_and_filters(JSON.parse(locals['Report'][docname].json));me.reportview.run();});}else{me.reportview.run();}});},make_page:function(){this.page=wn.container.add_page(this.page_name);wn.ui.make_app_page({parent:this.page,single_column:true});wn.container.change_to(this.page_name);},make_report_view:function(){wn.views.breadcrumbs($('<span>').appendTo(this.page.appframe.$titlebar),locals.DocType[this.doctype].module);this.reportview=new wn.views.ReportView(this.doctype,this.docname,this.page)}})
+wn.views.ReportViewPage=Class.extend({init:function(doctype,docname){this.doctype=doctype;this.docname=docname;this.page_name=wn.get_route_str();this.make_page();var me=this;wn.model.with_doctype(doctype,function(){me.make_report_view();if(docname){wn.model.with_doc('Report',docname,function(r){me.reportview.set_columns_and_filters(JSON.parse(locals['Report'][docname].json));me.reportview.run();});}else{me.reportview.run();}});},make_page:function(){this.page=wn.container.add_page(this.page_name);wn.ui.make_app_page({parent:this.page,single_column:true});wn.container.change_to(this.page_name);},make_report_view:function(){this.page.appframe.add_breadcrumb(locals.DocType[this.doctype].module);this.reportview=new wn.views.ReportView(this.doctype,this.docname,this.page)}})
 wn.views.ReportView=wn.ui.Listing.extend({init:function(doctype,docname,page){var me=this;$(page).find('.layout-main').html('Loading Report...');this.import_slickgrid();$(page).find('.layout-main').empty();this.doctype=doctype;this.docname=docname;this.page=page;this.tab_name='`tab'+doctype+'`';this.setup();},import_slickgrid:function(){wn.require('js/lib/slickgrid/slick.grid.css');wn.require('js/lib/slickgrid/slick-default-theme.css');wn.require('js/lib/slickgrid/jquery.event.drag.min.js');wn.require('js/lib/slickgrid/slick.core.js');wn.require('js/lib/slickgrid/slick.grid.js');wn.dom.set_style('.slick-cell { font-size: 12px; }');},set_init_columns:function(){var columns=[['name'],['owner']];$.each(wn.meta.docfield_list[this.doctype],function(i,df){if(df.in_filter&&df.fieldname!='naming_series'&&df.fieldtype!='Table'){columns.push([df.fieldname]);}});this.columns=columns;},setup:function(){var me=this;this.make({title:'Report: '+(this.docname?(this.doctype+' - '+this.docname):this.doctype),appframe:this.page.appframe,method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:$(this.page).find('.layout-main'),start:0,page_length:20,show_filters:true,new_doctype:this.doctype,allow_delete:true,});this.make_column_picker();this.make_sorter();this.make_export();this.set_init_columns();this.make_save();},set_columns_and_filters:function(opts){var me=this;if(opts.columns)this.columns=opts.columns;if(opts.filters)$.each(opts.filters,function(i,f){me.filter_list.add_filter(f[0],f[1],f[2],f[3]);});if(opts.sort_by)this.sort_by_select.val(opts.sort_by);if(opts.sort_order)this.sort_order_select.val(opts.sort_order);if(opts.sort_by_next)this.sort_by_next_select.val(opts.sort_by_next);if(opts.sort_order_next)this.sort_order_next_select.val(opts.sort_order_next);},get_args:function(){var me=this;return{doctype:this.doctype,fields:$.map(this.columns,function(v){return me.get_full_column_name(v)}),order_by:this.get_order_by(),filters:this.filter_list.get_filters(),docstatus:['0','1','2']}},get_order_by:function(){var order_by=this.get_selected_table_and_column(this.sort_by_select)
 +' '+this.sort_order_select.val()
 if(this.sort_by_next_select.val()){order_by+=', '+this.get_selected_table_and_column(this.sort_by_next_select)
@@ -1105,7 +1108,7 @@
 Layout.prototype.hide=function(){$dh(this.wrapper);}
 Layout.prototype.close_borders=function(){if(this.with_border){this.myrows[this.myrows.length-1].wrapper.style.borderBottom='1px solid #000';}}
 function LayoutRow(layout,parent){this.layout=layout;this.wrapper=$a(parent,'div','form-layout-row');this.main_head=$a(this.wrapper,'div');this.main_body=$a(this.wrapper,'div');if(layout.with_border){this.wrapper.style.border='1px solid #000';this.wrapper.style.borderBottom='0px';}
-this.header=$a(this.main_body,'div','',{padding:(layout.with_border?'0px 8px':'0px')});this.body=$a(this.main_body,'div');this.table=$a(this.body,'table','',{width:'100%',borderCollapse:'collapse'});this.row=this.table.insertRow(0);this.mycells=[];}
+this.header=$a(this.main_body,'div','',{padding:(layout.with_border?'0px 8px':'0px')});this.body=$a(this.main_body,'div');this.table=$a(this.body,'table','',{width:'100%',borderCollapse:'collapse',tableLayout:'fixed'});this.row=this.table.insertRow(0);this.mycells=[];}
 LayoutRow.prototype.hide=function(){$dh(this.wrapper);}
 LayoutRow.prototype.show=function(){$ds(this.wrapper);}
 LayoutRow.prototype.addCell=function(wid){var lc=new LayoutCell(this.layout,this,wid);this.mycells[this.mycells.length]=lc;return lc;}
@@ -1221,14 +1224,14 @@
  *	lib/js/legacy/webpage/search.js
  */
 search_fields={};function setlinkvalue(name){selector.input.set_input_value(name);selector.hide();}
-function makeselector(){var d=new Dialog(540,440,'Search');d.make_body([['Data','Beginning With','Tip: You can use wildcard "%"'],['Select','Search By'],['Button','Search'],['HTML','Help'],['HTML','Result']]);var inp=d.widgets['Beginning With'];var field_sel=d.widgets['Search By'];var btn=d.widgets['Search'];d.sel_type='';d.values_len=0;d.set=function(input,type,label){d.sel_type=type;d.input=input;if(d.style!='Link'){d.rows['Result'].innerHTML='';d.values_len=0;}
+function makeselector(){var d=new Dialog(540,440,'Search');d.make_body([['HTML','Help'],['Data','Beginning With','Tip: You can use wildcard "%"'],['Select','Search By'],['Button','Search'],['HTML','Result']]);var inp=d.widgets['Beginning With'];var field_sel=d.widgets['Search By'];var btn=d.widgets['Search'];d.sel_type='';d.values_len=0;d.set=function(input,type,label){d.sel_type=type;d.input=input;if(d.style!='Link'){d.rows['Result'].innerHTML='';d.values_len=0;}
 d.style='Link';d.set_query_description()
-if(!d.sel_type)d.sel_type='Value';d.set_title('Select a "'+d.sel_type+'" for field "'+label+'"');}
+if(!d.sel_type)d.sel_type='Value';d.set_title("Select");d.set_query_description('Select a "'+d.sel_type+'" for field "'+label+'"');}
 d.set_search=function(dt){if(d.style!='Search'){d.rows['Result'].innerHTML='';d.values_len=0;}
 d.style='Search';if(d.input){d.input=null;sel_type=null;}
 d.sel_type=get_label_doctype(dt);d.set_title('Quick Search for '+dt);}
 $(inp).keydown(function(e){if(e.which==13){if(!btn.disabled)btn.onclick();}})
-d.set_query_description=function(){if(d.input&&d.input.query_description){d.rows['Help'].innerHTML='<div class="help_box">'+d.input.query_description+'</div>';}else{d.rows['Help'].innerHTML=''}}
+d.set_query_description=function(txt){txt=d.input&&d.input.query_description||txt;if(txt){d.rows['Help'].innerHTML='<div class="help-box" style="margin-top:0px">'+txt+'</div>';}else{d.rows['Help'].innerHTML=''}}
 d.onshow=function(){if(d.set_doctype!=d.sel_type){d.rows['Result'].innerHTML='';d.values_len=0;}
 inp.value='';if(d.input&&d.input.txt.value){inp.value=d.input.txt.value;}
 try{inp.focus();}catch(e){}
@@ -1316,7 +1319,9 @@
 function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;}
 LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);if(list){LocalDB.clear_locals(list[0].doctype,list[0].name);}
 for(var i=0;i<list.length;i++){var d=list[i];if(!d.name)
-d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
+d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(cur_frm&&cur_frm.doctype==d.doctype&&cur_frm.docname==d.name){cur_frm.doc=d;}
+if(d.doctype=='DocField')
+wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
 LocalDB.clear_locals=function(dt,dn){var doclist=make_doclist(dt,dn,1);$.each(doclist,function(i,v){v&&delete locals[v.doctype][v.name];});}
 local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;}
 LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;}
@@ -1344,22 +1349,21 @@
 return user_defaults[fn][0];else if(sys_defaults[fn])
 return sys_defaults[fn];}
 LocalDB.add_child=function(doc,childtype,parentfield){var n=LocalDB.create(childtype);var d=locals[childtype][n];d.parent=doc.name;d.parentfield=parentfield;d.parenttype=doc.doctype;return d;}
-LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=get_field(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}}
+LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=wn.meta.get_docfield(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}}
 return locals[dt][newdoc];}
 function make_doclist(dt,dn){if(!locals[dt]){return[];}
 var dl=[];dl[0]=locals[dt][dn];for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&doc.parent==dn){dl.push(doc)}}}}
 return dl;}
 var Meta={};var local_dt={};Meta.make_local_dt=function(dt,dn){var dl=make_doclist('DocType',dt);if(!local_dt[dt])local_dt[dt]={};if(!local_dt[dt][dn])local_dt[dt][dn]={};for(var i=0;i<dl.length;i++){var d=dl[i];if(d.doctype=='DocField'){var key=d.fieldname?d.fieldname:d.label;local_dt[dt][dn][key]=copy_dict(d);}}}
-Meta.get_field=function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{if(wn.meta.docfield_map[dt])var d=wn.meta.docfield_map[dt][fn];if(d)return d;}
-return{};}
 Meta.set_field_property=function(fn,key,val,doc){if(!doc&&(cur_frm.doc))doc=cur_frm.doc;try{local_dt[doc.doctype][doc.name][fn][key]=val;refresh_field(fn);}catch(e){alert("Client Script Error: Unknown values for "+doc.name+','+fn+'.'+key+'='+val);}}
+Meta.get_field=function(dt,fn,dn){try{return local_dt[dt][dn][fn];}catch(e){return null;}}
 function get_doctype_label(dt){return dt}
 function get_label_doctype(label){return label}
-var getchildren=LocalDB.getchildren;var get_field=Meta.get_field;var createLocal=LocalDB.create;
+var getchildren=LocalDB.getchildren;var createLocal=LocalDB.create;
 /*
  *	lib/js/legacy/model/doclist.js
  */
-function compress_doclist(list){var kl={};var vl=[];var flx={};for(var i=0;i<list.length;i++){var o=list[i];var fl=[];if(!kl[o.doctype]){var tfl=['doctype','name','docstatus','owner','parent','parentfield','parenttype','idx','creation','modified','modified_by','__islocal','__newname','__modified','_user_tags'];var fl=[].concat(tfl);for(key in wn.meta.docfield_map[o.doctype]){if(!in_list(fl,key)&&!in_list(no_value_fields,wn.meta.docfield_map[o.doctype][key].fieldtype)&&!wn.meta.docfield_map[o.doctype][key].no_column){fl[fl.length]=key;tfl[tfl.length]=key}}
+function compress_doclist(list){var kl={};var vl=[];var flx={};for(var i=0;i<list.length;i++){var o=list[i];var fl=[];if(!kl[o.doctype]){var tfl=['doctype','name','docstatus','owner','parent','parentfield','parenttype','idx','creation','modified','modified_by','__islocal','__newname','__modified','_user_tags','__temp'];var fl=[].concat(tfl);for(key in wn.meta.docfield_map[o.doctype]){if(!in_list(fl,key)&&!in_list(no_value_fields,wn.meta.docfield_map[o.doctype][key].fieldtype)&&!wn.meta.docfield_map[o.doctype][key].no_column){fl[fl.length]=key;tfl[tfl.length]=key}}
 flx[o.doctype]=fl;kl[o.doctype]=tfl}
 var nl=[];var fl=flx[o.doctype];for(var j=0;j<fl.length;j++){var v=o[fl[j]];nl.push(v);}
 vl.push(nl);}
@@ -1375,10 +1379,12 @@
 var _save=function(){$c('webnotes.widgets.form.save.savedocs',{'docs':compress_doclist(doclist),'docname':dn,'action':save_action,'user':user},function(r,rtxt){if(f){f.savingflag=false;}
 if(r.saved){if(onsave)onsave(r);}else{if(onerr)onerr(r);}},function(){if(f){f.savingflag=false;}},0,(f?'Saving...':''));}
 if(doc.__islocal&&(doctype&&doctype.autoname&&doctype.autoname.toLowerCase()=='prompt')){var newname=prompt('Enter the name of the new '+dt,'');if(newname){doc.__newname=strip(newname);_save();}else{msgprint('Not Saved');onerr();}}else{_save();}}
-function check_required(dt,dn,parent_dt){var doc=locals[dt][dn];if(doc.docstatus>1)return true;var fl=wn.meta.docfield_list[dt];if(!fl)return true;var all_clear=true;var errfld=[];for(var i=0;i<fl.length;i++){var key=fl[i].fieldname;var v=doc[key];if(fl[i].reqd&&is_null(v)&&fl[i].fieldname){errfld[errfld.length]=fl[i].label;if(cur_frm){var f=cur_frm.fields_dict[fl[i].fieldname];if(f){if(f.set_as_error)f.set_as_error(1);if(!cur_frm.error_in_section&&f.parent_section){cur_frm.error_in_section=1;}}}
+function check_required(dt,dn,parent_dt){var doc=locals[dt][dn];if(doc.docstatus>1)return true;var fl=wn.meta.docfield_list[dt];if(!fl)return true;var all_clear=true;var errfld=[];for(var i=0;i<fl.length;i++){var key=fl[i].fieldname;var df=wn.meta.get_docfield(dt,key,dn);var has_value=wn.model.has_value(dt,dn,key);if(df.reqd&&!has_value){errfld[errfld.length]=df.label;if(cur_frm){var f=cur_frm.fields_dict[df.fieldname];if(f){f.df.has_error=true;f.refresh_label_icon();if(all_clear){$(document).scrollTop($(f.wrapper).offset().top-100);}
+if(f.df.hidden){msgprint('Oops, field "'+f.df.label+'" is both hidden and mandatory. \
+       Please contact your admin for help.');}}}
 if(all_clear)all_clear=false;}}
 if(errfld.length)msgprint('<b>Mandatory fields required in '+
-(doc.parenttype?(wn.meta.docfield_map[doc.parenttype][doc.parentfield].label+' (Table)'):get_doctype_label(doc.doctype))+':</b>\n'+errfld.join('\n'));return all_clear;}
+(doc.parenttype?(wn.meta.docfield_map[doc.parenttype][doc.parentfield].label+' (Table)'):doc.doctype)+':</b>\n'+errfld.join('\n'));return all_clear;}
 /*
  *	lib/js/wn/ui/toolbar.min.js
  */
@@ -1461,17 +1467,17 @@
 /*
  *	lib/js/wn/views/breadcrumbs.js
  */
-wn.provide('wn.views');wn.views.breadcrumbs=function(parent,module,doctype,name){$(parent).empty();var $bspan=$(parent);if(name){$bspan.append('<span class="appframe-title">'+name+'</span>');}else if(doctype){$bspan.append('<span class="appframe-title">'+doctype+' List </span>');}else if(module){$bspan.append('<span class="appframe-title">'+module+'</span>');}
-if(name&&doctype&&(!locals['DocType'][doctype].issingle)){$bspan.append(repl('<span> in <a href="#!List/%(doctype)s">%(doctype)s List</a></span>',{doctype:doctype}))};if(doctype&&module&&wn.modules&&wn.modules[module]){$bspan.append(repl('<span> in <a href="#!%(module_page)s">%(module)s</a></span>',{module:module,module_page:wn.modules[module]}))}}
+wn.provide('wn.views');wn.views.breadcrumbs=function(appframe,module,doctype,name){appframe.clear_breadcrumbs();if(name){appframe.add_breadcrumb(name);}else if(doctype){appframe.add_breadcrumb(doctype+' List');}else if(module){appframe.add_breadcrumb(module);}
+if(name&&doctype&&(!locals['DocType'][doctype].issingle)){appframe.add_breadcrumb(repl(' in <a href="#!List/%(doctype)s">%(doctype)s List</a>',{doctype:doctype}))};if(doctype&&module&&wn.modules&&wn.modules[module]){appframe.add_breadcrumb(repl(' in <a href="#!%(module_page)s">%(module)s</a>',{module:module,module_page:wn.modules[module]}))}}
 /*
  *	lib/js/legacy/widgets/form/fields.js
  */
 var no_value_fields=['Section Break','Column Break','HTML','Table','FlexTable','Button','Image'];var codeid=0;var code_editors={};function Field(){this.with_label=1;}
 Field.prototype.make_body=function(){var ischk=(this.df.fieldtype=='Check'?1:0);if(this.parent)
 this.wrapper=$a(this.parent,(this.with_label?'div':'span'));else
-this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
-if(this.with_label){this.label_span=$a(this.label_area,'span','small')
-this.label_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 4px'});$dh(this.label_icon);this.label_icon.src='images/lib/icons/error.gif';this.label_icon.title='Mandatory value needs to be entered';this.suggest_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 0px'});$dh(this.suggest_icon);this.suggest_icon.src='images/lib/icons/bullet_arrow_down.png';this.suggest_icon.title='With suggestions';}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
+this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px',minHeight:'1em'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
+if(this.with_label){this.label_span=$a(this.label_area,'span','small',{cssFloat:'left'})
+this.label_icon=$('<i class="icon icon-warning-sign">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","This field is mandatory.");this.suggest_icon=$('<i class="icon icon-chevron-down">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","will show suggestions as you type.");}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
 $dh(this.label_area);}
 if(!this.input_area){this.input_area=$a(this.wrapper,(this.with_label?'div':'span'));this.disp_area=$a(this.wrapper,(this.with_label?'div':'span'));}
 if(this.in_grid){if(this.label_area)$dh(this.label_area);}else{this.input_area.className='input_area';$y(this.wrapper,{marginBottom:'9px'});this.set_description();}
@@ -1482,8 +1488,9 @@
 Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help small','',this.df.description)
 if(in_list(['Text Editor','Code'],this.df.fieldtype))
 $(this.desc_area).addClass('help small');}}
-Field.prototype.get_status=function(){if(this.in_filter)this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
-if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE])ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
+Field.prototype.get_status=function(){if(this.in_filter)
+this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
+if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
 ret='None';if(cint(this.df.hidden))
 ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}}
 if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE])ret='Write';}
@@ -1506,19 +1513,19 @@
 if(this.wrapper){this.wrapper.fieldobj=this;$(this.wrapper).trigger('refresh');}
 if(!this.not_in_form)
 this.set_input(_f.get_value(this.doctype,this.docname,this.df.fieldname));this.refresh_mandatory();this.set_max_width();}
-Field.prototype.refresh_label_icon=function(){if(this.df.reqd){if(this.get_value&&is_null(this.get_value())){if(this.label_icon)$ds(this.label_icon);$(this.txt?this.txt:this.input).addClass('field-to-update')}else{if(this.label_icon)$dh(this.label_icon);$(this.txt?this.txt:this.input).removeClass('field-to-update')}}}
+Field.prototype.refresh_label_icon=function(){var to_update=false;if(this.df.reqd&&this.get_value&&is_null(this.get_value()))
+to_update=true;if(!to_update&&this.df.has_error)this.df.has_error=false;if(this.label_icon)this.label_icon.toggle(to_update);$(this.txt?this.txt:this.input).toggleClass('field-to-update',to_update);$(this.txt?this.txt:this.input).toggleClass('field-has-error',this.df.has_error?true:false);}
 Field.prototype.set=function(val){if(this.not_in_form)
 return;if((!this.docname)&&this.grid){this.docname=this.grid.add_newrow();}
-var set_val=val;if(this.validate)set_val=this.validate(val);_f.set_value(this.doctype,this.docname,this.df.fieldname,set_val);this.value=val;}
+if(this.validate)
+val=this.validate(val);cur_frm.set_value_in_locals(this.doctype,this.docname,this.df.fieldname,val);this.value=val;}
 Field.prototype.set_input=function(val){this.value=val;if(this.input&&this.input.set_input){if(val==null)this.input.set_input('');else this.input.set_input(val);}
 var disp_val=val;if(val==null)disp_val='';this.set_disp(disp_val);}
-Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.df.reqd&&this.get_value&&!is_null(this.get_value())&&this.set_as_error)
-this.set_as_error(0);if(this.not_in_form){return;}
+Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.not_in_form){return;}
 if(cur_frm.cscript[this.df.fieldname])
 cur_frm.runclientscript(this.df.fieldname,this.doctype,this.docname);cur_frm.refresh_dependency();}
 Field.prototype.set_disp_html=function(t){if(this.disp_area){$(this.disp_area).addClass('disp_area');this.disp_area.innerHTML=(t==null?'':t);if(!t)$(this.disp_area).addClass('disp_area_no_val');}}
 Field.prototype.set_disp=function(val){this.set_disp_html(val);}
-Field.prototype.set_as_error=function(set){if(this.in_grid||this.in_filter)return;var w=this.txt?this.txt:this.input;if(set){$y(w,{border:'2px solid RED'});}else{$y(w,{border:'1px solid #888'});}}
 Field.prototype.activate=function(docname){this.docname=docname;this.refresh();if(this.input){var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);this.last_value=v;if(this.input.onchange&&this.input.get_value&&this.input.get_value()!=v){if(this.validate)
 this.input.set_value(this.validate(v));else
 this.input.set_value((v==null)?'':v);if(this.format_input)
@@ -1533,7 +1540,7 @@
 me.format_input();if(in_list(['Currency','Float','Int'],me.df.fieldtype)){if(flt(me.last_value)==flt(val)){me.last_value=val;return;}}
 me.last_value=val;me.run_trigger();}
 this.input.set_input=function(val){if(val==null)val='';me.input.value=val;if(me.format_input)me.format_input();}
-if(this.df.options=='Suggest'){if(this.suggest_icon)$di(this.suggest_icon);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
+if(this.df.options=='Suggest'){if(this.suggest_icon)this.suggest_icon.toggle(true);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
        `tab%(dt)s` WHERE `%(fieldname)s` LIKE "%s" LIMIT 50',{fieldname:me.df.fieldname,dt:me.df.parent})},callback:function(r){response(r.results);}});},select:function(event,ui){me.set(ui.item.value);}});}}
 DataField.prototype.validate=function(v){if(this.df.options=='Phone'){if(v+''=='')return'';v1=''
 v=v.replace(/ /g,'').replace(/-/g,'').replace(/\(/g,'').replace(/\)/g,'');if(v&&v.substr(0,1)=='+'){v1='+';v=v.substr(1);}
@@ -1541,12 +1548,11 @@
 if(v&&v.substr(0,1)=='0'){v1+='0';v=v.substr(1);}
 v1+=cint(v)+'';return v1;}else if(this.df.options=='Email'){if(v+''=='')return'';if(!validate_email(v)){msgprint(this.df.label+': '+v+' is not a valid email id');return'';}else
 return v;}else{return v;}}
-DataField.prototype.onrefresh=function(){if(this.input&&this.df.colour){var col='#'+this.df.colour.split(':')[1];$bg(this.input,col);}}
 function ReadOnlyField(){}
 ReadOnlyField.prototype=new Field();function HTMLField(){}
-HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){this.disp_area.innerHTML=val;}
+HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
 HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
-HTMLField.prototype.onrefresh=function(){this.set_disp(this.df.options?this.df.options:'');}
+HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
 var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
 _f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
 me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
@@ -1641,7 +1647,6 @@
 function TimeField(){}TimeField.prototype=new Field();TimeField.prototype.get_time=function(){return time_to_hhmm(sel_val(this.input_hr),sel_val(this.input_mn),sel_val(this.input_am));}
 TimeField.prototype.set_time=function(v){ret=time_to_ampm(v);this.input_hr.inp.value=ret[0];this.input_mn.inp.value=ret[1];this.input_am.inp.value=ret[2];}
 TimeField.prototype.set_style_mandatory=function(){}
-TimeField.prototype.set_as_error=function(){}
 TimeField.prototype.make_input=function(){var me=this;this.input=$a(this.input_area,'div','time_field');var t=make_table(this.input,1,3,'200px');var opt_hr=['1','2','3','4','5','6','7','8','9','10','11','12'];var opt_mn=['00','05','10','15','20','25','30','35','40','45','50','55'];var opt_am=['AM','PM'];this.input_hr=new SelectWidget($td(t,0,0),opt_hr,'50px');this.input_mn=new SelectWidget($td(t,0,1),opt_mn,'50px');this.input_am=new SelectWidget($td(t,0,2),opt_am,'50px');var onchange_fn=function(){me.set(me.get_time());me.run_trigger();}
 this.input_hr.inp.onchange=onchange_fn;this.input_mn.inp.onchange=onchange_fn;this.input_am.inp.onchange=onchange_fn;this.onrefresh=function(){var v=_f.get_value?_f.get_value(me.doctype,me.docname,me.df.fieldname):null;me.set_time(v);if(!v)
 me.set(me.get_time());}
@@ -1658,8 +1663,7 @@
 me.btn1.setAttribute('title','Open Link');}
 if(iconsrc2){var c3=tab.rows[0].insertCell(3);$y(c3,{width:'20px'});me.btn2=$a(c3,'i',iconsrc2,icon_style)
 me.btn2.setAttribute('title','Create New');$dh(me.btn2);}
-if(me.df.colour)
-me.txt.style.background='#'+me.df.colour.split(':')[1];me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
+me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
 var tmpid=0;_f.ButtonField=function(){};_f.ButtonField.prototype=new Field();_f.ButtonField.prototype.with_label=0;_f.ButtonField.prototype.init=function(){this.prev_button=null;if(!this.frm)return;if(cur_frm&&cur_frm.fields[cur_frm.fields.length-1]&&cur_frm.fields[cur_frm.fields.length-1].df.fieldtype=='Button'){this.make_body=function(){this.prev_button=cur_frm.fields[cur_frm.fields.length-1];if(!this.prev_button.prev_button){this.prev_button.button_area=$a(this.prev_button.input_area,'span');}
 this.wrapper=this.prev_button.wrapper;this.input_area=this.prev_button.input_area;this.disp_area=this.prev_button.disp_area;this.button_area=$a(this.prev_button.input_area,'span');}}}
 _f.ButtonField.prototype.make_input=function(){var me=this;if(!this.prev_button){$y(this.input_area,{marginTop:'4px',marginBottom:'4px'});}
@@ -1695,11 +1699,12 @@
  *	lib/js/legacy/widgets/form/form_header.js
  */
 _f.FrmHeader=Class.extend({init:function(parent,frm){this.appframe=new wn.ui.AppFrame(parent)
-this.appframe.$titlebar.append('</span>\
-    <span class="breadcrumb-area"></span>');this.$w=this.appframe.$w;},refresh:function(){wn.views.breadcrumbs($(this.$w.find('.breadcrumb-area')),cur_frm.meta.module,cur_frm.meta.name,cur_frm.docname);this.refresh_labels();this.refresh_toolbar();},refresh_labels:function(){var labinfo={0:['Saved','label-success'],1:['Submitted','label-info'],2:['Cancelled','label-important']}[cint(cur_frm.doc.docstatus)];if(labinfo[0]=='Saved'&&cur_frm.meta.is_submittable){labinfo[0]='Saved, to Submit';}
+this.$w=this.appframe.$w;},refresh:function(){if(cur_frm.cscript.set_breadcrumbs){this.appframe.clear_breadcrumbs();cur_frm.cscript.set_breadcrumbs();}else{wn.views.breadcrumbs(this.appframe,cur_frm.meta.module,cur_frm.meta.name,cur_frm.docname);}
+this.refresh_labels();this.refresh_toolbar();},refresh_labels:function(){var labinfo={0:['Saved','label-success'],1:['Submitted','label-info'],2:['Cancelled','label-important']}[cint(cur_frm.doc.docstatus)];if(labinfo[0]=='Saved'&&cur_frm.meta.is_submittable){labinfo[0]='Saved, to Submit';}
 if(cur_frm.doc.__unsaved||cur_frm.doc.__islocal){labinfo[0]='Not Saved';labinfo[1]='label-warning'}
 this.set_label(labinfo);if(cur_frm.doc.__unsaved&&cint(cur_frm.doc.docstatus)==1&&this.appframe.buttons['Update']){this.appframe.buttons['Update'].toggle(true);}},set_label:function(labinfo){this.$w.find('.label').remove();$(repl('<span class="label %(lab_class)s">\
-   %(lab_status)s</span>',{lab_status:labinfo[0],lab_class:labinfo[1]})).insertBefore(this.$w.find('.breadcrumb-area'))},refresh_toolbar:function(){this.appframe.clear_buttons();var p=cur_frm.get_doc_perms();if(cur_frm.meta.read_only_onload&&!cur_frm.doc.__islocal){if(!cur_frm.editable)
+   %(lab_status)s</span>',{lab_status:labinfo[0],lab_class:labinfo[1]})).insertBefore(this.$w.find('.breadcrumb-area'))},refresh_toolbar:function(){if(cur_frm.meta.hide_toolbar){$('.appframe-toolbar').toggle(false);return;}
+this.appframe.clear_buttons();var p=cur_frm.get_doc_perms();if(cur_frm.meta.read_only_onload&&!cur_frm.doc.__islocal){if(!cur_frm.editable)
 this.appframe.add_button('Edit',function(){cur_frm.edit_doc();},'icon-pencil');else
 this.appframe.add_button('Print View',function(){cur_frm.is_editable[cur_frm.docname]=0;cur_frm.refresh();},'icon-print');}
 var docstatus=cint(cur_frm.doc.docstatus);if(docstatus==0&&p[WRITE]){this.appframe.add_button('Save',function(){cur_frm.save('Save');},'');this.appframe.buttons['Save'].addClass('btn-info');}
@@ -1707,7 +1712,8 @@
 this.appframe.add_button('Submit',function(){cur_frm.savesubmit();},'icon-lock');if(docstatus==1&&p[SUBMIT]){this.appframe.add_button('Update',function(){cur_frm.saveupdate();},'');if(!cur_frm.doc.__unsaved)this.appframe.buttons['Update'].toggle(false);}
 if(docstatus==1&&p[CANCEL])
 this.appframe.add_button('Cancel',function(){cur_frm.savecancel()},'icon-remove');if(docstatus==2&&p[AMEND])
-this.appframe.add_button('Amend',function(){cur_frm.amend_doc()},'icon-pencil');},show:function(){},hide:function(){},hide_close:function(){this.$w.find('.close').toggle(false);}})
+this.appframe.add_button('Amend',function(){cur_frm.amend_doc()},'icon-pencil');if(cur_frm.meta.description){this.appframe.add_help_button(wn.markdown('## '+cur_frm.doctype+'\n\n'
++cur_frm.meta.description));}},show:function(){},hide:function(){},hide_close:function(){this.$w.find('.close').toggle(false);}})
 /*
  *	lib/js/legacy/widgets/form/form.js
  */
@@ -1722,8 +1728,7 @@
 _f.Frm.prototype.setup_std_layout=function(){this.page_layout=new wn.PageLayout({parent:this.wrapper,main_width:(this.meta.in_dialog&&!this.in_form)?'100%':'75%',sidebar_width:(this.meta.in_dialog&&!this.in_form)?'0%':'25%'})
 this.meta.section_style='Simple';this.layout=new Layout(this.page_layout.body,'100%');if(this.meta.in_dialog&&!this.in_form){$(this.page_layout.wrapper).removeClass('layout-wrapper-background');$(this.page_layout.main).removeClass('layout-main-section');$(this.page_layout.sidebar_area).toggle(false);}else{this.setup_sidebar();}
 this.setup_footer();if(!(this.meta.istable||user=='Guest'||(this.meta.in_dialog&&!this.in_form)))
-this.frm_head=new _f.FrmHeader(this.page_layout.head,this);if(this.meta.colour)
-this.layout.wrapper.style.backgroundColor='#'+this.meta.colour.split(':')[1];this.setup_fields_std();}
+this.frm_head=new _f.FrmHeader(this.page_layout.head,this);this.setup_fields_std();}
 _f.Frm.prototype.setup_print=function(){var l=[]
 this.default_format='Standard';for(var key in locals['Print Format']){if(locals['Print Format'][key].doc_type==this.meta.name){l.push(locals['Print Format'][key].name);}}
 if(this.meta.default_print_format)
@@ -1744,11 +1749,15 @@
 _f.Frm.prototype.setup_sidebar=function(){this.sidebar=new wn.widgets.form.sidebar.Sidebar(this);}
 _f.Frm.prototype.setup_footer=function(){var me=this;var f=this.page_layout.footer;f.save_area=$a(this.page_layout.footer,'div','',{display:'none',marginTop:'11px'});f.help_area=$a(this.page_layout.footer,'div');var b=$btn(f.save_area,'Save',function(){cur_frm.save('Save');},{marginLeft:'0px'},'green');f.show_save=function(){$ds(me.page_layout.footer.save_area);}
 f.hide_save=function(){$dh(me.page_layout.footer.save_area);}}
+_f.Frm.prototype.set_intro=function(txt){if(!this.intro_area){this.intro_area=$('<div class="help-box form-intro-area">').insertBefore(this.page_layout.body.firstChild);}
+if(txt){if(txt.search(/<p>/)==-1)txt='<p>'+txt+'</p>';this.intro_area.html(txt);}else{this.intro_area.remove();this.intro_area=null;}}
+_f.Frm.prototype.set_footnote=function(txt){if(!this.footnote_area){this.footnote_area=$('<div class="help-box form-intro-area">').insertAfter(this.page_layout.body.lastChild);}
+if(txt){if(txt.search(/<p>/)==-1)txt='<p>'+txt+'</p>';this.footnote_area.html(txt);}else{this.footnote_area.remove();this.footnote_area=null;}}
 _f.Frm.prototype.setup_fields_std=function(){var fl=wn.meta.docfield_list[this.doctype];fl.sort(function(a,b){return a.idx-b.idx});if(fl[0]&&fl[0].fieldtype!="Section Break"||get_url_arg('embed')){this.layout.addrow();if(fl[0].fieldtype!="Column Break"){var c=this.layout.addcell();$y(c.wrapper,{padding:'8px'});}}
 var sec;for(var i=0;i<fl.length;i++){var f=fl[i];if(f.fieldtype=='Section Break'&&fl[i+1]&&fl[i+1].fieldtype=='Section Break')
 continue;var fn=f.fieldname?f.fieldname:f.label;var fld=make_field(f,this.doctype,this.layout.cur_cell,this);this.fields[this.fields.length]=fld;this.fields_dict[fn]=fld;if(sec&&['Section Break','Column Break'].indexOf(f.fieldtype)==-1){fld.parent_section=sec;sec.fields.push(fld);}
 if(f.fieldtype=='Section Break'){sec=fld;this.sections.push(fld);}
-if((f.fieldtype=='Section Break')&&(fl[i+1])&&(fl[i+1].fieldtype!='Column Break')&&!f.hidden){var c=this.layout.addcell();$y(c.wrapper,{padding:'8px'});}}}
+if((f.fieldtype=='Section Break')&&(fl[i+1])&&(fl[i+1].fieldtype!='Column Break')){var c=this.layout.addcell();$y(c.wrapper,{padding:'8px'});}}}
 _f.Frm.prototype.add_custom_button=function(label,fn,icon){this.frm_head.appframe.add_button(label,fn,icon);}
 _f.Frm.prototype.clear_custom_buttons=function(){this.frm_head.refresh_toolbar()}
 _f.Frm.prototype.add_fetch=function(link_field,src_field,tar_field){if(!this.fetch_dict[link_field]){this.fetch_dict[link_field]={'columns':[],'fields':[]}}
@@ -1772,10 +1781,11 @@
 return 1;}}
 window.history.back();return 0;}
 return 1}
-_f.Frm.prototype.refresh=function(docname){if(docname){if(this.docname!=docname&&(!this.meta.in_dialog||this.in_form)&&!this.meta.istable)scroll(0,0);this.docname=docname;}
+_f.Frm.prototype.refresh=function(docname){if(docname){if(this.docname!=docname&&(!this.meta.in_dialog||this.in_form)&&!this.meta.istable)
+scroll(0,0);this.docname=docname;}
 if(!this.meta.istable){cur_frm=this;this.parent.cur_frm=this;}
 if(this.docname){if(!this.check_doc_perm())return;if(!this.opendocs[this.docname]){this.check_doctype_conflict(this.docname);}
-if(!this.setup_done)this.setup();this.runclientscript('set_perm',this.doctype,this.docname);this.doc=get_local(this.doctype,this.docname);cur_frm.cscript.is_onload=false;if(!this.opendocs[this.docname]){cur_frm.cscript.is_onload=true;this.setnewdoc(this.docname);}
+this.doc=get_local(this.doctype,this.docname);if(!this.setup_done)this.setup();this.runclientscript('set_perm',this.doctype,this.docname);cur_frm.cscript.is_onload=false;if(!this.opendocs[this.docname]){cur_frm.cscript.is_onload=true;this.setnewdoc(this.docname);}
 if(this.doc.__islocal)
 this.is_editable[this.docname]=1;this.editable=this.is_editable[this.docname];if(!this.doc.__archived&&(this.editable||(!this.editable&&this.meta.istable))){if(this.print_wrapper){$dh(this.print_wrapper);$ds(this.page_layout.wrapper);}
 if(!this.meta.istable){this.refresh_header();this.sidebar&&this.sidebar.refresh();}
@@ -1783,14 +1793,15 @@
 if(this.doc.docstatus==0){$(this.wrapper).find('.form-layout-row :input:first').focus();}}else{this.refresh_header();if(this.print_wrapper){this.refresh_print_layout();}
 this.runclientscript('edit_status_changed');}
 $(cur_frm.wrapper).trigger('render_complete');}}
-_f.Frm.prototype.refresh_footer=function(){var f=this.page_layout.footer;if(f.save_area){if(get_url_arg('embed')||(this.editable&&(!this.meta.in_dialog||this.in_form)&&this.doc.docstatus==0&&!this.meta.istable&&this.get_doc_perms()[WRITE])){f.show_save();}else{f.hide_save();}}}
+_f.Frm.prototype.refresh_footer=function(){var f=this.page_layout.footer;if(f.save_area){if(this.editable&&(!this.meta.in_dialog||this.in_form)&&this.doc.docstatus==0&&!this.meta.istable&&this.get_doc_perms()[WRITE]&&(this.fields&&this.fields.length>7)){f.show_save();}else{f.hide_save();}}}
+_f.Frm.prototype.refresh_field=function(fname){cur_frm.fields_dict[fname]&&cur_frm.fields_dict[fname].refresh&&cur_frm.fields_dict[fname].refresh();}
 _f.Frm.prototype.refresh_fields=function(){for(var i=0;i<this.fields.length;i++){var f=this.fields[i];f.perm=this.perm;f.docname=this.docname;var fn=f.df.fieldname||f.df.label;if(fn)
-f.df=get_field(this.doctype,fn,this.docname);if(f.df.fieldtype!='Section Break'&&f.refresh){f.refresh();}}
+f.df=wn.meta.get_docfield(this.doctype,fn,this.docname);if(f.df.fieldtype!='Section Break'&&f.refresh){f.refresh();}}
 $.each(this.sections,function(i,f){f.refresh(true);})
 this.cleanup_refresh(this);}
 _f.Frm.prototype.cleanup_refresh=function(){var me=this;if(me.fields_dict['amended_from']){if(me.doc.amended_from){unhide_field('amended_from');unhide_field('amendment_date');}else{hide_field('amended_from');hide_field('amendment_date');}}
 if(me.fields_dict['trash_reason']){if(me.doc.trash_reason&&me.doc.docstatus==2){unhide_field('trash_reason');}else{hide_field('trash_reason');}}
-if(me.meta.autoname&&me.meta.autoname.substr(0,6)=='field:'&&!me.doc.__islocal){var fn=me.meta.autoname.substr(6);set_field_permlevel(fn,1);}}
+if(me.meta.autoname&&me.meta.autoname.substr(0,6)=='field:'&&!me.doc.__islocal){var fn=me.meta.autoname.substr(6);cur_frm.toggle_display(fn,false);}}
 _f.Frm.prototype.refresh_dependency=function(){var me=this;var doc=locals[this.doctype][this.docname];var has_dep=false;for(fkey in me.fields){var f=me.fields[fkey];f.dependencies_clear=true;if(f.df.depends_on){has_dep=true;}}
 if(!has_dep)return;for(var i=me.fields.length-1;i>=0;i--){var f=me.fields[i];f.guardian_has_value=true;if(f.df.depends_on){var v=doc[f.df.depends_on];if(f.df.depends_on.substr(0,5)=='eval:'){f.guardian_has_value=eval(f.df.depends_on.substr(5));}else if(f.df.depends_on.substr(0,3)=='fn:'){f.guardian_has_value=me.runclientscript(f.df.depends_on.substr(3),me.doctype,me.docname);}else{if(v||(v==0&&!v.substr)){}else{f.guardian_has_value=false;}}
 if(f.guardian_has_value){f.df.hidden=0;f.refresh()}else{f.df.hidden=1;f.refresh()}}}}
@@ -1804,11 +1815,8 @@
 locals[this.doctype][this.docname].trash_reason=reason;}
 if(save_action=='Cancel'){var reason=prompt('Reason for cancellation (mandatory)','');if(!strip(reason)){msgprint('Reason is mandatory, not cancelled');return;}
 locals[this.doctype][this.docname].cancel_reason=reason;locals[this.doctype][this.docname].cancelled_on=dateutil.full_str();locals[this.doctype][this.docname].cancelled_by=user;}else if(save_action=='Update'){}else{validated=true;if(this.cscript.validate)
-this.runclientscript('validate',this.doctype,this.docname);if(!validated){this.savingflag=false;return'Error';}}
-var ret_fn=function(r){me.savingflag=false;if(user=='Guest'&&!r.exc){$dh(me.page_layout.wrapper);$ds(me.saved_wrapper);me.saved_wrapper.innerHTML='<div style="padding: 150px 16px; text-align: center; font-size: 14px;">'
-+(cur_frm.message_after_save?cur_frm.message_after_save:'Your information has been sent. Thank you!')
-+'</div>';return;}
-if(!me.meta.istable){me.refresh(r.docname);}
+this.runclientscript('validate');if(!validated){this.savingflag=false;return'Error';}}
+var ret_fn=function(r){me.savingflag=false;if(!me.meta.istable&&r){me.refresh(r.docname);}
 if(call_back){call_back(r);}}
 var me=this;var ret_fn_err=function(r){var doc=locals[me.doctype][me.docname];me.savingflag=false;ret_fn(r);}
 this.savingflag=true;if(this.docname&&validated){scroll(0,0);return this.savedoc(save_action,ret_fn,ret_fn_err);}}
@@ -1816,7 +1824,7 @@
 $(callingfield.input).set_working();$c('runserverobj',{'docs':doclist,'method':scriptname},function(r,rtxt){if(onrefresh)
 onrefresh(r,rtxt);me.refresh_fields();me.refresh_dependency();if(callingfield)
 $(callingfield.input).done_working();});}}
-_f.Frm.prototype.runclientscript=function(caller,cdt,cdn){var _dt=this.parent_doctype?this.parent_doctype:this.doctype;var _dn=this.parent_docname?this.parent_docname:this.docname;var doc=get_local(_dt,_dn);if(!cdt)cdt=this.doctype;if(!cdn)cdn=this.docname;var ret=null;try{if(this.cscript[caller])
+_f.Frm.prototype.runclientscript=function(caller,cdt,cdn){if(!cdt)cdt=this.doctype;if(!cdn)cdn=this.docname;var ret=null;var doc=cur_frm.doc;try{if(this.cscript[caller])
 ret=this.cscript[caller](doc,cdt,cdn);if(this.cscript['custom_'+caller])
 ret+=this.cscript['custom_'+caller](doc,cdt,cdn);}catch(e){console.log(e);}
 if(caller&&caller.toLowerCase()=='setup'){var doctype=get_local('DocType',this.doctype);var cs=doctype.__js||(doctype.client_script_core+doctype.client_script);if(cs){try{var tmp=eval(cs);}catch(e){console.log(e);}}
@@ -1825,12 +1833,12 @@
 return ret;}
 _f.Frm.prototype.copy_doc=function(onload,from_amend){if(!this.perm[0][CREATE]){msgprint('You are not allowed to create '+this.meta.name);return;}
 var dn=this.docname;var newdoc=LocalDB.copy(this.doctype,dn,from_amend);if(this.meta.allow_attach&&newdoc.file_list&&!from_amend)
-newdoc.file_list=null;var dl=make_doclist(this.doctype,dn);var tf_dict={};for(var d in dl){d1=dl[d];if(!tf_dict[d1.parentfield]){tf_dict[d1.parentfield]=get_field(d1.parenttype,d1.parentfield);}
+newdoc.file_list=null;var dl=make_doclist(this.doctype,dn);var tf_dict={};for(var d in dl){d1=dl[d];if(d1.parentfield&&!tf_dict[d1.parentfield]){tf_dict[d1.parentfield]=wn.meta.get_docfield(d1.parenttype,d1.parentfield);}
 if(d1.parent==dn&&cint(tf_dict[d1.parentfield].no_copy)!=1){var ch=LocalDB.copy(d1.doctype,d1.name,from_amend);ch.parent=newdoc.name;ch.docstatus=0;ch.owner=user;ch.creation='';ch.modified_by=user;ch.modified='';}}
 newdoc.__islocal=1;newdoc.docstatus=0;newdoc.owner=user;newdoc.creation='';newdoc.modified_by=user;newdoc.modified='';if(onload)onload(newdoc);loaddoc(newdoc.doctype,newdoc.name);}
 _f.Frm.prototype.reload_doc=function(){this.check_doctype_conflict(this.docname);var me=this;var ret_fn=function(r,rtxt){me.runclientscript('setup',me.doctype,me.docname);me.refresh();}
 if(me.doc.__islocal){$c('webnotes.widgets.form.load.getdoctype',{'doctype':me.doctype},ret_fn,null,null,'Refreshing '+me.doctype+'...');}else{$c('webnotes.widgets.form.load.getdoc',{'name':me.docname,'doctype':me.doctype,'getdoctype':1,'user':user},ret_fn,null,null,'Refreshing '+me.docname+'...');}}
-_f.Frm.prototype.savedoc=function(save_action,onsave,onerr){this.error_in_section=0;save_doclist(this.doctype,this.docname,save_action,onsave,onerr);}
+_f.Frm.prototype.savedoc=function(save_action,onsave,onerr){save_doclist(this.doctype,this.docname,save_action,onsave,onerr);}
 _f.Frm.prototype.saveupdate=function(){this.save('Update');}
 _f.Frm.prototype.savesubmit=function(){var answer=confirm("Permanently Submit "+this.docname+"?");var me=this;if(answer){this.save('Submit',function(r){if(!r.exc&&me.cscript.on_submit){me.runclientscript('on_submit',me.doctype,me.docname);}});}}
 _f.Frm.prototype.savecancel=function(){var answer=confirm("Permanently Cancel "+this.docname+"?");if(answer)this.save('Cancel');}
@@ -1841,25 +1849,35 @@
 this.copy_doc(fn,1);}
 _f.get_value=function(dt,dn,fn){if(locals[dt]&&locals[dt][dn])
 return locals[dt][dn][fn];}
-_f.set_value=function(dt,dn,fn,v){var d=locals[dt][dn];if(!d){console.log('_f.set_value - '+fn+': "'+dt+','+dn+'" not found');return;}
-var changed=d[fn]!=v;if(changed&&(d[fn]==null||v==null)&&(cstr(d[fn])==cstr(v)))changed=0;if(changed){var prev_unsaved=d.__unsaved
-d[fn]=v;d.__unsaved=1;if(d.parent&&d.parenttype){var doc=locals[d.parenttype][d.parent];doc.__unsaved=1;var frm=wn.views.formview[d.parenttype].frm;}else{var doc=locals[d.doctype][d.name]
-doc.__unsaved=1;var frm=wn.views.formview[d.doctype]&&wn.views.formview[d.doctype].frm;}
-if(frm&&frm==cur_frm&&frm.frm_head&&!prev_unsaved){frm.frm_head.refresh_labels();}}}
+_f.Frm.prototype.set_value_in_locals=function(dt,dn,fn,v){var d=locals[dt][dn];if(!d)return;var changed=d[fn]!=v;if(changed&&(d[fn]==null||v==null)&&(cstr(d[fn])==cstr(v)))
+changed=false;if(changed){d[fn]=v;if(d.parenttype)
+d.__unsaved=1;this.set_unsaved();}}
+_f.Frm.prototype.set_unsaved=function(){if(cur_frm.doc.__unsaved)return;cur_frm.doc.__unsaved=1;cur_frm.frm_head.refresh_labels()}
 _f.Frm.prototype.show_comments=function(){if(!cur_frm.comments){cur_frm.comments=new Dialog(540,400,'Comments');cur_frm.comments.comment_body=$a(cur_frm.comments.body,'div','dialog_frm');$y(cur_frm.comments.body,{backgroundColor:'#EEE'});cur_frm.comments.list=new CommentList(cur_frm.comments.comment_body);}
 cur_frm.comments.list.dt=cur_frm.doctype;cur_frm.comments.list.dn=cur_frm.docname;cur_frm.comments.show();cur_frm.comments.list.run();}
+_f.Frm.prototype.get_doc=function(){return locals[this.doctype][this.docname];}
+_f.Frm.prototype.get_doclist=function(){return make_doclist(this.doctype,this.docname);}
+_f.Frm.prototype.field_map=function(fnames,fn){if(typeof fnames=='string'){if(fnames=='*'){fnames=keys(this.fields_dict);}else{fnames=[fnames];}}
+$.each(fnames,function(i,f){var field=wn.meta.get_docfield(cur_frm.doctype,f,cur_frm.docname)
+if(field){fn(field);cur_frm.refresh_field(f);};})}
+_f.Frm.prototype.set_df_property=function(fieldname,property,value){var field=wn.meta.get_docfield(cur_frm.doctype,fieldname,cur_frm.docname)
+if(field){field[property]=value;cur_frm.refresh_field(fieldname);};}
+_f.Frm.prototype.toggle_enable=function(fnames,enable){cur_frm.field_map(fnames,function(field){field.disabled=enable?false:true;});}
+_f.Frm.prototype.toggle_reqd=function(fnames,mandatory){cur_frm.field_map(fnames,function(field){field.reqd=mandatory?true:false;});}
+_f.Frm.prototype.toggle_display=function(fnames,show){cur_frm.field_map(fnames,function(field){field.hidden=show?false:true;});}
+_f.Frm.prototype.call_server=function(method,args,callback){$c_obj(cur_frm.get_doclist(),method,args,callback);}
+_f.Frm.prototype.set_value=function(field,value){cur_frm.get_doc()[field]=value;cur_frm.fields_dict[field].refresh();}
 /*
  *	lib/js/legacy/widgets/form/form_fields.js
  */
 _f.ColumnBreak=function(){this.set_input=function(){};}
-_f.ColumnBreak.prototype.make_body=function(){if((!this.perm[this.df.permlevel])||(!this.perm[this.df.permlevel][READ])){return;}
-this.cell=this.frm.layout.addcell(this.df.width);$y(this.cell.wrapper,{padding:'8px'});_f.cur_col_break_width=this.df.width;var fn=this.df.fieldname?this.df.fieldname:this.df.label;if(this.df&&this.df.label){this.label=$a(this.cell.wrapper,'div','','',this.df.label);}}
-_f.ColumnBreak.prototype.refresh=function(layout){if(!this.cell)return;if(this.set_hidden!=this.df.hidden){if(this.df.hidden)
+_f.ColumnBreak.prototype.make_body=function(){this.cell=this.frm.layout.addcell(this.df.width);$y(this.cell.wrapper,{padding:'8px'});_f.cur_col_break_width=this.df.width;var fn=this.df.fieldname?this.df.fieldname:this.df.label;if(this.df&&this.df.label){this.label=$a(this.cell.wrapper,'h4','','',this.df.label);}}
+_f.ColumnBreak.prototype.refresh=function(layout){var hidden=0;if((!this.perm[this.df.permlevel])||(!this.perm[this.df.permlevel][READ])||this.df.hidden){hidden=1;}
+if(this.set_hidden!=hidden){if(hidden)
 this.cell.hide();else
-this.cell.show();this.set_hidden=this.df.hidden;}}
+this.cell.show();this.set_hidden=hidden;}}
 _f.SectionBreak=function(){this.fields=[];this.set_input=function(){};this.make_row=function(){this.row=this.df.label?this.frm.layout.addrow():this.frm.layout.addsubrow();}}
-_f.SectionBreak.prototype.make_body=function(){var me=this;if((!this.perm[this.df.permlevel])||(!this.perm[this.df.permlevel][READ])){return;}
-this.make_row();if(this.df.label){if(!this.df.description)
+_f.SectionBreak.prototype.make_body=function(){var me=this;this.make_row();if(this.df.label){if(!this.df.description)
 this.df.description='';$(this.row.main_head).html(repl('<div class="form-section-head">\
     <h3 class="head">%(label)s</h3>\
     <div class="help small" \
@@ -1875,7 +1893,8 @@
 if(f.df.reqd&&!v){return true;}
 if(f.df.fieldtype=='Table'){if(f.grid.get_children().length||f.df.reqd){return true;}}}
 return false;}
-_f.SectionBreak.prototype.refresh=function(from_form){if(this.df.hidden){if(this.row)this.row.hide();}else{if(this.row)this.row.show();}}
+_f.SectionBreak.prototype.refresh=function(from_form){var hidden=0;if((!this.perm[this.df.permlevel])||(!this.perm[this.df.permlevel][READ])||this.df.hidden){hidden=1;}
+if(hidden){if(this.row)this.row.hide();}else{if(this.row)this.row.show();}}
 _f.ImageField=function(){this.images={};}
 _f.ImageField.prototype=new Field();_f.ImageField.prototype.onmake=function(){this.no_img=$a(this.wrapper,'div','no_img');this.no_img.innerHTML="No Image";$dh(this.no_img);}
 _f.ImageField.prototype.get_image_src=function(doc){if(doc.file_list){file=doc.file_list.split(',');extn=file[0].split('.');extn=extn[extn.length-1].toLowerCase();var img_extn_list=['gif','jpg','bmp','jpeg','jp2','cgm','ief','jpm','jpx','png','tiff','jpe','tif'];if(in_list(img_extn_list,extn)){var src=wn.request.url+"?cmd=downloadfile&file_id="+file[1];}}else{var src="";}
@@ -1885,8 +1904,7 @@
 $w(img,allow_width+'px');}else{$ds(this.no_img);}}
 _f.ImageField.prototype.set_disp=function(val){}
 _f.ImageField.prototype.set=function(val){}
-_f.TableField=function(){};_f.TableField.prototype=new Field();_f.TableField.prototype.with_label=0;_f.TableField.prototype.make_body=function(){if(this.perm[this.df.permlevel]&&this.perm[this.df.permlevel][READ]){if(this.df.description){this.desc_area=$a(this.parent,'div','help small','',this.df.description)}
-this.grid=new _f.FormGrid(this);if(this.frm)this.frm.grids[this.frm.grids.length]=this;this.grid.make_buttons();}}
+_f.TableField=function(){};_f.TableField.prototype=new Field();_f.TableField.prototype.with_label=0;_f.TableField.prototype.make_body=function(){if(this.perm[this.df.permlevel]&&this.perm[this.df.permlevel][READ]){this.grid=new _f.FormGrid(this);if(this.frm)this.frm.grids[this.frm.grids.length]=this;this.grid.make_buttons();if(this.df.description){this.desc_area=$a(this.parent,'div','help small',{marginBottom:'9px',marginTop:'0px'},this.df.description)}}}
 _f.TableField.prototype.refresh=function(){if(!this.grid)return;var st=this.get_status();if(!this.df['default'])
 this.df['default']='';this.grid.can_add_rows=false;this.grid.can_edit=false
 if(st=='Write'){if(cur_frm.editable&&this.perm[this.df.permlevel]&&this.perm[this.df.permlevel][WRITE]){this.grid.can_edit=true;if(this.df['default'].toLowerCase()!='no toolbar')
@@ -1913,7 +1931,7 @@
 _f.Grid.prototype.init=function(parent,row_height){var me=this;this.col_idx_by_name={}
 this.alt_row_bg='#F2F2FF';this.row_height=row_height;if(!row_height)this.row_height='26px';this.make_ui(parent);this.insert_column('','','Int','Sr','50px','',[1,0,0]);if(this.oninit)this.oninit();$(this.wrapper).bind('keydown',function(e){me.notify_keypress(e,e.which);})
 $(cur_frm.wrapper).bind('render_complete',function(){me.set_ht();});}
-_f.Grid.prototype.make_ui=function(parent){var ht=make_table($a(parent,'div'),1,2,'100%',['60%','40%']);this.main_title=$td(ht,0,0);this.main_title.className='columnHeading';$td(ht,0,1).style.textAlign='right';this.tbar_div=$a($td(ht,0,1),'div','grid_tbarlinks');this.tbar_tab=make_table(this.tbar_div,1,4,'100%',['25%','25%','25%','25%']);this.wrapper=$a(parent,'div','grid_wrapper');this.head_wrapper=$a(this.wrapper,'div','grid_head_wrapper');this.head_tab=$a(this.head_wrapper,'table','grid_head_table');this.head_row=this.head_tab.insertRow(0);this.tab_wrapper=$a(this.wrapper,'div','grid_tab_wrapper');this.tab=$a(this.tab_wrapper,'table','grid_table');var me=this;this.wrapper.onscroll=function(){me.head_wrapper.style.top=me.wrapper.scrollTop+'px';}}
+_f.Grid.prototype.make_ui=function(parent){var ht=make_table($a(parent,'div'),1,2,'100%',['55%','45%']);this.main_title=$td(ht,0,0);this.main_title.className='columnHeading';$td(ht,0,1).style.textAlign='right';this.tbar_div=$a($td(ht,0,1),'div','grid_tbarlinks');this.tbar_tab=make_table(this.tbar_div,1,4,'100%',['25%','25%','25%','25%']);this.wrapper=$a(parent,'div','grid_wrapper round');this.head_wrapper=$a(this.wrapper,'div','grid_head_wrapper');this.head_tab=$a(this.head_wrapper,'table','grid_head_table');this.head_row=this.head_tab.insertRow(0);this.tab_wrapper=$a(this.wrapper,'div','grid_tab_wrapper');this.tab=$a(this.tab_wrapper,'table','grid_table');var me=this;this.wrapper.onscroll=function(){me.head_wrapper.style.top=me.wrapper.scrollTop+'px';}}
 _f.Grid.prototype.show=function(){if(this.can_edit&&this.field.df['default'].toLowerCase()!='no toolbar'){$ds(this.tbar_div);if(this.can_add_rows){$td(this.tbar_tab,0,0).style.display='table-cell';$td(this.tbar_tab,0,1).style.display='table-cell';}else{$td(this.tbar_tab,0,0).style.display='none';$td(this.tbar_tab,0,1).style.display='none';}}else{$dh(this.tbar_div);}
 $ds(this.wrapper);}
 _f.Grid.prototype.hide=function(){$dh(this.wrapper);$dh(this.tbar_div);}
@@ -1937,7 +1955,7 @@
 $(document).bind('click',function(e){var me=this;var is_target_toolbar=function(){return $(e.target).parents('.grid_tbarlinks').length;}
 var is_target_input=function(){if(e.target.tagName.toLowerCase()=='option')return true;return $(e.target).parents().get().indexOf(_f.cur_grid_cell)!=-1;}
 if(_f.cur_grid_cell&&!is_target_input()&&!is_target_toolbar()){if(!(text_dialog&&text_dialog.display)&&!datepicker_active&&!(selector&&selector.display)){setTimeout('_f.cur_grid_cell.grid.cell_deselect()',500);return false;}}});_f.Grid.prototype.cell_deselect=function(){if(_f.cur_grid_cell){var c=_f.cur_grid_cell;c.grid.remove_template(c);c.div.className='grid_cell_div';if(c.is_odd)c.div.style.border='2px solid '+c.grid.alt_row_bg;else c.div.style.border='2px solid #FFF';_f.cur_grid_cell=null;}}
-_f.Grid.prototype.cell_select=function(cell,ri,ci){if(_f.cur_grid_cell==cell&&cell.hc)return;if(ri!=null&&ci!=null)
+_f.Grid.prototype.cell_select=function(cell,ri,ci){if(cell&&_f.cur_grid_cell==cell&&cell.hc)return;if(ri!=null&&ci!=null)
 cell=this.tab.rows[ri].cells[ci];var hc=this.head_row.cells[cell.cellIndex];if(!hc.template){this.make_template(hc);}
 hc.template.perm=this.field?this.field.perm:hc.perm;if(hc.fieldname&&hc.template.get_status()=='Write'){this.cell_deselect();cell.div.style.border='2px solid #88F';_f.cur_grid_cell=cell;this.add_template(cell);}}
 _f.Grid.prototype.add_template=function(cell){if(!cell.row.docname&&this.add_newrow){this.add_newrow();this.cell_select(cell);}else{var hc=this.head_row.cells[cell.cellIndex];cell.div.innerHTML='';cell.div.appendChild(hc.template.wrapper);hc.template.activate(cell.row.docname);hc.template.activated=1;cell.hc=hc;if(hc.template.input&&hc.template.input.set_width){hc.template.input.set_width($(cell).width());}}}
@@ -1951,7 +1969,7 @@
 cell.div.removeChild(hc.template.wrapper);this.set_cell_value(cell);hc.template.activated=0;}
 _f.Grid.prototype.notify_keypress=function(e,keycode){if(keycode>=37&&keycode<=40&&e.shiftKey){if(text_dialog&&text_dialog.display){return;}}else
 return;if(!_f.cur_grid_cell)return;if(_f.cur_grid_cell.grid!=this)return;var ri=_f.cur_grid_cell.row.rowIndex;var ci=_f.cur_grid_cell.cellIndex;switch(keycode){case 38:if(ri>0){this.cell_select('',ri-1,ci);}break;case 40:if(ri<(this.tab.rows.length-1)){this.cell_select('',ri+1,ci);}break;case 39:if(ci<(this.head_row.cells.length-1)){this.cell_select('',ri,ci+1);}break;case 37:if(ci>1){this.cell_select('',ri,ci-1);}break;}}
-_f.Grid.prototype.make_template=function(hc){hc.template=make_field(get_field(hc.doctype,hc.fieldname),hc.doctype,'',this.field.frm,true);hc.template.grid=this;}
+_f.Grid.prototype.make_template=function(hc){hc.template=make_field(wn.meta.get_docfield(hc.doctype,hc.fieldname),hc.doctype,'',this.field.frm,true);hc.template.grid=this;}
 _f.Grid.prototype.append_rows=function(n){for(var i=0;i<n;i++)this.append_row();}
 _f.Grid.prototype.truncate_rows=function(n){for(var i=0;i<n;i++)this.tab.deleteRow(this.tab.rows.length-1);}
 _f.Grid.prototype.set_data=function(data){this.cell_deselect();this.reset_table_width();if(data.length>this.tab.rows.length)
@@ -1968,22 +1986,22 @@
 _f.FormGrid=function(field){this.field=field;this.doctype=field.df.options;if(!this.doctype){show_alert('No Options for table '+field.df.label);}
 this.col_break_width=cint(this.field.col_break_width);if(!this.col_break_width)this.col_break_width=100;$y(field.parent,{marginTop:'8px'});this.init(field.parent,field.df.width);this.setup();}
 _f.FormGrid.prototype=new _f.Grid();_f.FormGrid.prototype.setup=function(){this.make_columns();}
+_f.FormGrid.prototype.make_buttons=function(){var me=this;this.tbar_btns={};this.tbar_btns['Del']=this.make_tbar_link($td(this.tbar_tab,0,0),'Del',function(){me.delete_row();},'icon-remove-sign');this.tbar_btns['Ins']=this.make_tbar_link($td(this.tbar_tab,0,1),'Ins',function(){me.insert_row();},'icon-plus');this.tbar_btns['Up']=this.make_tbar_link($td(this.tbar_tab,0,2),'Up',function(){me.move_row(true);},'icon-arrow-up');this.tbar_btns['Dn']=this.make_tbar_link($td(this.tbar_tab,0,3),'Dn',function(){me.move_row(false);},'icon-arrow-down');for(var i in this.btns)
+this.btns[i].isactive=true;}
 _f.FormGrid.prototype.make_tbar_link=function(parent,label,fn,icon){var div=$a(parent,'div','',{cursor:'pointer'});var t=make_table(div,1,2,'90%',['20px',null]);var img=$a($td(t,0,0),'i',icon);$y($td(t,0,0),{textAlign:'right'});var l=$a($td(t,0,1),'span','link_type',{color:'#333'});l.style.fontSize='11px';l.innerHTML=label;div.onclick=fn;div.show=function(){$ds(this);}
 div.hide=function(){$dh(this);}
 $td(t,0,0).isactive=1;$td(t,0,1).isactive=1;l.isactive=1;div.isactive=1;img.isactive=1;return div;}
-_f.FormGrid.prototype.make_buttons=function(){var me=this;this.tbar_btns={};this.tbar_btns['Del']=this.make_tbar_link($td(this.tbar_tab,0,0),'Del',function(){me.delete_row();},'icon-remove-sign');this.tbar_btns['Ins']=this.make_tbar_link($td(this.tbar_tab,0,1),'Ins',function(){me.insert_row();},'icon-plus');this.tbar_btns['Up']=this.make_tbar_link($td(this.tbar_tab,0,2),'Up',function(){me.move_row(true);},'icon-arrow-up');this.tbar_btns['Dn']=this.make_tbar_link($td(this.tbar_tab,0,3),'Dn',function(){me.move_row(false);},'icon-arrow-down');for(var i in this.btns)
-this.btns[i].isactive=true;}
 _f.FormGrid.prototype.make_columns=function(){var gl=wn.meta.docfield_list[this.field.df.options];if(!gl){alert('Table details not found "'+this.field.df.options+'"');}
 gl.sort(function(a,b){return a.idx-b.idx});var p=this.field.perm;for(var i=0;i<gl.length;i++){if(p[this.field.df.permlevel]&&p[this.field.df.permlevel][READ]){this.insert_column(this.field.df.options,gl[i].fieldname,gl[i].fieldtype,gl[i].label,gl[i].width,gl[i].options,this.field.perm,gl[i].reqd);if(gl[i].hidden){this.set_column_disp(gl[i].fieldname,false);}}}}
 _f.FormGrid.prototype.set_column_label=function(fieldname,label){for(var i=0;i<this.head_row.cells.length;i++){var c=this.head_row.cells[i];if(c.fieldname==fieldname){c.innerHTML='<div class="grid_head_div">'+label+'</div>';c.cur_label=label;break;}}}
 _f.FormGrid.prototype.get_children=function(){return getchildren(this.doctype,this.field.frm.docname,this.field.df.fieldname,this.field.frm.doctype);}
 _f.FormGrid.prototype.refresh=function(){var docset=this.get_children();var data=[];for(var i=0;i<docset.length;i++){locals[this.doctype][docset[i].name].idx=i+1;data[data.length]=docset[i].name;}
 this.set_data(data);if(_f.frm_dialog&&_f.frm_dialog.dialog.display&&_f.frm_dialog.cur_frm){_f.frm_dialog.cur_frm.refresh();}}
-_f.FormGrid.prototype.set_unsaved=function(){locals[cur_frm.doctype][cur_frm.docname].__unsaved=1;cur_frm.frm_head&&cur_frm.frm_head.refresh_labels();}
+_f.FormGrid.prototype.set_unsaved=function(){cur_frm.set_unsaved();}
 _f.FormGrid.prototype.insert_row=function(){var d=this.new_row_doc();var ci=_f.cur_grid_cell.cellIndex;var row_idx=_f.cur_grid_cell.row.rowIndex;d.idx=row_idx+1;for(var ri=row_idx;ri<this.tab.rows.length;ri++){var r=this.tab.rows[ri];if(r.docname)
 locals[this.doctype][r.docname].idx++;}
-this.refresh();this.cell_select('',row_idx,ci);this.set_unsaved();}
-_f.FormGrid.prototype.new_row_doc=function(){var n=LocalDB.create(this.doctype);var d=locals[this.doctype][n];d.parent=this.field.frm.docname;d.parentfield=this.field.df.fieldname;d.parenttype=this.field.frm.doctype;return d;}
+this.refresh();this.cell_select('',row_idx,ci);}
+_f.FormGrid.prototype.new_row_doc=function(){var n=LocalDB.create(this.doctype);var d=locals[this.doctype][n];d.parent=this.field.frm.docname;d.parentfield=this.field.df.fieldname;d.parenttype=this.field.frm.doctype;this.set_unsaved();return d;}
 _f.FormGrid.prototype.add_newrow=function(){var r=this.tab.rows[this.tab.rows.length-1];if(!r.is_newrow)
 show_alert('fn: add_newrow: Adding a row which is not flagged as new');var d=this.new_row_doc();d.idx=r.rowIndex+1;r.docname=d.name;r.is_newrow=false;this.set_cell_value(r.cells[0]);this.make_newrow();this.refresh_row(r.rowIndex,d.name);if(this.onrowadd)this.onrowadd(cur_frm.doc,d.doctype,d.name);return d.name;}
 _f.FormGrid.prototype.make_newrow=function(from_add_btn){if(!this.can_add_rows)
@@ -1993,7 +2011,7 @@
 _f.FormGrid.prototype.check_selected=function(){if(!_f.cur_grid_cell){show_alert('Select a cell first');return false;}
 if(_f.cur_grid_cell.grid!=this){show_alert('Select a cell first');return false;}
 return true;}
-_f.FormGrid.prototype.delete_row=function(dt,dn){if(dt&&dn){LocalDB.delete_record(dt,dn);this.refresh();}else{if(!this.check_selected())return;var r=_f.cur_grid_cell.row;if(r.is_newrow)return;var ci=_f.cur_grid_cell.cellIndex;var ri=_f.cur_grid_cell.row.rowIndex;LocalDB.delete_record(this.doctype,r.docname);this.refresh();if(ri<(this.tab.rows.length-2))
+_f.FormGrid.prototype.delete_row=function(dt,dn){if(dt&&dn){LocalDB.delete_record(dt,dn);this.refresh();}else{if(!this.check_selected())return;var r=_f.cur_grid_cell.row;if(r.is_newrow)return;var ci=_f.cur_grid_cell.cellIndex;var ri=_f.cur_grid_cell.row.rowIndex;LocalDB.delete_record(this.doctype,r.docname);this.refresh();if(ri<(this.tab.rows.length-1))
 this.cell_select(null,ri,ci);else _f.cur_grid_cell=null;}
 this.set_unsaved();}
 _f.FormGrid.prototype.move_row=function(up){if(!this.check_selected())return;var r=_f.cur_grid_cell.row;if(r.is_newrow)return;if(up&&r.rowIndex>0){var swap_row=this.tab.rows[r.rowIndex-1];}else if(!up){var len=this.tab.rows.length;if(this.tab.rows[len-1].is_newrow)
@@ -2072,7 +2090,7 @@
 var h2_style={fontSize:'16px',color:'#888',marginBottom:'8px',paddingBottom:'8px',borderBottom:(me.layout.with_border?'0px':'1px solid #000')}
 var h2=$a(me.layout.cur_row.header,'div','',h2_style);h2.innerHTML=docname;},build_data:function(data,doctype,docname){if(data[0]&&data[0].fieldtype!="Section Break"){me.layout.addrow();if(data[0].fieldtype!="Column Break"){me.layout.addcell();}}
 $.extend(this,{generate_custom_html:function(field,doctype,docname){var container=$a(me.layout.cur_cell,'div');container.innerHTML=cur_frm.pformat[field.fieldname](locals[doctype][docname]);},render_normal:function(field,data,i){switch(field.fieldtype){case'Section Break':me.layout.addrow();if(data[i+1]&&data[i+1].fieldtype!='Column Break'){me.layout.addcell();}
-break;case'Column Break':me.layout.addcell(field.width,field.label);break;case'Table':var table=print_table(doctype,docname,field.fieldname,field.options,null,null,null,null);me.layout=_p.print_std_add_table(table,me.layout,me.pf_list,doctype,no_letterhead);break;case'HTML':var div=$a(me.layout.cur_cell,'div');div.innerHTML=field.options;break;case'Code':var div=$a(me.layout.cur_cell,'div');var val=_f.get_value(doctype,docname,field.fieldname);div.innerHTML='<div>'+field.label+': </div><pre style="font-family: Courier, Fixed;">'+(val?val:'')+'</pre>';break;case'Text Editor':var div=$a(me.layout.cur_cell,'div');var val=_f.get_value(doctype,docname,field.fieldname);div.innerHTML=val?val:'';break;default:_p.print_std_add_field(doctype,docname,field,me.layout);break;}}});for(var i=0;i<data.length;i++){var fieldname=data[i].fieldname?data[i].fieldname:data[i].label;var field=fieldname?get_field(doctype,fieldname,docname):data[i];if(!field.print_hide){if(cur_frm.pformat[field.fieldname]){this.generate_custom_html(field,doctype,docname);}else{this.render_normal(field,data,i);}}}
+break;case'Column Break':me.layout.addcell(field.width,field.label);break;case'Table':var table=print_table(doctype,docname,field.fieldname,field.options,null,null,null,null);me.layout=_p.print_std_add_table(table,me.layout,me.pf_list,doctype,no_letterhead);break;case'HTML':var div=$a(me.layout.cur_cell,'div');div.innerHTML=field.options;break;case'Code':var div=$a(me.layout.cur_cell,'div');var val=_f.get_value(doctype,docname,field.fieldname);div.innerHTML='<div>'+field.label+': </div><pre style="font-family: Courier, Fixed;">'+(val?val:'')+'</pre>';break;case'Text Editor':var div=$a(me.layout.cur_cell,'div');var val=_f.get_value(doctype,docname,field.fieldname);div.innerHTML=val?val:'';break;default:_p.print_std_add_field(doctype,docname,field,me.layout);break;}}});for(var i=0;i<data.length;i++){var fieldname=data[i].fieldname?data[i].fieldname:data[i].label;var field=fieldname?wn.meta.get_docfield(doctype,fieldname,docname):data[i];if(!field.print_hide){if(cur_frm.pformat[field.fieldname]){this.generate_custom_html(field,doctype,docname);}else{this.render_normal(field,data,i);}}}
 me.layout.close_borders();},build_html:function(){var html='';for(var i=0;i<me.pf_list.length;i++){if(me.pf_list[i].wrapper){html+=me.pf_list[i].wrapper.innerHTML;}else if(me.pf_list[i].innerHTML){html+=me.pf_list[i].innerHTML;}else{html+=me.pf_list[i];}}
 this.pf_list=[];return html;}});this.build_head(data,doctype,docname);this.build_data(data,doctype,docname);var html=this.build_html();return html;},add_layout:function(doctype){var layout=new Layout();layout.addrow();if(locals['DocType'][doctype].print_outline=='Yes'){layout.with_border=1}
 return layout;},print_std_add_table:function(t,layout,pf_list,dt,no_letterhead){if(t.appendChild){layout.cur_cell.appendChild(t);}else{page_break='\n\
@@ -2122,15 +2140,13 @@
 if(!allow_edit)unfreeze();});}
 set_multiple=function(dt,dn,dict,table_field){var d=locals[dt][dn];for(var key in dict){d[key]=dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}}
 refresh_many=function(flist,dn,table_field){for(var i in flist){if(table_field)refresh_field(flist[i],dn,table_field);else refresh_field(flist[i]);}}
-set_field_tip=function(n,txt){var df=get_field(cur_frm.doctype,n,cur_frm.docname);if(df)df.description=txt;if(cur_frm&&cur_frm.fields_dict){if(cur_frm.fields_dict[n])
+set_field_tip=function(n,txt){var df=wn.meta.get_docfield(cur_frm.doctype,n,cur_frm.docname);if(df)df.description=txt;if(cur_frm&&cur_frm.fields_dict){if(cur_frm.fields_dict[n])
 cur_frm.fields_dict[n].comment_area.innerHTML=replace_newlines(txt);else
 errprint('[set_field_tip] Unable to set field tip: '+n);}}
-refresh_field=function(n,docname,table_field){if(typeof n==typeof[])refresh_many(n,docname,table_field);if(table_field){if(_f.frm_dialog&&_f.frm_dialog.display){if(_f.frm_dialog.cur_frm.fields_dict[n]&&_f.frm_dialog.cur_frm.fields_dict[n].refresh)
-_f.frm_dialog.cur_frm.fields_dict[n].refresh();}else{var g=_f.cur_grid_cell;if(g)var hc=g.grid.head_row.cells[g.cellIndex];if(g&&hc&&hc.fieldname==n&&g.row.docname==docname){hc.template.refresh();}else{cur_frm.fields_dict[table_field].grid.refresh_cell(docname,n);}}}else if(cur_frm&&cur_frm.fields_dict){if(cur_frm.fields_dict[n]&&cur_frm.fields_dict[n].refresh)
-cur_frm.fields_dict[n].refresh();}}
-set_field_options=function(n,txt){var df=get_field(cur_frm.doctype,n,cur_frm.docname);if(df)df.options=txt;refresh_field(n);}
-set_field_permlevel=function(n,level){var df=get_field(cur_frm.doctype,n,cur_frm.docname);if(df)df.permlevel=level;refresh_field(n);}
-toggle_field=function(n,hidden){var df_obj=get_field_obj(n);var df=get_field(cur_frm.doctype,n,cur_frm.docname);if(df){if(df_obj.df.fieldtype==="Section Break"){$(df_obj.row.wrapper).toggle(hidden?false:true);}else if(df_obj.df.fieldtype==="Column Break"){$(df_obj.cell.wrapper).toggle(hidden?false:true);}else{df.hidden=hidden;refresh_field(n);}}
+refresh_field=function(n,docname,table_field){if(typeof n==typeof[])refresh_many(n,docname,table_field);if(table_field){if(_f.frm_dialog&&_f.frm_dialog.display){_f.frm_dialog.cur_frm.refresh_field(n);}else{var g=_f.cur_grid_cell;if(g)var hc=g.grid.head_row.cells[g.cellIndex];if(g&&hc&&hc.fieldname==n&&g.row.docname==docname){hc.template.refresh();}else{cur_frm.fields_dict[table_field].grid.refresh_cell(docname,n);}}}else if(cur_frm){cur_frm.refresh_field(n)}}
+set_field_options=function(n,txt){cur_frm.set_df_property(n,'options',txt)}
+set_field_permlevel=function(n,level){cur_frm.set_df_property(n,'permlevel',level)}
+toggle_field=function(n,hidden){var df_obj=get_field_obj(n);var df=Meta.get_field(cur_frm.doctype,n,cur_frm.docname);if(df){if(df_obj.df.fieldtype==="Section Break"){$(df_obj.row.wrapper).toggle(hidden?false:true);}else if(df_obj.df.fieldtype==="Column Break"){$(df_obj.cell.wrapper).toggle(hidden?false:true);}else{df.hidden=hidden;refresh_field(n);}}
 else{console.log((hidden?"hide_field":"unhide_field")+" cannot find field "+n);}}
 hide_field=function(n){if(cur_frm){if(n.substr)toggle_field(n,1);else{for(var i in n)toggle_field(n[i],1)}}}
 unhide_field=function(n){if(cur_frm){if(n.substr)toggle_field(n,0);else{for(var i in n)toggle_field(n[i],0)}}}
@@ -2167,14 +2183,13 @@
 /*
  *	lib/js/legacy/wn/widgets/form/sidebar.js
  */
-wn.widgets.form.sidebar={Sidebar:function(form){var me=this;this.form=form;this.opts={sections:[{title:'Actions',items:[{type:'link',label:'New',icon:'icon-plus',display:function(){return in_list(profile.can_create,form.doctype)},onclick:function(){new_doc(me.form.doctype)}},{type:'link',label:'List',icon:'icon-list',display:function(){return!me.form.meta.issingle;},onclick:function(){window.location.href="#!List/"+me.form.doctype}},{type:'link',label:'Refresh',icon:'icon-refresh',onclick:function(){me.form.reload_doc()}},{type:'link',label:'Print',display:function(){return!(me.form.doc.__islocal||me.form.meta.allow_print);},icon:'icon-print',onclick:function(){me.form.print_doc()}},{type:'link',label:'Email',display:function(){return!(me.form.doc.__islocal||me.form.meta.allow_email);},icon:'icon-envelope',onclick:function(){me.form.email_doc()}},{type:'link',label:'Copy',display:function(){return in_list(profile.can_create,me.form.doctype)&&!me.form.meta.allow_copy},icon:'icon-file',onclick:function(){me.form.copy_doc()}},{type:'link',label:'Delete',display:function(){return(cint(me.form.doc.docstatus)!=1)&&!me.form.doc.__islocal&&wn.model.can_delete(me.form.doctype);},icon:'icon-remove-sign',onclick:function(){me.form.savetrash()}}]},{title:'Assign To',render:function(wrapper){me.form.assign_to=new wn.widgets.form.sidebar.AssignTo(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return!me.form.doc.__islocal}},{title:'Attachments',render:function(wrapper){me.form.attachments=new wn.widgets.form.sidebar.Attachments(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return me.form.meta.allow_attach}},{title:'Comments',render:function(wrapper){new wn.widgets.form.sidebar.Comments(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return!me.form.doc.__islocal}},{title:'Tags',render:function(wrapper){me.form.taglist=new TagList(wrapper,me.form.doc._user_tags?me.form.doc._user_tags.split(','):[],me.form.doctype,me.form.docname,0,function(){});},display:function(){return!me.form.doc.__islocal}},{title:'Users',render:function(wrapper){var doc=cur_frm.doc;var scrub_date=function(d){if(d)t=d.split(' ');else return'';return dateutil.str_to_user(t[0])+' '+t[1];}
+wn.widgets.form.sidebar={Sidebar:function(form){var me=this;this.form=form;this.opts={sections:[{title:'Actions',items:[{type:'link',label:'New',icon:'icon-plus',display:function(){return in_list(profile.can_create,form.doctype)},onclick:function(){new_doc(me.form.doctype)}},{type:'link',label:'List',icon:'icon-list',display:function(){return!me.form.meta.issingle&&!me.form.meta.read_only;},onclick:function(){window.location.href="#!List/"+me.form.doctype}},{type:'link',label:'Refresh',icon:'icon-refresh',onclick:function(){me.form.reload_doc()}},{type:'link',label:'Print',display:function(){return!(me.form.doc.__islocal||me.form.meta.allow_print);},icon:'icon-print',onclick:function(){me.form.print_doc()}},{type:'link',label:'Email',display:function(){return!(me.form.doc.__islocal||me.form.meta.allow_email);},icon:'icon-envelope',onclick:function(){me.form.email_doc()}},{type:'link',label:'Copy',display:function(){return in_list(profile.can_create,me.form.doctype)&&!me.form.meta.allow_copy},icon:'icon-file',onclick:function(){me.form.copy_doc()}},{type:'link',label:'Delete',display:function(){return(cint(me.form.doc.docstatus)!=1)&&!me.form.doc.__islocal&&wn.model.can_delete(me.form.doctype);},icon:'icon-remove-sign',onclick:function(){me.form.savetrash()}}],display:function(){return me.form.meta.hide_toolbar?false:true;}},{title:'Assign To',render:function(wrapper){me.form.assign_to=new wn.widgets.form.sidebar.AssignTo(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return!me.form.doc.__islocal}},{title:'Attachments',render:function(wrapper){me.form.attachments=new wn.widgets.form.sidebar.Attachments(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return me.form.meta.allow_attach}},{title:'Comments',render:function(wrapper){new wn.widgets.form.sidebar.Comments(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return!me.form.doc.__islocal}},{title:'Tags',render:function(wrapper){me.form.taglist=new TagList(wrapper,me.form.doc._user_tags?me.form.doc._user_tags.split(','):[],me.form.doctype,me.form.docname,0,function(){});},display:function(){return!me.form.doc.__islocal}},{title:'Users',render:function(wrapper){var doc=cur_frm.doc;var scrub_date=function(d){if(d)t=d.split(' ');else return'';return dateutil.str_to_user(t[0])+' '+t[1];}
 $(wrapper).html(repl('<p>Created:<br> <span class="avatar-small">\
        <img title="%(created_by)s" src="%(avatar_created)s" /></span> \
        <span class="help small">%(creation)s</span></p>\
        <p>Modified:<br> <span class="avatar-small">\
        <img title="%(modified_by)s" src="%(avatar_modified)s" /></span> \
-       <span class="help small">%(modified)s</span></p>',{created_by:wn.user_info(doc.owner).fullname,avatar_created:wn.user_info(doc.owner).image,creation:scrub_date(doc.creation),modified_by:wn.user_info(doc.modified_by).fullname,avatar_modified:wn.user_info(doc.modified_by).image,modified:scrub_date(doc.modified)}));},display:function(){return!me.form.doc.__islocal}},{title:'Help',render:function(wrapper){$(wrapper).html('<div class="help small">'
-+wn.markdown(me.form.meta.description)+'</div>')},display:function(){return me.form.meta.description}}]}
+       <span class="help small">%(modified)s</span></p>',{created_by:wn.user_info(doc.owner).fullname,avatar_created:wn.user_info(doc.owner).image,creation:scrub_date(doc.creation),modified_by:wn.user_info(doc.modified_by).fullname,avatar_modified:wn.user_info(doc.modified_by).image,modified:scrub_date(doc.modified)}));},display:function(){return!me.form.doc.__islocal}}]}
 this.refresh=function(){var parent=this.form.page_layout.sidebar_area;if(!this.sidebar){this.sidebar=new wn.widgets.PageSidebar(parent,this.opts);}else{this.sidebar.refresh();}}}}
 /*
  *	lib/js/legacy/wn/widgets/form/comments.js
@@ -2228,10 +2243,7 @@
  */
 wn.Application=Class.extend({init:function(){var me=this;if(window.app){wn.call({method:'startup',callback:function(r,rt){wn.provide('wn.boot');wn.boot=r;if(wn.boot.profile.name=='Guest'){window.location='index.html';return;}
 me.startup();}})}else{this.startup();}},startup:function(){this.load_bootinfo();this.make_page_container();this.make_nav_bar();this.set_favicon();$(document).trigger('startup');if(wn.boot){wn.route();}
-$(document).trigger('app_ready');},load_bootinfo:function(){if(wn.boot){LocalDB.sync(wn.boot.docs);wn.control_panel=wn.boot.control_panel;if(wn.boot.error_messages)
-console.log(wn.boot.error_messages)
-if(wn.boot.server_messages)
-msgprint(wn.boot.server_messages);this.set_globals();}else{this.set_as_guest();}},set_globals:function(){profile=wn.boot.profile;user=wn.boot.profile.name;user_fullname=wn.user_info(user).fullname;user_defaults=profile.defaults;user_roles=profile.roles;user_email=profile.email;sys_defaults=wn.boot.sysdefaults;},set_as_guest:function(){profile={name:'Guest'};user='Guest';user_fullname='Guest';user_defaults={};user_roles=['Guest'];user_email='';sys_defaults={};},make_page_container:function(){wn.container=new wn.views.Container();wn.views.make_403();wn.views.make_404();},make_nav_bar:function(){if(wn.boot){wn.container.wntoolbar=new wn.ui.toolbar.Toolbar();}},logout:function(){var me=this;me.logged_out=true;wn.call({method:'logout',callback:function(r){if(r.exc){console.log(r.exc);}
+$(document).trigger('app_ready');},load_bootinfo:function(){if(wn.boot){LocalDB.sync(wn.boot.docs);wn.control_panel=wn.boot.control_panel;this.set_globals();}else{this.set_as_guest();}},set_globals:function(){profile=wn.boot.profile;user=wn.boot.profile.name;user_fullname=wn.user_info(user).fullname;user_defaults=profile.defaults;user_roles=profile.roles;user_email=profile.email;sys_defaults=wn.boot.sysdefaults;},set_as_guest:function(){profile={name:'Guest'};user='Guest';user_fullname='Guest';user_defaults={};user_roles=['Guest'];user_email='';sys_defaults={};},make_page_container:function(){wn.container=new wn.views.Container();wn.views.make_403();wn.views.make_404();},make_nav_bar:function(){if(wn.boot){wn.container.wntoolbar=new wn.ui.toolbar.Toolbar();}},logout:function(){var me=this;me.logged_out=true;wn.call({method:'logout',callback:function(r){if(r.exc){console.log(r.exc);}
 me.redirect_to_login();}})},redirect_to_login:function(){window.location.href='index.html';},set_favicon:function(){var link=$('link[type="image/x-icon"]').remove().attr("href");var favicon='\
    <link rel="shortcut icon" href="'+link+'" type="image/x-icon"> \
    <link rel="icon" href="'+link+'" type="image/x-icon">'
@@ -2253,9 +2265,7 @@
      This ERPNext subscription <b>has expired</b>. \
     </div>',{expiry_string:expiry_string}));}}
 erpnext.set_about();if(wn.control_panel.custom_startup_code)
-eval(wn.control_panel.custom_startup_code);}
-$('body').append('<a class="erpnext-logo" title="Powered by ERPNext" \
-  href="http://erpnext.com" target="_blank"></a>')}
+eval(wn.control_panel.custom_startup_code);}}
 erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;}
 if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}}
 show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);show_in_circle('open_tasks',r.message.open_tasks);show_in_circle('unanswered_questions',r.message.unanswered_questions);}else{clearInterval(wn.updates.id);}}
diff --git a/public/js/all-web.js b/public/js/all-web.js
index 329db20..8747416 100644
--- a/public/js/all-web.js
+++ b/public/js/all-web.js
@@ -77,19 +77,20 @@
 /*
  *	lib/js/wn/model.js
  */
-wn.provide('wn.model');wn.model={no_value_type:['Section Break','Column Break','HTML','Table','Button','Image'],new_names:{},with_doctype:function(doctype,callback){if(locals.DocType[doctype]){callback();}else{wn.call({method:'webnotes.widgets.form.load.getdoctype',args:{doctype:doctype},callback:callback});}},with_doc:function(doctype,name,callback){if(!name)name=doctype;if(locals[doctype]&&locals[doctype][name]){callback(name);}else{wn.call({method:'webnotes.widgets.form.load.getdoc',args:{doctype:doctype,name:name},callback:function(r){callback(name,r);}});}},can_delete:function(doctype){if(!doctype)return false;return wn.boot.profile.can_cancel.indexOf(doctype)!=-1;}}
+wn.provide('wn.model');wn.model={no_value_type:['Section Break','Column Break','HTML','Table','Button','Image'],new_names:{},with_doctype:function(doctype,callback){if(locals.DocType[doctype]){callback();}else{wn.call({method:'webnotes.widgets.form.load.getdoctype',args:{doctype:doctype},callback:callback});}},with_doc:function(doctype,name,callback){if(!name)name=doctype;if(locals[doctype]&&locals[doctype][name]){callback(name);}else{wn.call({method:'webnotes.widgets.form.load.getdoc',args:{doctype:doctype,name:name},callback:function(r){callback(name,r);}});}},can_delete:function(doctype){if(!doctype)return false;return wn.boot.profile.can_cancel.indexOf(doctype)!=-1;},has_value:function(dt,dn,fn){var val=locals[dt]&&locals[dt][dn]&&locals[dt][dn][fn];var df=wn.meta.get_docfield(dt,fn,dn);if(df.fieldtype=='Table'){var ret=false;$.each(locals[df.options]||{},function(k,d){if(d.parent==dn&&d.parenttype==dt&&d.parentfield==df.fieldname){ret=true;}});}else{var ret=!is_null(val);}
+return ret?true:false;}}
 /*
  *	lib/js/wn/meta.js
  */
 wn.provide('wn.meta.docfield_map');wn.provide('wn.meta.docfield_list');wn.provide('wn.meta.doctypes');$.extend(wn.meta,{add_field:function(df){wn.provide('wn.meta.docfield_map.'+df.parent);wn.meta.docfield_map[df.parent][df.fieldname||df.label]=df;if(!wn.meta.docfield_list[df.parent])
 wn.meta.docfield_list[df.parent]=[];for(var i in wn.meta.docfield_list[df.parent]){var d=wn.meta.docfield_list[df.parent][i];if(df.fieldname==d.fieldname)
 return;}
-wn.meta.docfield_list[df.parent].push(df);}});
+wn.meta.docfield_list[df.parent].push(df);},get_docfield:function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{return wn.meta.docfield_map[dt][fn];}}});
 /*
  *	lib/js/wn/misc/tools.js
  */
 wn.markdown=function(txt){if(!wn.md2html){wn.require('js/lib/showdown.js');wn.md2html=new Showdown.converter();}
-return wn.md2html.makeHtml(txt);}
+return'<div class="markdown">'+wn.md2html.makeHtml(txt)+'</div>';}
 /*
  *	lib/js/wn/misc/user.js
  */
@@ -250,7 +251,7 @@
 var me=this;if(label.tagName){var page=label;}else{var page=wn.pages[label];}
 if(!page){console.log('Page not found '+label);return;}
 if(this.page){$(this.page).toggle(false);$(this.page).trigger('hide');}
-this.page=page;$(this.page).fadeIn();$(this.page).trigger('show');this.page._route=window.location.hash;document.title=this.page.label;scroll(0,0);return this.page;}});wn.views.add_module_btn=function(parent,module){$(parent).append(repl('<span class="label" style="margin-right: 8px; cursor: pointer;"\
+this.page=page;$(this.page).fadeIn();this.page._route=window.location.hash;document.title=this.page.label;$(this.page).trigger('show');scroll(0,0);return this.page;}});wn.views.add_module_btn=function(parent,module){$(parent).append(repl('<span class="label" style="margin-right: 8px; cursor: pointer;"\
      onclick="wn.set_route(\'%(module_small)s-home\')">\
      <i class="icon-home icon-white"></i> %(module)s Home\
     </span>',{module:module,module_small:module.toLowerCase()}));}
@@ -281,11 +282,12 @@
 throw"Incomplete Request";}}
 wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(opts.show_spinner)hide_loading();if(opts.freeze)unfreeze();if(wn.boot&&wn.boot.sid&&wn.get_cookie('sid')!=wn.boot.sid){if(!wn.app.logged_out){msgprint('Session Expired. Logging you out');wn.app.logout();}
 return;}
-if(r.server_messages)msgprint(r.server_messages)
-if(r.exc){console.log(r.exc);};if(r['403']){wn.container.change_to('403');}
+if(r.server_messages){r.server_messages=JSON.parse(r.server_messages)
+msgprint(r.server_messages);}
+if(r.exc){r.exc=JSON.parse(r.exc);if(r.exc instanceof Array){$.each(r.exc,function(i,v){if(v)console.log(v);})}else{console.log(r.exc);}};if(r['403']){wn.container.change_to('403');}
 if(r.docs){LocalDB.sync(r.docs);}}
-wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus)
-if(opts.error)opts.error(xhr)}})}
+wn.request.call=function(opts){wn.request.prepare(opts);$.ajax({url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success&&opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus)
+opts.error&&opts.error(xhr)}})}
 wn.call=function(opts){var args=$.extend({},opts.args)
 if(opts.module&&opts.page){args.cmd=opts.module+'.page.'+opts.page+'.'+opts.page+'.'+opts.method}else if(opts.method){args.cmd=opts.method;}
 for(key in args){if(args[key]&&typeof args[key]!='string'){args[key]=JSON.stringify(args[key]);}}
@@ -492,16 +494,14 @@
 /*
  *	lib/js/legacy/utils/msgprint.js
  */
-var msg_dialog;function msgprint(msg,issmall,callback){if(!msg)return;if(typeof(msg)!='string')
-msg=JSON.stringify(msg);if(issmall){show_alert(msg);return;}
-if(msg.substr(0,8)=='__small:'){show_alert(msg.substr(8));return;}
-if(!msg_dialog){msg_dialog=new Dialog(500,200,"Message");msg_dialog.make_body([['HTML','Msg']])
-msg_dialog.onhide=function(){msg_dialog.msg_area.innerHTML='';$dh(msg_dialog.msg_icon);if(msg_dialog.custom_onhide)msg_dialog.custom_onhide();}
-$y(msg_dialog.rows['Msg'],{fontSize:'14px',lineHeight:'1.5em',padding:'16px'})
-var t=make_table(msg_dialog.rows['Msg'],1,2,'100%',['20px','250px'],{padding:'2px',verticalAlign:'Top'});msg_dialog.msg_area=$td(t,0,1);msg_dialog.msg_icon=$a($td(t,0,0),'img');}
-if(!msg_dialog.display)msg_dialog.show();var has_msg=msg_dialog.msg_area.innerHTML?1:0;var m=$a(msg_dialog.msg_area,'div','');if(has_msg)$y(m,{marginTop:'4px'});$dh(msg_dialog.msg_icon);if(msg.substr(0,6).toLowerCase()=='error:'){msg_dialog.msg_icon.src='images/lib/icons/error.gif';$di(msg_dialog.msg_icon);msg=msg.substr(6);}else if(msg.substr(0,8).toLowerCase()=='message:'){msg_dialog.msg_icon.src='images/lib/icons/application.gif';$di(msg_dialog.msg_icon);msg=msg.substr(8);}else if(msg.substr(0,3).toLowerCase()=='ok:'){msg_dialog.msg_icon.src='images/lib/icons/accept.gif';$di(msg_dialog.msg_icon);msg=msg.substr(3);}
-m.innerHTML=replace_newlines(msg);if(m.offsetHeight>200){$y(m,{height:'200px',width:'400px',overflow:'auto'})}
-msg_dialog.custom_onhide=callback;}
+var msg_dialog;function msgprint(msg,title){if(!msg)return;if(msg instanceof Array){$.each(msg,function(i,v){if(v)msgprint(v);})
+return;}
+if(typeof(msg)!='string')
+msg=JSON.stringify(msg);if(msg.substr(0,8)=='__small:'){show_alert(msg.substr(8));return;}
+if(!msg_dialog){msg_dialog=new wn.ui.Dialog({title:"Message",onhide:function(){msg_dialog.msg_area.empty();}});msg_dialog.msg_area=$('<div class="msgprint">').appendTo(msg_dialog.body);}
+if(msg.search(/<br>|<p>|<li>/)==-1)
+msg=replace_newlines(msg);msg_dialog.set_title(title||'Message')
+msg_dialog.msg_area.append(msg);msg_dialog.show();}
 var growl_area;function show_alert(txt,id){if(!growl_area){if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
 growl_area=$a($i('dialog-container'),'div','',{position:'fixed',bottom:'8px',right:'8px',width:'320px',zIndex:10});}
 var wrapper=$a(growl_area,'div','',{position:'relative'});var body=$a(wrapper,'div','notice');var c=$a(body,'i','icon-remove-sign',{cssFloat:'right',cursor:'pointer'});$(c).click(function(){$dh(this.wrapper)});c.wrapper=wrapper;var t=$a(body,'div','',{color:'#FFF'});$(t).html(txt);if(id){$(t).attr('id',id);}
@@ -513,10 +513,14 @@
    <span class="appframe-title"></span>\
    <span class="close">&times;</span>\
   </div>').appendTo(this.$w);this.$w.find('.close').click(function(){window.history.back();})
-if(title)this.title(title);},title:function(txt){this.$titlebar.find('.appframe-title').html(txt);},add_button:function(label,click,icon){if(!this.$w.find('.appframe-toolbar').length)
-this.$w.append('<div class="appframe-toolbar"></div>');args={label:label,icon:''};if(icon){args.icon='<i class="'+icon+'"></i>';}
+if(title)this.title(title);},title:function(txt){this.clear_breadcrumbs();this.add_breadcrumb(txt);},make_toolbar:function(){if(!this.$w.find('.appframe-toolbar').length)
+this.$w.append('<div class="appframe-toolbar"></div>');},add_button:function(label,click,icon){this.make_toolbar();args={label:label,icon:''};if(icon){args.icon='<i class="icon '+icon+'"></i>';}
 this.buttons[label]=$(repl('<button class="btn btn-small">\
-   %(icon)s %(label)s</button>',args)).click(click).appendTo(this.$w.find('.appframe-toolbar'));return this.buttons[label];},clear_buttons:function(){this.$w.find('.appframe-toolbar').empty();}});wn.ui.make_app_page=function(opts){if(opts.single_column){$(opts.parent).html('<div class="layout-wrapper layout-wrapper-appframe">\
+   %(icon)s %(label)s</button>',args)).click(click).appendTo(this.$w.find('.appframe-toolbar'));return this.buttons[label];},add_help_button:function(txt){this.make_toolbar();$('<button class="btn btn-small" style="float:right;" button-type="help">\
+   <b>?</b></button>').data('help-text',txt).click(function(){msgprint($(this).data('help-text'),'Help');}).appendTo(this.$w.find('.appframe-toolbar'));},clear_buttons:function(){this.$w.find('.appframe-toolbar').empty();},add_breadcrumb:function(html){if(!this.$breadcrumbs)
+this.$breadcrumbs=$('</span>\
+    <span class="breadcrumb-area"></span>').appendTo(this.$titlebar);var crumb=$('<span>').html(html);if(!this.$breadcrumbs.find('span').length){crumb.addClass('appframe-title');}
+crumb.appendTo(this.$breadcrumbs);},clear_breadcrumbs:function(){this.$breadcrumbs&&this.$breadcrumbs.empty();}});wn.ui.make_app_page=function(opts){if(opts.single_column){$(opts.parent).html('<div class="layout-wrapper layout-wrapper-appframe">\
    <div class="layout-appframe"></div>\
    <div class="layout-main"></div>\
   </div>');}else{$(opts.parent).html('<div class="layout-wrapper layout-wrapper-background">\
@@ -534,6 +538,7 @@
 var div=$a(body,'div','',{margin:'6px 0px'})
 f=make_field(df,null,div,null);f.not_in_form=1;this.fields_dict[df.fieldname]=f
 f.refresh();if(df.fieldtype=='Button'&&!this.first_button){$(f.input).addClass('btn-info');this.first_button=true;}}}
+this.catch_enter_as_submit=function(){var me=this;$(this.body).find(':input[type="text"], :input[type="password"]').keypress(function(e){if(e.which==13){$(me.body).find('.btn-info:first').click();}})}
 this.get_values=function(){var ret={};var errors=[];for(var key in this.fields_dict){var f=this.fields_dict[key];var v=f.get_value?f.get_value():null;if(f.df.reqd&&!v)
 errors.push(f.df.label+' is mandatory');if(v)ret[f.df.fieldname]=v;}
 if(errors.length){msgprint('<b>Please check the following Errors</b>\n'+errors.join('\n'));return null;}
@@ -541,19 +546,18 @@
 this.set_value=function(key,val){var f=this.fields_dict[key];if(f){f.set_input(val);f.refresh_mandatory();}}
 this.set_values=function(dict){for(var key in dict){if(this.fields_dict[key]){this.set_value(key,dict[key]);}}}
 this.clear=function(){for(key in this.fields_dict){var f=this.fields_dict[key];if(f){f.set_input(f.df['default']||'');}}}}
-wn.widgets.Dialog=function(opts){this.opts=opts;this.display=false;this.make=function(opts){if(opts)
-this.opts=opts;if(!this.opts.width)this.opts.width=480;if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
+wn.widgets.Dialog=function(opts){this.display=false;this.make=function(opts){if(opts){this.opts=opts;$.extend(this,opts);}
+if(!this.opts.width)this.opts.width=480;if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
 this.wrapper=$('<div class="dialog_wrapper">').appendTo('#dialog-container').get(0);if(this.opts.width)
-this.wrapper.style.width=this.opts.width+'px';this.make_head();this.body=$a(this.wrapper,'div','dialog_body');if(this.opts.fields)
-this.make_fields(this.body,this.opts.fields);}
+this.wrapper.style.width=this.opts.width+'px';this.make_head();this.body=$a(this.wrapper,'div','dialog_body');if(this.opts.fields){this.make_fields(this.body,this.opts.fields);this.catch_enter_as_submit();}}
 this.make_head=function(){var me=this;this.appframe=new wn.ui.AppFrame(this.wrapper);this.appframe.$titlebar.find('.close').unbind('click').click(function(){if(me.oncancel)me.oncancel();me.hide();});this.set_title(this.opts.title);}
 this.set_title=function(t){this.appframe.$titlebar.find('.appframe-title').html(t||'');}
 this.set_postion=function(){this.wrapper.style.left=(($(window).width()-cint(this.wrapper.style.width))/2)+'px';this.wrapper.style.top=($(window).scrollTop()+60)+'px';top_index++;$y(this.wrapper,{zIndex:top_index});}
 this.show=function(){if(this.display)return;this.set_postion()
-$ds(this.wrapper);freeze();this.display=true;cur_dialog=this;if(this.onshow)this.onshow();}
+$ds(this.wrapper);freeze();this.display=true;cur_dialog=this;if(this.onshow)this.onshow();$(this.wrapper).find(':input:first').focus();}
 this.hide=function(){if(this.onhide)this.onhide();unfreeze();$dh(this.wrapper);this.display=false;cur_dialog=null;}
 this.no_cancel=function(){this.appframe.$titlebar.find('.close').toggle(false);}
-if(opts)this.make();}
+if(opts)this.make(opts);}
 wn.widgets.Dialog.prototype=new wn.widgets.FieldGroup();wn.provide('wn.ui');wn.ui.Dialog=wn.widgets.Dialog
 $(document).bind('keydown',function(e){if(cur_dialog&&!cur_dialog.no_cancel_flag&&e.which==27){cur_dialog.hide();}});
 /*
@@ -629,7 +633,9 @@
 function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;}
 LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);if(list){LocalDB.clear_locals(list[0].doctype,list[0].name);}
 for(var i=0;i<list.length;i++){var d=list[i];if(!d.name)
-d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
+d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(cur_frm&&cur_frm.doctype==d.doctype&&cur_frm.docname==d.name){cur_frm.doc=d;}
+if(d.doctype=='DocField')
+wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
 LocalDB.clear_locals=function(dt,dn){var doclist=make_doclist(dt,dn,1);$.each(doclist,function(i,v){v&&delete locals[v.doctype][v.name];});}
 local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;}
 LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;}
@@ -657,22 +663,21 @@
 return user_defaults[fn][0];else if(sys_defaults[fn])
 return sys_defaults[fn];}
 LocalDB.add_child=function(doc,childtype,parentfield){var n=LocalDB.create(childtype);var d=locals[childtype][n];d.parent=doc.name;d.parentfield=parentfield;d.parenttype=doc.doctype;return d;}
-LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=get_field(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}}
+LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=wn.meta.get_docfield(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}}
 return locals[dt][newdoc];}
 function make_doclist(dt,dn){if(!locals[dt]){return[];}
 var dl=[];dl[0]=locals[dt][dn];for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&doc.parent==dn){dl.push(doc)}}}}
 return dl;}
 var Meta={};var local_dt={};Meta.make_local_dt=function(dt,dn){var dl=make_doclist('DocType',dt);if(!local_dt[dt])local_dt[dt]={};if(!local_dt[dt][dn])local_dt[dt][dn]={};for(var i=0;i<dl.length;i++){var d=dl[i];if(d.doctype=='DocField'){var key=d.fieldname?d.fieldname:d.label;local_dt[dt][dn][key]=copy_dict(d);}}}
-Meta.get_field=function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{if(wn.meta.docfield_map[dt])var d=wn.meta.docfield_map[dt][fn];if(d)return d;}
-return{};}
 Meta.set_field_property=function(fn,key,val,doc){if(!doc&&(cur_frm.doc))doc=cur_frm.doc;try{local_dt[doc.doctype][doc.name][fn][key]=val;refresh_field(fn);}catch(e){alert("Client Script Error: Unknown values for "+doc.name+','+fn+'.'+key+'='+val);}}
+Meta.get_field=function(dt,fn,dn){try{return local_dt[dt][dn][fn];}catch(e){return null;}}
 function get_doctype_label(dt){return dt}
 function get_label_doctype(label){return label}
-var getchildren=LocalDB.getchildren;var get_field=Meta.get_field;var createLocal=LocalDB.create;
+var getchildren=LocalDB.getchildren;var createLocal=LocalDB.create;
 /*
  *	lib/js/legacy/model/doclist.js
  */
-function compress_doclist(list){var kl={};var vl=[];var flx={};for(var i=0;i<list.length;i++){var o=list[i];var fl=[];if(!kl[o.doctype]){var tfl=['doctype','name','docstatus','owner','parent','parentfield','parenttype','idx','creation','modified','modified_by','__islocal','__newname','__modified','_user_tags'];var fl=[].concat(tfl);for(key in wn.meta.docfield_map[o.doctype]){if(!in_list(fl,key)&&!in_list(no_value_fields,wn.meta.docfield_map[o.doctype][key].fieldtype)&&!wn.meta.docfield_map[o.doctype][key].no_column){fl[fl.length]=key;tfl[tfl.length]=key}}
+function compress_doclist(list){var kl={};var vl=[];var flx={};for(var i=0;i<list.length;i++){var o=list[i];var fl=[];if(!kl[o.doctype]){var tfl=['doctype','name','docstatus','owner','parent','parentfield','parenttype','idx','creation','modified','modified_by','__islocal','__newname','__modified','_user_tags','__temp'];var fl=[].concat(tfl);for(key in wn.meta.docfield_map[o.doctype]){if(!in_list(fl,key)&&!in_list(no_value_fields,wn.meta.docfield_map[o.doctype][key].fieldtype)&&!wn.meta.docfield_map[o.doctype][key].no_column){fl[fl.length]=key;tfl[tfl.length]=key}}
 flx[o.doctype]=fl;kl[o.doctype]=tfl}
 var nl=[];var fl=flx[o.doctype];for(var j=0;j<fl.length;j++){var v=o[fl[j]];nl.push(v);}
 vl.push(nl);}
@@ -688,19 +693,18 @@
 var _save=function(){$c('webnotes.widgets.form.save.savedocs',{'docs':compress_doclist(doclist),'docname':dn,'action':save_action,'user':user},function(r,rtxt){if(f){f.savingflag=false;}
 if(r.saved){if(onsave)onsave(r);}else{if(onerr)onerr(r);}},function(){if(f){f.savingflag=false;}},0,(f?'Saving...':''));}
 if(doc.__islocal&&(doctype&&doctype.autoname&&doctype.autoname.toLowerCase()=='prompt')){var newname=prompt('Enter the name of the new '+dt,'');if(newname){doc.__newname=strip(newname);_save();}else{msgprint('Not Saved');onerr();}}else{_save();}}
-function check_required(dt,dn,parent_dt){var doc=locals[dt][dn];if(doc.docstatus>1)return true;var fl=wn.meta.docfield_list[dt];if(!fl)return true;var all_clear=true;var errfld=[];for(var i=0;i<fl.length;i++){var key=fl[i].fieldname;var v=doc[key];if(fl[i].reqd&&is_null(v)&&fl[i].fieldname){errfld[errfld.length]=fl[i].label;if(cur_frm){var f=cur_frm.fields_dict[fl[i].fieldname];if(f){if(f.set_as_error)f.set_as_error(1);if(!cur_frm.error_in_section&&f.parent_section){cur_frm.error_in_section=1;}}}
+function check_required(dt,dn,parent_dt){var doc=locals[dt][dn];if(doc.docstatus>1)return true;var fl=wn.meta.docfield_list[dt];if(!fl)return true;var all_clear=true;var errfld=[];for(var i=0;i<fl.length;i++){var key=fl[i].fieldname;var df=wn.meta.get_docfield(dt,key,dn);var has_value=wn.model.has_value(dt,dn,key);if(df.reqd&&!has_value){errfld[errfld.length]=df.label;if(cur_frm){var f=cur_frm.fields_dict[df.fieldname];if(f){f.df.has_error=true;f.refresh_label_icon();if(all_clear){$(document).scrollTop($(f.wrapper).offset().top-100);}
+if(f.df.hidden){msgprint('Oops, field "'+f.df.label+'" is both hidden and mandatory. \
+       Please contact your admin for help.');}}}
 if(all_clear)all_clear=false;}}
 if(errfld.length)msgprint('<b>Mandatory fields required in '+
-(doc.parenttype?(wn.meta.docfield_map[doc.parenttype][doc.parentfield].label+' (Table)'):get_doctype_label(doc.doctype))+':</b>\n'+errfld.join('\n'));return all_clear;}
+(doc.parenttype?(wn.meta.docfield_map[doc.parenttype][doc.parentfield].label+' (Table)'):doc.doctype)+':</b>\n'+errfld.join('\n'));return all_clear;}
 /*
  *	lib/js/wn/app.js
  */
 wn.Application=Class.extend({init:function(){var me=this;if(window.app){wn.call({method:'startup',callback:function(r,rt){wn.provide('wn.boot');wn.boot=r;if(wn.boot.profile.name=='Guest'){window.location='index.html';return;}
 me.startup();}})}else{this.startup();}},startup:function(){this.load_bootinfo();this.make_page_container();this.make_nav_bar();this.set_favicon();$(document).trigger('startup');if(wn.boot){wn.route();}
-$(document).trigger('app_ready');},load_bootinfo:function(){if(wn.boot){LocalDB.sync(wn.boot.docs);wn.control_panel=wn.boot.control_panel;if(wn.boot.error_messages)
-console.log(wn.boot.error_messages)
-if(wn.boot.server_messages)
-msgprint(wn.boot.server_messages);this.set_globals();}else{this.set_as_guest();}},set_globals:function(){profile=wn.boot.profile;user=wn.boot.profile.name;user_fullname=wn.user_info(user).fullname;user_defaults=profile.defaults;user_roles=profile.roles;user_email=profile.email;sys_defaults=wn.boot.sysdefaults;},set_as_guest:function(){profile={name:'Guest'};user='Guest';user_fullname='Guest';user_defaults={};user_roles=['Guest'];user_email='';sys_defaults={};},make_page_container:function(){wn.container=new wn.views.Container();wn.views.make_403();wn.views.make_404();},make_nav_bar:function(){if(wn.boot){wn.container.wntoolbar=new wn.ui.toolbar.Toolbar();}},logout:function(){var me=this;me.logged_out=true;wn.call({method:'logout',callback:function(r){if(r.exc){console.log(r.exc);}
+$(document).trigger('app_ready');},load_bootinfo:function(){if(wn.boot){LocalDB.sync(wn.boot.docs);wn.control_panel=wn.boot.control_panel;this.set_globals();}else{this.set_as_guest();}},set_globals:function(){profile=wn.boot.profile;user=wn.boot.profile.name;user_fullname=wn.user_info(user).fullname;user_defaults=profile.defaults;user_roles=profile.roles;user_email=profile.email;sys_defaults=wn.boot.sysdefaults;},set_as_guest:function(){profile={name:'Guest'};user='Guest';user_fullname='Guest';user_defaults={};user_roles=['Guest'];user_email='';sys_defaults={};},make_page_container:function(){wn.container=new wn.views.Container();wn.views.make_403();wn.views.make_404();},make_nav_bar:function(){if(wn.boot){wn.container.wntoolbar=new wn.ui.toolbar.Toolbar();}},logout:function(){var me=this;me.logged_out=true;wn.call({method:'logout',callback:function(r){if(r.exc){console.log(r.exc);}
 me.redirect_to_login();}})},redirect_to_login:function(){window.location.href='index.html';},set_favicon:function(){var link=$('link[type="image/x-icon"]').remove().attr("href");var favicon='\
    <link rel="shortcut icon" href="'+link+'" type="image/x-icon"> \
    <link rel="icon" href="'+link+'" type="image/x-icon">'
@@ -722,9 +726,7 @@
      This ERPNext subscription <b>has expired</b>. \
     </div>',{expiry_string:expiry_string}));}}
 erpnext.set_about();if(wn.control_panel.custom_startup_code)
-eval(wn.control_panel.custom_startup_code);}
-$('body').append('<a class="erpnext-logo" title="Powered by ERPNext" \
-  href="http://erpnext.com" target="_blank"></a>')}
+eval(wn.control_panel.custom_startup_code);}}
 erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;}
 if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}}
 show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);show_in_circle('open_tasks',r.message.open_tasks);show_in_circle('unanswered_questions',r.message.unanswered_questions);}else{clearInterval(wn.updates.id);}}
diff --git a/public/js/fields.js b/public/js/fields.js
index c85c8c2..7325ea4 100644
--- a/public/js/fields.js
+++ b/public/js/fields.js
@@ -5,9 +5,9 @@
 var no_value_fields=['Section Break','Column Break','HTML','Table','FlexTable','Button','Image'];var codeid=0;var code_editors={};function Field(){this.with_label=1;}
 Field.prototype.make_body=function(){var ischk=(this.df.fieldtype=='Check'?1:0);if(this.parent)
 this.wrapper=$a(this.parent,(this.with_label?'div':'span'));else
-this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
-if(this.with_label){this.label_span=$a(this.label_area,'span','small')
-this.label_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 4px'});$dh(this.label_icon);this.label_icon.src='images/lib/icons/error.gif';this.label_icon.title='Mandatory value needs to be entered';this.suggest_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 0px'});$dh(this.suggest_icon);this.suggest_icon.src='images/lib/icons/bullet_arrow_down.png';this.suggest_icon.title='With suggestions';}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
+this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px',minHeight:'1em'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
+if(this.with_label){this.label_span=$a(this.label_area,'span','small',{cssFloat:'left'})
+this.label_icon=$('<i class="icon icon-warning-sign">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","This field is mandatory.");this.suggest_icon=$('<i class="icon icon-chevron-down">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","will show suggestions as you type.");}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
 $dh(this.label_area);}
 if(!this.input_area){this.input_area=$a(this.wrapper,(this.with_label?'div':'span'));this.disp_area=$a(this.wrapper,(this.with_label?'div':'span'));}
 if(this.in_grid){if(this.label_area)$dh(this.label_area);}else{this.input_area.className='input_area';$y(this.wrapper,{marginBottom:'9px'});this.set_description();}
@@ -18,8 +18,9 @@
 Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help small','',this.df.description)
 if(in_list(['Text Editor','Code'],this.df.fieldtype))
 $(this.desc_area).addClass('help small');}}
-Field.prototype.get_status=function(){if(this.in_filter)this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
-if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE])ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
+Field.prototype.get_status=function(){if(this.in_filter)
+this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
+if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
 ret='None';if(cint(this.df.hidden))
 ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}}
 if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE])ret='Write';}
@@ -42,19 +43,19 @@
 if(this.wrapper){this.wrapper.fieldobj=this;$(this.wrapper).trigger('refresh');}
 if(!this.not_in_form)
 this.set_input(_f.get_value(this.doctype,this.docname,this.df.fieldname));this.refresh_mandatory();this.set_max_width();}
-Field.prototype.refresh_label_icon=function(){if(this.df.reqd){if(this.get_value&&is_null(this.get_value())){if(this.label_icon)$ds(this.label_icon);$(this.txt?this.txt:this.input).addClass('field-to-update')}else{if(this.label_icon)$dh(this.label_icon);$(this.txt?this.txt:this.input).removeClass('field-to-update')}}}
+Field.prototype.refresh_label_icon=function(){var to_update=false;if(this.df.reqd&&this.get_value&&is_null(this.get_value()))
+to_update=true;if(!to_update&&this.df.has_error)this.df.has_error=false;if(this.label_icon)this.label_icon.toggle(to_update);$(this.txt?this.txt:this.input).toggleClass('field-to-update',to_update);$(this.txt?this.txt:this.input).toggleClass('field-has-error',this.df.has_error?true:false);}
 Field.prototype.set=function(val){if(this.not_in_form)
 return;if((!this.docname)&&this.grid){this.docname=this.grid.add_newrow();}
-var set_val=val;if(this.validate)set_val=this.validate(val);_f.set_value(this.doctype,this.docname,this.df.fieldname,set_val);this.value=val;}
+if(this.validate)
+val=this.validate(val);cur_frm.set_value_in_locals(this.doctype,this.docname,this.df.fieldname,val);this.value=val;}
 Field.prototype.set_input=function(val){this.value=val;if(this.input&&this.input.set_input){if(val==null)this.input.set_input('');else this.input.set_input(val);}
 var disp_val=val;if(val==null)disp_val='';this.set_disp(disp_val);}
-Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.df.reqd&&this.get_value&&!is_null(this.get_value())&&this.set_as_error)
-this.set_as_error(0);if(this.not_in_form){return;}
+Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.not_in_form){return;}
 if(cur_frm.cscript[this.df.fieldname])
 cur_frm.runclientscript(this.df.fieldname,this.doctype,this.docname);cur_frm.refresh_dependency();}
 Field.prototype.set_disp_html=function(t){if(this.disp_area){$(this.disp_area).addClass('disp_area');this.disp_area.innerHTML=(t==null?'':t);if(!t)$(this.disp_area).addClass('disp_area_no_val');}}
 Field.prototype.set_disp=function(val){this.set_disp_html(val);}
-Field.prototype.set_as_error=function(set){if(this.in_grid||this.in_filter)return;var w=this.txt?this.txt:this.input;if(set){$y(w,{border:'2px solid RED'});}else{$y(w,{border:'1px solid #888'});}}
 Field.prototype.activate=function(docname){this.docname=docname;this.refresh();if(this.input){var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);this.last_value=v;if(this.input.onchange&&this.input.get_value&&this.input.get_value()!=v){if(this.validate)
 this.input.set_value(this.validate(v));else
 this.input.set_value((v==null)?'':v);if(this.format_input)
@@ -69,7 +70,7 @@
 me.format_input();if(in_list(['Currency','Float','Int'],me.df.fieldtype)){if(flt(me.last_value)==flt(val)){me.last_value=val;return;}}
 me.last_value=val;me.run_trigger();}
 this.input.set_input=function(val){if(val==null)val='';me.input.value=val;if(me.format_input)me.format_input();}
-if(this.df.options=='Suggest'){if(this.suggest_icon)$di(this.suggest_icon);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
+if(this.df.options=='Suggest'){if(this.suggest_icon)this.suggest_icon.toggle(true);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
        `tab%(dt)s` WHERE `%(fieldname)s` LIKE "%s" LIMIT 50',{fieldname:me.df.fieldname,dt:me.df.parent})},callback:function(r){response(r.results);}});},select:function(event,ui){me.set(ui.item.value);}});}}
 DataField.prototype.validate=function(v){if(this.df.options=='Phone'){if(v+''=='')return'';v1=''
 v=v.replace(/ /g,'').replace(/-/g,'').replace(/\(/g,'').replace(/\)/g,'');if(v&&v.substr(0,1)=='+'){v1='+';v=v.substr(1);}
@@ -77,12 +78,11 @@
 if(v&&v.substr(0,1)=='0'){v1+='0';v=v.substr(1);}
 v1+=cint(v)+'';return v1;}else if(this.df.options=='Email'){if(v+''=='')return'';if(!validate_email(v)){msgprint(this.df.label+': '+v+' is not a valid email id');return'';}else
 return v;}else{return v;}}
-DataField.prototype.onrefresh=function(){if(this.input&&this.df.colour){var col='#'+this.df.colour.split(':')[1];$bg(this.input,col);}}
 function ReadOnlyField(){}
 ReadOnlyField.prototype=new Field();function HTMLField(){}
-HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){this.disp_area.innerHTML=val;}
+HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
 HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
-HTMLField.prototype.onrefresh=function(){this.set_disp(this.df.options?this.df.options:'');}
+HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
 var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
 _f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
 me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
@@ -177,7 +177,6 @@
 function TimeField(){}TimeField.prototype=new Field();TimeField.prototype.get_time=function(){return time_to_hhmm(sel_val(this.input_hr),sel_val(this.input_mn),sel_val(this.input_am));}
 TimeField.prototype.set_time=function(v){ret=time_to_ampm(v);this.input_hr.inp.value=ret[0];this.input_mn.inp.value=ret[1];this.input_am.inp.value=ret[2];}
 TimeField.prototype.set_style_mandatory=function(){}
-TimeField.prototype.set_as_error=function(){}
 TimeField.prototype.make_input=function(){var me=this;this.input=$a(this.input_area,'div','time_field');var t=make_table(this.input,1,3,'200px');var opt_hr=['1','2','3','4','5','6','7','8','9','10','11','12'];var opt_mn=['00','05','10','15','20','25','30','35','40','45','50','55'];var opt_am=['AM','PM'];this.input_hr=new SelectWidget($td(t,0,0),opt_hr,'50px');this.input_mn=new SelectWidget($td(t,0,1),opt_mn,'50px');this.input_am=new SelectWidget($td(t,0,2),opt_am,'50px');var onchange_fn=function(){me.set(me.get_time());me.run_trigger();}
 this.input_hr.inp.onchange=onchange_fn;this.input_mn.inp.onchange=onchange_fn;this.input_am.inp.onchange=onchange_fn;this.onrefresh=function(){var v=_f.get_value?_f.get_value(me.doctype,me.docname,me.df.fieldname):null;me.set_time(v);if(!v)
 me.set(me.get_time());}
@@ -194,8 +193,7 @@
 me.btn1.setAttribute('title','Open Link');}
 if(iconsrc2){var c3=tab.rows[0].insertCell(3);$y(c3,{width:'20px'});me.btn2=$a(c3,'i',iconsrc2,icon_style)
 me.btn2.setAttribute('title','Create New');$dh(me.btn2);}
-if(me.df.colour)
-me.txt.style.background='#'+me.df.colour.split(':')[1];me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
+me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
 var tmpid=0;_f.ButtonField=function(){};_f.ButtonField.prototype=new Field();_f.ButtonField.prototype.with_label=0;_f.ButtonField.prototype.init=function(){this.prev_button=null;if(!this.frm)return;if(cur_frm&&cur_frm.fields[cur_frm.fields.length-1]&&cur_frm.fields[cur_frm.fields.length-1].df.fieldtype=='Button'){this.make_body=function(){this.prev_button=cur_frm.fields[cur_frm.fields.length-1];if(!this.prev_button.prev_button){this.prev_button.button_area=$a(this.prev_button.input_area,'span');}
 this.wrapper=this.prev_button.wrapper;this.input_area=this.prev_button.input_area;this.disp_area=this.prev_button.disp_area;this.button_area=$a(this.prev_button.input_area,'span');}}}
 _f.ButtonField.prototype.make_input=function(){var me=this;if(!this.prev_button){$y(this.input_area,{marginTop:'4px',marginBottom:'4px'});}
diff --git a/public/js/gantt_task.js b/public/js/gantt_task.js
new file mode 100644
index 0000000..11f2009
--- /dev/null
+++ b/public/js/gantt_task.js
@@ -0,0 +1,10 @@
+
+/*
+ *	erpnext/projects/gantt_task.js
+ */
+wn.require('js/lib/jQuery.Gantt/css/style.css');wn.require('js/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js');erpnext.show_task_gantt=function(parent,project){$(parent).css('min-height','300px').html('<div class="help-box">Loading...</div>')
+var get_source=function(r){var source=[];$.each(r.message,function(i,v){source.push({name:v.project,desc:v.subject,values:[{label:v.subject,desc:v.description||v.subject,from:'/Date("'+v.exp_start_date+'")/',to:'/Date("'+v.exp_end_date+'")/',customClass:{'Open':'ganttRed','Pending Review':'ganttOrange','Working':'','Completed':'ganttGreen','Cancelled':'ganttGray'}[v.status],dataObj:v}]})});return source}
+wn.call({method:'projects.page.projects.projects.get_tasks',args:{project:project||''},callback:function(r){$(parent).empty();if(!r.message.length){$(parent).html('<div class="help-box">No Tasks Yet.</div>');}else{var gantt_area=$('<div class="gantt">').appendTo(parent);gantt_area.gantt({source:get_source(r),navigate:project?"button":"scroll",scale:"weeks",minScale:"weeks",maxScale:"months",onItemClick:function(data){wn.set_route('Form','Task',data.name);},onAddClick:function(dt,rowId){newdoc('Task');}});}
+$('<button class="btn"><i class="icon icon-plus"></i>\
+    Create a new Task</button>').click(function(){wn.model.with_doctype('Task',function(){var new_name=LocalDB.create('Task');if(project)
+locals.Task[new_name].project=project;wn.set_route('Form','Task',new_name);});}).appendTo(parent);}})}
\ No newline at end of file
diff --git a/public/js/report-legacy.js b/public/js/report-legacy.js
index 30ca848..d2d67c5 100644
--- a/public/js/report-legacy.js
+++ b/public/js/report-legacy.js
@@ -45,8 +45,7 @@
 if(sc&&sc.sort_order){sc.sort_order=='ASC'?this.dt.set_asc():this.dt.set_desc();}
 if(sc&&sc.page_len){this.dt.page_len_sel.inp.value=sc.page_len;}
 this.current_loaded=criteria_name;this.set_main_title(criteria_name);}
-_r.ReportBuilder.prototype.setup_filters_and_cols=function(){function can_dt_be_submitted(dt){if(locals.DocType&&locals.DocType[dt]&&locals.DocType[dt].allow_trash)return 1;var plist=getchildren('DocPerm',dt,'permissions','DocType');for(var pidx in plist){if(plist[pidx].submit)return 1;}
-return 0;}
+_r.ReportBuilder.prototype.setup_filters_and_cols=function(){function can_dt_be_submitted(dt){return locals.DocType[dt]&&locals.DocType[dt].is_submittable||0;}
 var me=this;var dt=me.parent_dt?me.parent_dt:me.doctype;var fl=[{'fieldtype':'Data','label':'ID','fieldname':'name','in_filter':1,'parent':dt},{'fieldtype':'Data','label':'Owner','fieldname':'owner','in_filter':1,'parent':dt},{'fieldtype':'Date','label':'Created on','fieldname':'creation','in_filter':0,'parent':dt},{'fieldtype':'Date','label':'Last modified on','fieldname':'modified','in_filter':0,'parent':dt},];if(can_dt_be_submitted(dt)){fl[fl.length]={'fieldtype':'Check','label':'Saved','fieldname':'docstatus','search_index':1,'in_filter':1,'def_filter':1,'parent':dt};fl[fl.length]={'fieldtype':'Check','label':'Submitted','fieldname':'docstatus','search_index':1,'in_filter':1,'def_filter':1,'parent':dt};fl[fl.length]={'fieldtype':'Check','label':'Cancelled','fieldname':'docstatus','search_index':1,'in_filter':1,'parent':dt};}
 me.make_datatable();me.orig_sort_list=[];if(me.parent_dt){me.setup_dt_filters_and_cols(fl,me.parent_dt);var fl=[];}
 me.setup_dt_filters_and_cols(fl,me.doctype);if(!this.has_primary_filters)
diff --git a/public/server.py b/public/server.py
index 790209c..b95ac20 100755
--- a/public/server.py
+++ b/public/server.py
@@ -23,6 +23,7 @@
 # 
 
 
+from __future__ import unicode_literals
 import cgi, cgitb, os, sys
 cgitb.enable()
 
@@ -38,12 +39,11 @@
 import webnotes.handler
 import webnotes.auth
 
-def init():
-	# make the form_dict
-	webnotes.form = cgi.FieldStorage(keep_blank_values=True)
-	for key in webnotes.form.keys():
-		webnotes.form_dict[key] = webnotes.form.getvalue(key)
+from webnotes.utils import cstr
 
+def init():
+	webnotes.handler.get_cgi_fields()
+	
 	# init request
 	try:
 		webnotes.http_request = webnotes.auth.HTTPRequest()
diff --git a/public/web.py b/public/web.py
index dcacfcd..119636b 100755
--- a/public/web.py
+++ b/public/web.py
@@ -17,11 +17,11 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 """
-return a dynamic page from website templates
+	return a dynamic page from website templates
 
-all html pages except login-page.html get generated here
+	all html pages related to website are generated here
 """
-
+from __future__ import unicode_literals
 import cgi, cgitb, os, sys
 cgitb.enable()
 
@@ -32,10 +32,8 @@
 sys.path.append(conf.modules_path)
 
 def init():
-	import webnotes
-	webnotes.form = cgi.FieldStorage(keep_blank_values=True)
-	for key in webnotes.form.keys():
-		webnotes.form_dict[key] = webnotes.form.getvalue(key)
+	import webnotes.handler
+	webnotes.handler.get_cgi_fields()
 	webnotes.connect()
 
 def respond():
