diff --git a/css/all-app.css b/css/all-app.css
index c8cd9d0..0e432d4 100644
--- a/css/all-app.css
+++ b/css/all-app.css
@@ -3819,3 +3819,12 @@
 	max-width: 260px !important;
 }
 
+.expiry-info {
+	margin-top: 40px;
+	margin-bottom: -40px;
+	text-align: center;
+	background-color: rgb(255, 255, 204);
+	padding: 7px;
+	z-index: 1;
+}
+
diff --git a/css/all-web.css b/css/all-web.css
index 571a221..9fbfd3a 100644
--- a/css/all-web.css
+++ b/css/all-web.css
@@ -2517,6 +2517,15 @@
 	max-width: 260px !important;
 }
 
+.expiry-info {
+	margin-top: 40px;
+	margin-bottom: -40px;
+	text-align: center;
+	background-color: rgb(255, 255, 204);
+	padding: 7px;
+	z-index: 1;
+}
+
 
 /*
  *	erpnext/website/css/website.css
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt
index 666cd1c..18bd789 100755
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-04-13 11:56:17',
 		'docstatus': 0,
-		'modified': '2012-04-23 12:08:52',
+		'modified': '2012-04-27 11:21:21',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -188,20 +188,6 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'amended_from',
-		'fieldtype': u'Link',
-		'label': u'Amended From',
-		'no_copy': 1,
-		'oldfieldname': u'amended_from',
-		'oldfieldtype': u'Link',
-		'options': u'Purchase Invoice',
-		'permlevel': 1,
-		'print_hide': 1
-	},
-
-	# DocField
-	{
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'supplier',
@@ -361,6 +347,20 @@
 
 	# DocField
 	{
+		'doctype': u'DocField',
+		'fieldname': u'amended_from',
+		'fieldtype': u'Link',
+		'label': u'Amended From',
+		'no_copy': 1,
+		'oldfieldname': u'amended_from',
+		'oldfieldtype': u'Link',
+		'options': u'Purchase Invoice',
+		'permlevel': 1,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
 		'description': u'The date at which current entry is corrected in the system.',
 		'doctype': u'DocField',
 		'fieldname': u'amendment_date',
diff --git a/erpnext/patches/april_2012/reload_c_form.py b/erpnext/patches/april_2012/reload_c_form.py
index 246ea0f..bebca6f 100644
--- a/erpnext/patches/april_2012/reload_c_form.py
+++ b/erpnext/patches/april_2012/reload_c_form.py
@@ -1,4 +1,4 @@
 def execute():
 	import webnotes
-	from webnotes.modules.module_manager import reload_doc
+	from webnotes.modules import reload_doc
 	reload_doc('accounts', 'doctype', 'c_form')
diff --git a/erpnext/patches/april_2012/serial_no_fixes.py b/erpnext/patches/april_2012/serial_no_fixes.py
index b4fcf75..f291e10 100644
--- a/erpnext/patches/april_2012/serial_no_fixes.py
+++ b/erpnext/patches/april_2012/serial_no_fixes.py
@@ -1,6 +1,6 @@
 def execute():
 	import webnotes
-	from webnotes.modules.module_manager import reload_doc
+	from webnotes.modules import reload_doc
 	reload_doc('stock', 'doctype', 'serial_no')
 
 	webnotes.conn.sql("update `tabSerial No` set sle_exists = 1")
diff --git a/erpnext/setup/doctype/setup_control/setup_control.py b/erpnext/setup/doctype/setup_control/setup_control.py
index ba39358..84387e1 100644
--- a/erpnext/setup/doctype/setup_control/setup_control.py
+++ b/erpnext/setup/doctype/setup_control/setup_control.py
@@ -21,53 +21,16 @@
 from webnotes.model.code import get_obj
 from webnotes import session, form, msgprint
 
-sql = webnotes.conn.sql
-
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
 	
-	#Default Naming Series
-	#---------------------------------------------------
-	def naming_series(self):
-		ns = [['TDS Payment', 'TDSP'], ['Purchase Invoice', 'BILL'], ['Journal Voucher', 'JV'], ['Sales Invoice', 'INV'], ['Lead', 'Lead'], ['Purchase Request', 'IDT'], ['Opportunity', 'Opportunity'], ['Purchase Order', 'PO'], ['Quotation', 'QTN'], ['Purchase Receipt', 'GRN'], ['Stock Entry', 'STE'], ['Sales Order', 'SO'], ['Delivery Note', 'DN'], ['Employee', 'EMP/']]
-		for r in ns: 
-			rec = Document('Naming Series')
-			rec.select_doc_for_series = r[0]
-			rec.new_series = r[1]
-			rec_obj = get_obj(doc=rec)
-			rec_obj.add_series()
-
-	# set account details
-	#-----------------------
-	def set_account_details(self, args):
-		"""
-			Called from gateway after allocation
-		"""
-		import json
-		args = json.loads(args)
-
-		self.set_cp_defaults(args['company'], args['industry'], args['time_zone'], args['country'], args['account_name'])
-		self.create_profile(args['user'], args['first_name'], args['last_name'], args.get('pwd'))
-
-		# Domain related updates
-		try:
-			from server_tools.gateway_utils import add_domain_map
-			add_domain_map(args)
-		except ImportError, e:
-			pass
-
-		# add record in domain_list of Website Settings
-		account_url = args['url_name'] + '.erpnext.com'
-		webnotes.conn.set_value('Website Settings', 'Website Settings',
-				'subdomain', account_url)
-		
-	
 	# Account Setup
 	# ---------------
 	def setup_account(self, args):
 		import webnotes, json
 		args = json.loads(args)
+		webnotes.conn.begin()
 
 		curr_fiscal_year, fy_start_date, fy_abbr = self.get_fy_details(args.get('fy_start'))
 
@@ -117,6 +80,7 @@
 
 		# Set 
 		self.set_defaults(def_args)
+		self.set_cp_defaults(**args)
 
 		self.create_feed_and_todo()
 
@@ -126,6 +90,7 @@
 		import webnotes.utils
 		user_fullname = (args.get('first_name') or '') + (args.get('last_name')
 				and (" " + args.get('last_name')) or '')
+		webnotes.conn.commit()
 		return {'sys_defaults': webnotes.utils.get_defaults(), 'user_fullname': user_fullname}
 
 	def create_feed_and_todo(self):
@@ -204,14 +169,12 @@
 
 	# Set Control Panel Defaults
 	# --------------------------
-	def set_cp_defaults(self, cname, industry, timezone, country, acc_name):
+	def set_cp_defaults(self, industry, country, timezone, company_name):
 		cp = Document('Control Panel','Control Panel')
-		cp.account_id = acc_name
-		cp.company_name = cname
+		cp.company_name = company_name
 		cp.industry = industry
 		cp.time_zone = timezone
 		cp.country = country
-		cp.client_name = '<div style="padding:4px; font-size:20px;">'+cname+'</div>'
 		cp.save()
 			
 	# Create Profile
@@ -238,25 +201,4 @@
 		for r in roles_list:
 			d = addchild(pr,'userroles', 'UserRole', 1)
 			d.role = r
-			d.save(1)
-		
-	
-	def is_setup_okay(self, args):
-		"""
-		Validates if setup has been performed after database allocation
-		"""
-
-		from server_tools.gateway_utils import get_total_users
-		
-		args = eval(args)		
-		cp_defaults = webnotes.conn.get_value('Control Panel', None, 'account_id')
-		user_profile = webnotes.conn.get_value('Profile', args['user'], 'name')
-		
-		from webnotes.utils import cint
-		
-		total_users = get_total_users()
-						
-		if (cp_defaults==args['account_name']) and user_profile and \
-		   (total_users==cint(args['total_users'])):
-		   return 'True'
-		
+			d.save(1)
\ No newline at end of file
diff --git a/erpnext/setup/page/import_data/import_data.html b/erpnext/setup/page/import_data/import_data.html
index 29f0cc3..b655442 100644
--- a/erpnext/setup/page/import_data/import_data.html
+++ b/erpnext/setup/page/import_data/import_data.html
@@ -10,7 +10,7 @@
 <h3 style="background-color: #EEF; padding: 2px;">Step 1. Download Template</h3>
 <select id="import_template" style="margin: 10px;"> <option>Select Master...</option> </select>
 
-<div style="margin: 10px; margin-top: 0px;"><input name="overwrite" type="checkbox"/> Do you want to over-write records? <br><span style='color:orange'>Warning: Over-writing the data of child tables, will delete all old data. For more info see below</span></div>
+<div style="margin: 10px; margin-top: 0px;"><input name="overwrite" type="checkbox"/> Do you want to over-write records? <br><span style='color:orange'>Warning: Over-writing the data of child tables, will delete all old entries from child tables. For more info see below</span></div>
 <div id="child_tab_lst"></div>
 <h3 style="background-color: #EEF; padding: 2px;">Step 2. Upload and Import</h3>
 <table style="width: 480px;" border="0" cellspacing="10px">
@@ -46,7 +46,7 @@
 	<ol>
 		<li>To over-write data, click on "Do you want to over-write records?" and then download template</li>
 		<li>To over-write parent table data, mention existing ID in "Name" column</li>
-		<li>Over-writing of child table data will delete all previous data of child table and re-import. so before over-writing child tables, export all data from system, modify them and then re-import</li>
+		<li>Over-writing of child table data will delete all previous data from child table of those parents which you are importing. So before over-writing child tables, take a backup of the child table data by exporting from report builder. Re-import all rows of the child table for a particular parent.<br>For example: If you want to overwrite tax rate for tax account "VAT" ifor item: ITEM001 and suppose there are 3 rows in "Item Tax" table for item : ITEM001. While overwriting the system will delete all 3 rows. So, you have to re-import all 3 rows for that item.</li>
 		<li>Over-write checkbox will be checked while importing</li>
 	</ol>
 	<br />
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index 49f5092..37ffe9b 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -34,7 +34,10 @@
 				sid!=%s""", \
 			(webnotes.session['user'], webnotes.session['sid']), as_list=1)
 
-	if webnotes.session['user'] not in ('Guest', 'demo@webnotestech.com') and webnotes.conn.cur_db_name!='accounts':
+		# check if account is expired
+		check_if_expired()
+
+	if webnotes.session['user'] not in ('Guest', 'demo@webnotestech.com'):
 		# create feed
 		from webnotes.utils import nowtime
 		home.make_feed('Login', 'Profile', login_manager.user, login_manager.user,
@@ -79,6 +82,11 @@
 			tabCompany limit 1""") and 'Yes' or 'No'
 			
 		bootinfo['user_background'] = webnotes.conn.get_value("Profile", webnotes.session['user'], 'background_image') or ''
+		
+		# load subscription info
+		import conf
+		if hasattr(conf, 'max_users'): bootinfo['max_users'] = conf.max_users
+		if hasattr(conf, 'expires_on'): bootinfo['expires_on'] = conf.expires_on
 
 
 def get_letter_heads():
@@ -87,27 +95,37 @@
 	ret = webnotes.conn.sql("""select name, content from `tabLetter Head` 
 		where ifnull(disabled,0)=0""")
 	return dict(ret)
+	
 
-def login_as(login_manager):
-	"""
-		Login as functionality -- allows signin from signin.erpnext.com
-	"""
-	# login as user
-	user = webnotes.form.getvalue('login_as')
-	if user:
-		if isinstance(webnotes.session, dict):
-			webnotes.session['user'] = user
-		else:
-			webnotes.session = {'user': user}
-		
-		login_manager.user = user
-		first_name, last_name = webnotes.conn.sql("select first_name, last_name from `tabProfile` where name=%s", user)[0]
-
-		login_manager.user_fullname = (first_name and first_name or "") + (last_name and " " + last_name or "")
-
-		# alisaing here... so check if the user is disabled
-		if not webnotes.conn.sql("select ifnull(enabled,0) from tabProfile where name=%s", user)[0][0]:
-			# throw execption
-			webnotes.msgprint("Authentication Failed", raise_exception=1)
-
-	return login_manager
+def check_if_expired():
+	"""check if account is expired. If expired, do not allow login"""
+	import conf
+	# check if expires_on is specified
+	if not hasattr(conf, 'expires_on'): return
+	
+	# check if expired
+	from datetime import datetime, date
+	expires_on = datetime.strptime(conf.expires_on, '%Y-%m-%d').date()
+	if date.today() <= expires_on: return
+	
+	# if expired, stop user from logging in
+	from webnotes.utils import formatdate
+	if 'System Manager' in webnotes.user.roles:
+		webnotes.response['server_messages'] = """Oops! \
+			Your subscription expired on <b>%s</b>.
+			
+			Nothing catastrophic.
+			
+			Just drop in a mail at <b>support@erpnext.com</b> and \
+			we will guide you to get your account re-activated.""" % formatdate(conf.expires_on)
+	else:
+		webnotes.response['server_messages'] = """Oops! \
+			Your subscription expired on <b>%s</b>.
+			
+			Nothing catastrophic.
+					
+			Just ask your System Manager to drop in a mail at <b>support@erpnext.com</b> and \
+			we will guide him to get your account re-activated.""" % formatdate(conf.expires_on)
+	
+	webnotes.response['message'] = 'Account Expired'
+	raise webnotes.AuthenticationError
diff --git a/erpnext/startup/js/complete_setup.js b/erpnext/startup/js/complete_setup.js
index c643813..88fb1f0 100644
--- a/erpnext/startup/js/complete_setup.js
+++ b/erpnext/startup/js/complete_setup.js
@@ -16,78 +16,463 @@
 
 // complete my company registration
 // --------------------------------
+wn.provide('erpnext.complete_setup');
 
-erpnext.complete_setup = function() {
-	var currency_list = ['', 'AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AZN', 
-	'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BYR', 
-	'BZD', 'CAD', 'CDF', 'CFA', 'CFP', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CZK', 'DJF', 
-	'DKK', 'DOP', 'DZD', 'EEK', 'EGP', 'ERN', 'ETB', 'EUR', 'EURO', 'FJD', 'FKP', 'FMG', 'GBP', 
-	'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GQE', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 
-	'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 
-	'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 
-	'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 
-	'MZM', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NRs', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 
-	'PKR', 'PLN', 'PYG', 'QAR', 'RMB', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SCR', 'SDG', 'SDR', 
-	'SEK', 'SGD', 'SHP', 'SOS', 'SRD', 'STD', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TRY', 
-	'TTD', 'TWD', 'TZS', 'UAE', 'UAH', 'UGX', 'USD', 'USh', 'UYU', 'UZS', 'VEB', 'VND', 'VUV', 
-	'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YEN', 'YER', 'YTL', 'ZAR', 'ZMK', 'ZWR'];
+$.extend(erpnext.complete_setup, {
+		
+	show: function() {
+		d = erpnext.complete_setup.prepare_dialog();
+		d.show();
+	},
 	
-	var d = new wn.widgets.Dialog({
-		title: "Setup",
-		fields: [
-			{fieldname:'first_name', label:'Your First Name', fieldtype:'Data', reqd: 1},
-			{fieldname:'last_name', label:'Your Last Name', fieldtype:'Data'},
-			{fieldname:'company_name', label:'Company Name', fieldtype:'Data', reqd:1,
-				description: 'e.g. "My Company LLC"'},
-			{fieldname:'company_abbr', label:'Company Abbreviation', fieldtype:'Data',
-				description:'e.g. "MC"',reqd:1},
-			{fieldname:'fy_start', label:'Financial Year Start Date', fieldtype:'Select',
-				description:'Your financial year begins on"', reqd:1,
-				options: ['', '1st Jan', '1st Apr', '1st Jul', '1st Oct'].join('\n')},
-			{fieldname:'currency', label: 'Default Currency', reqd:1,
-				options: currency_list.join('\n'), fieldtype: 'Select'},
-			{fieldname:'update', label:'Setup',fieldtype:'Button'}
-		]
-	})
-	
-	// prepare
-	if(user != 'Administrator'){
-		d.no_cancel(); // Hide close image
-		$('header').toggle(false); // hide toolbar
-	}
-	
-	// company name already set
-	if(wn.control_panel.company_name) {
-		var inp = d.fields_dict.company_name.input;
-		inp.value = wn.control_panel.company_name;
-		inp.disabled = true;
-	}
-	
-	// set first name, last name
-	if(user_fullname) {
-		u = user_fullname.split(' ');
-		if(u[0]) {
-			d.fields_dict.first_name.input.value = u[0];
-		}
-		if(u[1]) {
-			d.fields_dict.last_name.input.value = u[1];			
-		}
-	}
-	
-	// setup
-	d.fields_dict.update.input.onclick = function() {
-		var data = d.get_values();
-		if(!data) return;
-		$(this).set_working();
-		$c_obj('Setup Control','setup_account',data,function(r, rt){
-			sys_defaults = r.message;
-			user_fullname = r.message.user_fullname;
-			wn.boot.user_info[user].fullname = user_fullname;
-			d.hide();
-			$('header').toggle(true);
-			wn.container.wntoolbar.set_user_name();
+	prepare_dialog: function() {
+				
+		var d = new wn.widgets.Dialog({
+			title: "Setup",
+			fields: [
+				{fieldname:'first_name', label:'Your First Name', fieldtype:'Data', reqd: 1},
+				{fieldname:'last_name', label:'Your Last Name', fieldtype:'Data'},
+				{fieldname:'company_name', label:'Company Name', fieldtype:'Data', reqd:1,
+					description: 'e.g. "My Company LLC"'},
+				{fieldname:'company_abbr', label:'Company Abbreviation', fieldtype:'Data',
+					description:'e.g. "MC"',reqd:1},
+				{fieldname:'fy_start', label:'Financial Year Start Date', fieldtype:'Select',
+					description:'Your financial year begins on"', reqd:1,
+					options: erpnext.complete_setup.fy_start_list.join('\n')},
+				{fieldname:'currency', label: 'Default Currency', reqd:1,
+					options: erpnext.complete_setup.currency_list.join('\n'), fieldtype: 'Select'},
+				{fieldname:'industry', label: 'Industry', reqd:1,
+					options: erpnext.complete_setup.industry_list.join('\n'), fieldtype: 'Select'},
+				{fieldname:'country', label: 'Country', reqd:1,
+					options: erpnext.complete_setup.country_list.join('\n'), fieldtype: 'Select'},
+				{fieldname:'timezone', label: 'Time Zone', reqd:1,
+					options: "", fieldtype: 'Select'},
+				{fieldname:'update', label:'Setup',fieldtype:'Button'},
+			],
 		});
-	}
+		
+		if(user != 'Administrator'){
+			$(d.appframe.$titlebar).find('.close').toggle(false); // Hide close image
+			$('header').toggle(false); // hide toolbar
+		}
+		
+		// on clicking update
+		d.fields_dict.update.input.onclick = function() {
+			var data = d.get_values();
+			if(!data) return;
+			$(this).set_working();
+			$c_obj('Setup Control','setup_account',data,function(r, rt){
+				sys_defaults = r.message;
+				user_fullname = r.message.user_fullname;
+				wn.boot.user_info[user].fullname = user_fullname;
+				d.hide();
+				$('header').toggle(true);
+				wn.container.wntoolbar.set_user_name();
+			});
+		};
+		
+		d.fields_dict.country.input.onchange = function() {
+			var country = d.fields_dict.country.input.value;
+			var $timezone = $(d.fields_dict.timezone.input);
+			$timezone.empty();
+			if(country){
+				var timezone_list = erpnext.complete_setup.timezone_dict[country];
+				if(timezone_list.length > 1) {
+					timezone_list = [""].concat(timezone_list);				
+				}
+				$timezone.add_options(timezone_list);
+			}
+		};
+		
+		// company name already set
+		if(wn.control_panel.company_name) {
+			var inp = d.fields_dict.company_name.input;
+			inp.value = wn.control_panel.company_name;
+			inp.disabled = true;
+		}
+
+		// set first name, last name
+		if(user_fullname) {
+			u = user_fullname.split(' ');
+			if(u[0]) {
+				d.fields_dict.first_name.input.value = u[0];
+			}
+			if(u[1]) {
+				d.fields_dict.last_name.input.value = u[1];			
+			}
+		}
+		
+		return d;	
+	},
 	
-	d.show();
-}
+	fy_start_list: ['', '1st Jan', '1st Apr', '1st Jul', '1st Oct'],
+	
+	currency_list: ['', 'AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AZN', 
+		'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BYR', 
+		'BZD', 'CAD', 'CDF', 'CFA', 'CFP', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CZK', 'DJF', 
+		'DKK', 'DOP', 'DZD', 'EEK', 'EGP', 'ERN', 'ETB', 'EUR', 'EURO', 'FJD', 'FKP', 'FMG', 'GBP', 
+		'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GQE', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 
+		'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 
+		'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 
+		'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 
+		'MZM', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NRs', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 
+		'PKR', 'PLN', 'PYG', 'QAR', 'RMB', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SCR', 'SDG', 'SDR', 
+		'SEK', 'SGD', 'SHP', 'SOS', 'SRD', 'STD', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TRY', 
+		'TTD', 'TWD', 'TZS', 'UAE', 'UAH', 'UGX', 'USD', 'USh', 'UYU', 'UZS', 'VEB', 'VND', 'VUV', 
+		'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YEN', 'YER', 'YTL', 'ZAR', 'ZMK', 'ZWR'],
+	
+	industry_list: ['', 'Aerospace and Defence', 'Agriculture', 'Apparel', 'Automobile', 
+		'Banking', 'Biotechnology', 'Chemical', 'Communications', 'Consulting', 'Customer Service',
+		'Education', 'Electronics', 'Energy', 'Engineering', 'Entertainment', 'Environmental', 
+		'Finance', 'Food and Beverage', 'Government', 'Healthcare', 'Hospitality', 
+		'Information Technology', 'Insurance', 'Machinery', 'Manufacturing', 'Media', 
+		'Not For Profit', 'Recreation', 'Retail', 'Shipping', 'Technology', 
+		'Telecommunications', 'Transportation', 'Trading', 'Utilities', 'Other'],
+	
+	country_list: ["", 'Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Angola', 'Antigua and Barbuda',
+		'Argentina', 'Armenia', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain', 
+		'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bhutan', 'Bolivia', 
+		'Bosnia and Herzegovina', 'Botswana', 'Brazil', 'Brunei Darussalam', 'Bulgaria', 
+		'Burkina Faso', 'Burundi', 'Cambodia', 'Cameroon', 'Canada', 'Cape Verde', 
+		'Central African Republic', 'Chad', 'Chile', 'Colombia', 'Comoros', 'Costa Rica', 
+		'Croatia', 'Cuba', 'Cyprus', 'Czech Republic', "C\xc3\xb4te d'Ivoire", 
+		'Democratic Republic of the Congo', 'Denmark', 'Djibouti', 'Dominica', 
+		'Dominican Republic', 'East Timor', 'Ecuador', 'Egypt', 'El Salvador', 
+		'Equatorial Guinea', 'Eritrea', 'Estonia', 'Ethiopia', 'Federated States of Micronesia', 
+		'Fiji', 'Finland', 'France', 'Gabon', 'Georgia', 'Germany', 'Ghana', 'Greece', 
+		'Grenada', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Honduras', 
+		'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Israel', 'Italy', 
+		'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kingdom of the Netherlands', 
+		'Kiribati', 'Kuwait', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 
+		'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macedonia', 'Madagascar', 'Malawi', 
+		'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands', 'Mauritania', 'Mauritius', 
+		'Mexico', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Morocco', 'Mozambique', 
+		'Myanmar', 'Namibia', 'Nauru', 'Nepal', 'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 
+		'North Korea', 'Norway', 'Oman', 'Pakistan', 'Palau', 'Panama', 'Papua New Guinea', 
+		'Paraguay', "People's Republic of China", 'Peru', 'Philippines', 'Poland', 'Portugal', 
+		'Qatar', 'Republic of Ireland', 'Republic of the Congo', 'Romania', 'Russia', 'Rwanda', 
+		'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'Samoa', 
+		'San Marino', 'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 
+		'Singapore', 'Slovakia', 'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 
+		'South Korea', 'Spain', 'Sri Lanka', 'Sudan', 'Suriname', 'Swaziland', 'Sweden', 
+		'Switzerland', 'Syria', 'S\xc3\xa3o Tom\xc3\xa9 and Pr\xc3\xadncipe', 'Tajikistan', 
+		'Tanzania', 'Thailand', 'The Gambia', 'Togo', 'Tonga', 'Trinidad and Tobago', 'Tunisia', 
+		'Turkey', 'Turkmenistan', 'Tuvalu', 'Uganda', 'Ukraine', 'United Arab Emirates', 
+		'United Kingdom', 'United States', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Vatican City', 
+		'Venezuela', 'Vietnam', 'Yemen', 'Zambia', 'Zimbabwe'],
+	
+	timezone_dict: {
+			'Afghanistan': ['Asia/Kabul'],
+			'Albania': ['Europe/Tirane'],
+			'Algeria': ['Africa/Algiers'],
+			'Andorra': ['Europe/Andorra'],
+			'Angola': ['Africa/Luanda'],
+			'Antigua and Barbuda': ['America/Antigua'],
+			'Argentina': ['America/Argentina/Buenos_Aires',
+			              'America/Argentina/Cordoba',
+			              'America/Argentina/Jujuy',
+			              'America/Argentina/Tucuman',
+			              'America/Argentina/Catamarca',
+			              'America/Argentina/La_Rioja',
+			              'America/Argentina/San_Juan',
+			              'America/Argentina/Mendoza',
+			              'America/Argentina/Rio_Gallegos',
+			              'America/Argentina/Ushuaia'],
+			'Armenia': ['Asia/Yerevan'],
+			'Australia': ['Australia/Lord_Howe',
+			              'Australia/Hobart',
+			              'Australia/Currie',
+			              'Australia/Melbourne',
+			              'Australia/Sydney',
+			              'Australia/Broken_Hill',
+			              'Australia/Brisbane',
+			              'Australia/Lindeman',
+			              'Australia/Adelaide',
+			              'Australia/Darwin',
+			              'Australia/Perth'],
+			'Austria': ['Europe/Vienna'],
+			'Azerbaijan': ['Asia/Baku'],
+			'Bahamas': ['America/Nassau'],
+			'Bahrain': ['Asia/Bahrain'],
+			'Bangladesh': ['Asia/Dhaka'],
+			'Barbados': ['America/Barbados'],
+			'Belarus': ['Europe/Minsk'],
+			'Belgium': ['Europe/Brussels'],
+			'Belize': ['America/Belize'],
+			'Benin': ['Africa/Porto-Novo'],
+			'Bhutan': ['Asia/Thimphu'],
+			'Bolivia': ['America/La_Paz'],
+			'Bosnia and Herzegovina': ['Europe/Sarajevo'],
+			'Botswana': ['Africa/Gaborone'],
+			'Brazil': ['America/Noronha',
+			           'America/Belem',
+			           'America/Fortaleza',
+			           'America/Recife',
+			           'America/Araguaina',
+			           'America/Maceio',
+			           'America/Bahia',
+			           'America/Sao_Paulo',
+			           'America/Campo_Grande',
+			           'America/Cuiaba',
+			           'America/Porto_Velho',
+			           'America/Boa_Vista',
+			           'America/Manaus',
+			           'America/Eirunepe',
+			           'America/Rio_Branco'],
+			'Brunei Darussalam': ['Asia/Brunei'],
+			'Bulgaria': ['Europe/Sofia'],
+			'Burkina Faso': ['Africa/Ouagadougou'],
+			'Burundi': ['Africa/Bujumbura'],
+			'Cambodia': ['Asia/Phnom_Penh'],
+			'Cameroon': ['Africa/Douala'],
+			'Canada': ['America/St_Johns',
+			           'America/Halifax',
+			           'America/Glace_Bay',
+			           'America/Moncton',
+			           'America/Goose_Bay',
+			           'America/Blanc-Sablon',
+			           'America/Montreal',
+			           'America/Toronto',
+			           'America/Nipigon',
+			           'America/Thunder_Bay',
+			           'America/Pangnirtung',
+			           'America/Iqaluit',
+			           'America/Atikokan',
+			           'America/Rankin_Inlet',
+			           'America/Winnipeg',
+			           'America/Rainy_River',
+			           'America/Cambridge_Bay',
+			           'America/Regina',
+			           'America/Swift_Current',
+			           'America/Edmonton',
+			           'America/Yellowknife',
+			           'America/Inuvik',
+			           'America/Dawson_Creek',
+			           'America/Vancouver',
+			           'America/Whitehorse',
+			           'America/Dawson'],
+			'Cape Verde': ['Atlantic/Cape_Verde'],
+			'Central African Republic': ['Africa/Bangui'],
+			'Chad': ['Africa/Ndjamena'],
+			'Chile': ['America/Santiago', 'Pacific/Easter'],
+			'Colombia': ['America/Bogota'],
+			'Comoros': ['Indian/Comoro'],
+			'Costa Rica': ['America/Costa_Rica'],
+			'Croatia': ['Europe/Zagreb'],
+			'Cuba': ['America/Havana'],
+			'Cyprus': ['Asia/Nicosia'],
+			'Czech Republic': ['Europe/Prague'],
+			"C\xc3\xb4te d'Ivoire": ['Africa/Abidjan'],
+			'Democratic Republic of the Congo': ['Africa/Kinshasa', 'Africa/Lubumbashi'],
+			'Denmark': ['Europe/Copenhagen'],
+			'Djibouti': ['Africa/Djibouti'],
+			'Dominica': ['America/Dominica'],
+			'Dominican Republic': ['America/Santo_Domingo'],
+			'East Timor': ['Asia/Dili'],
+			'Ecuador': ['America/Guayaquil', 'Pacific/Galapagos'],
+			'Egypt': ['Africa/Cairo'],
+			'El Salvador': ['America/El_Salvador'],
+			'Equatorial Guinea': ['Africa/Malabo'],
+			'Eritrea': ['Africa/Asmera'],
+			'Estonia': ['Europe/Tallinn'],
+			'Ethiopia': ['Africa/Addis_Ababa'],
+			'Federated States of Micronesia': ['Pacific/Truk',
+			                                   'Pacific/Ponape',
+			                                   'Pacific/Kosrae'],
+			'Fiji': ['Pacific/Fiji'],
+			'Finland': ['Europe/Helsinki'],
+			'France': ['Europe/Paris'],
+			'Gabon': ['Africa/Libreville'],
+			'Georgia': ['Asia/Tbilisi'],
+			'Germany': ['Europe/Berlin'],
+			'Ghana': ['Africa/Accra'],
+			'Greece': ['Europe/Athens'],
+			'Grenada': ['America/Grenada'],
+			'Guatemala': ['America/Guatemala'],
+			'Guinea': ['Africa/Conakry'],
+			'Guinea-Bissau': ['Africa/Bissau'],
+			'Guyana': ['America/Guyana'],
+			'Haiti': ['America/Guatemala'],
+			'Honduras': ['America/Tegucigalpa'],
+			'Hungary': ['Europe/Budapest'],
+			'Iceland': ['Atlantic/Reykjavik'],
+			'India': ['Asia/Calcutta'],
+			'Indonesia': ['Asia/Jakarta',
+			              'Asia/Pontianak',
+			              'Asia/Makassar',
+			              'Asia/Jayapura'],
+			'Iran': ['Asia/Tehran'],
+			'Iraq': ['Asia/Baghdad'],
+			'Israel': ['Asia/Jerusalem'],
+			'Italy': ['Europe/Rome'],
+			'Jamaica': ['America/Jamaica'],
+			'Japan': ['Asia/Tokyo'],
+			'Jordan': ['Asia/Amman'],
+			'Kazakhstan': ['Asia/Almaty',
+			               'Asia/Qyzylorda',
+			               'Asia/Aqtobe',
+			               'Asia/Aqtau',
+			               'Asia/Oral'],
+			'Kenya': ['Africa/Nairobi'],
+			'Kingdom of the Netherlands': ['Europe/Amsterdam'],
+			'Kiribati': ['Pacific/Tarawa', 'Pacific/Enderbury', 'Pacific/Kiritimati'],
+			'Kuwait': ['Asia/Kuwait'],
+			'Kyrgyzstan': ['Asia/Bishkek'],
+			'Laos': ['Asia/Vientiane'],
+			'Latvia': ['Europe/Riga'],
+			'Lebanon': ['Asia/Beirut'],
+			'Lesotho': ['Africa/Maseru'],
+			'Liberia': ['Africa/Monrovia'],
+			'Libya': ['Africa/Tripoli'],
+			'Liechtenstein': ['Europe/Vaduz'],
+			'Lithuania': ['Europe/Vilnius'],
+			'Luxembourg': ['Europe/Luxembourg'],
+			'Macedonia': ['Europe/Skopje'],
+			'Madagascar': ['Indian/Antananarivo'],
+			'Malawi': ['Africa/Blantyre'],
+			'Malaysia': ['Asia/Kuala_Lumpur', 'Asia/Kuching'],
+			'Maldives': ['Indian/Maldives'],
+			'Mali': ['Africa/Bamako'],
+			'Malta': ['Europe/Malta'],
+			'Marshall Islands': ['Pacific/Majuro', 'Pacific/Kwajalein'],
+			'Mauritania': ['Africa/Nouakchott'],
+			'Mauritius': ['Indian/Mauritius'],
+			'Mexico': ['America/Mexico_City',
+			           'America/Cancun',
+			           'America/Merida',
+			           'America/Monterrey',
+			           'America/Mazatlan',
+			           'America/Chihuahua',
+			           'America/Hermosillo',
+			           'America/Tijuana'],
+			'Moldova': ['Europe/Chisinau'],
+			'Monaco': ['Europe/Monaco'],
+			'Mongolia': ['Asia/Ulaanbaatar', 'Asia/Hovd', 'Asia/Choibalsan'],
+			'Montenegro': ['Europe/Podgorica'],
+			'Morocco': ['Africa/Casablanca'],
+			'Mozambique': ['Africa/Maputo'],
+			'Myanmar': ['Asia/Rangoon'],
+			'Namibia': ['Africa/Windhoek'],
+			'Nauru': ['Pacific/Nauru'],
+			'Nepal': ['Asia/Katmandu'],
+			'New Zealand': ['Pacific/Auckland', 'Pacific/Chatham'],
+			'Nicaragua': ['America/Managua'],
+			'Niger': ['Africa/Niamey'],
+			'Nigeria': ['Africa/Lagos'],
+			'North Korea': ['Asia/Pyongyang'],
+			'Norway': ['Europe/Oslo'],
+			'Oman': ['Asia/Muscat'],
+			'Pakistan': ['Asia/Karachi'],
+			'Palau': ['Pacific/Palau'],
+			'Panama': ['America/Panama'],
+			'Papua New Guinea': ['Pacific/Port_Moresby'],
+			'Paraguay': ['America/Asuncion'],
+			"People's Republic of China": ['Asia/Shanghai',
+			                               'Asia/Harbin',
+			                               'Asia/Chongqing',
+			                               'Asia/Urumqi',
+			                               'Asia/Kashgar'],
+			'Peru': ['America/Lima'],
+			'Philippines': ['Asia/Manila'],
+			'Poland': ['Europe/Warsaw'],
+			'Portugal': ['Europe/Lisbon', 'Atlantic/Madeira', 'Atlantic/Azores'],
+			'Qatar': ['Asia/Qatar'],
+			'Republic of Ireland': ['Europe/Dublin'],
+			'Republic of the Congo': ['Africa/Brazzaville'],
+			'Romania': ['Europe/Bucharest'],
+			'Russia': ['Europe/Kaliningrad',
+			           'Europe/Moscow',
+			           'Europe/Volgograd',
+			           'Europe/Samara',
+			           'Asia/Yekaterinburg',
+			           'Asia/Omsk',
+			           'Asia/Novosibirsk',
+			           'Asia/Krasnoyarsk',
+			           'Asia/Irkutsk',
+			           'Asia/Yakutsk',
+			           'Asia/Vladivostok',
+			           'Asia/Sakhalin',
+			           'Asia/Magadan',
+			           'Asia/Kamchatka',
+			           'Asia/Anadyr'],
+			'Rwanda': ['Africa/Kigali'],
+			'Saint Kitts and Nevis': ['America/St_Kitts'],
+			'Saint Lucia': ['America/St_Lucia'],
+			'Saint Vincent and the Grenadines': ['America/St_Vincent'],
+			'Samoa': ['Pacific/Apia'],
+			'San Marino': ['Europe/San_Marino'],
+			'Saudi Arabia': ['Asia/Riyadh'],
+			'Senegal': ['Africa/Dakar'],
+			'Serbia': ['Europe/Belgrade'],
+			'Seychelles': ['Indian/Mahe'],
+			'Sierra Leone': ['Africa/Freetown'],
+			'Singapore': ['Asia/Singapore'],
+			'Slovakia': ['Europe/Bratislava'],
+			'Slovenia': ['Europe/Ljubljana'],
+			'Solomon Islands': ['Pacific/Guadalcanal'],
+			'Somalia': ['Africa/Mogadishu'],
+			'South Africa': ['Africa/Johannesburg'],
+			'South Korea': ['Asia/Seoul'],
+			'Spain': ['Europe/Madrid', 'Africa/Ceuta', 'Atlantic/Canary'],
+			'Sri Lanka': ['Asia/Colombo'],
+			'Sudan': ['Africa/Khartoum'],
+			'Suriname': ['America/Paramaribo'],
+			'Swaziland': ['Africa/Mbabane'],
+			'Sweden': ['Europe/Stockholm'],
+			'Switzerland': ['Europe/Zurich'],
+			'Syria': ['Asia/Damascus'],
+			'S\xc3\xa3o Tom\xc3\xa9 and Pr\xc3\xadncipe': ['Africa/Sao_Tome'],
+			'Tajikistan': ['Asia/Dushanbe'],
+			'Tanzania': ['Africa/Dar_es_Salaam'],
+			'Thailand': ['Asia/Bangkok'],
+			'The Gambia': ['Africa/Banjul'],
+			'Togo': ['Africa/Lome'],
+			'Tonga': ['Pacific/Tongatapu'],
+			'Trinidad and Tobago': ['America/Port_of_Spain'],
+			'Tunisia': ['Africa/Tunis'],
+			'Turkey': ['Europe/Istanbul'],
+			'Turkmenistan': ['Asia/Ashgabat'],
+			'Tuvalu': ['Pacific/Funafuti'],
+			'Uganda': ['Africa/Kampala'],
+			'Ukraine': ['Europe/Kiev',
+			            'Europe/Uzhgorod',
+			            'Europe/Zaporozhye',
+			            'Europe/Simferopol'],
+			'United Arab Emirates': ['Asia/Dubai'],
+			'United Kingdom': ['Europe/London'],
+			'United States': ['America/New_York',
+			                  'America/Detroit',
+			                  'America/Kentucky/Louisville',
+			                  'America/Kentucky/Monticello',
+			                  'America/Indiana/Indianapolis',
+			                  'America/Indiana/Marengo',
+			                  'America/Indiana/Knox',
+			                  'America/Indiana/Vevay',
+			                  'America/Chicago',
+			                  'America/Indiana/Vincennes',
+			                  'America/Indiana/Petersburg',
+			                  'America/Menominee',
+			                  'America/North_Dakota/Center',
+			                  'America/North_Dakota/New_Salem',
+			                  'America/Denver',
+			                  'America/Boise',
+			                  'America/Shiprock',
+			                  'America/Phoenix',
+			                  'America/Los_Angeles',
+			                  'America/Anchorage',
+			                  'America/Juneau',
+			                  'America/Yakutat',
+			                  'America/Nome',
+			                  'America/Adak',
+			                  'Pacific/Honolulu'],
+			'Uruguay': ['America/Montevideo'],
+			'Uzbekistan': ['Asia/Samarkand', 'Asia/Tashkent'],
+			'Vanuatu': ['Pacific/Efate'],
+			'Vatican City': ['Europe/Vatican'],
+			'Venezuela': ['America/Caracas'],
+			'Vietnam': ['Asia/Saigon'],
+			'Yemen': ['Asia/Aden'],
+			'Zambia': ['Africa/Lusaka'],
+			'Zimbabwe': ['Africa/Harare']
+	},		
+});
\ No newline at end of file
diff --git a/erpnext/startup/startup.css b/erpnext/startup/startup.css
index 5ba72f3..490b2f4 100644
--- a/erpnext/startup/startup.css
+++ b/erpnext/startup/startup.css
@@ -52,3 +52,12 @@
 	min-width: 160px !important;
 	max-width: 260px !important;
 }
+
+.expiry-info {
+	margin-top: 40px;
+	margin-bottom: -40px;
+	text-align: center;
+	background-color: rgb(255, 255, 204);
+	padding: 7px;
+	z-index: 1;
+}
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index 02a0032..3b931d7 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -48,6 +48,7 @@
 }
 
 erpnext.startup.start = function() {
+	console.log('Starting up...');
 	$('#startup_div').html('Starting up...').toggle(true);
 	
 	
@@ -90,9 +91,26 @@
 		// complete registration
 		if(in_list(user_roles,'System Manager') && (wn.boot.setup_complete=='No')) { 
 			wn.require("erpnext/startup/js/complete_setup.js");
-			erpnext.complete_setup(); 
+			erpnext.complete_setup.show(); 
 		}
-
+		
+		if(wn.boot.expires_on) {
+			var today = dateutil.str_to_obj(dateutil.get_today());
+			var expires_on = dateutil.str_to_obj(wn.boot.expires_on);
+			var diff = dateutil.get_diff(expires_on, today);
+			if (0 <= diff && diff <= 15) {
+				var expiry_string = diff==0 ? "today" : repl("in %(diff)s day(s)", { diff: diff });
+				$('header').append(repl('<div class="expiry-info"> \
+					Ahem! Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
+					Please renew your subscription to continue using ERPNext \
+					(and remove this annoying banner). \
+				</div>', { expiry_string: expiry_string }));
+			} else if (diff < 0) {
+				$('header').append(repl('<div class="expiry-info"> \
+					Ahem! This ERPNext subscription <b>has expired</b> and should be deleted. \
+				</div>', { expiry_string: expiry_string }));
+			}
+		}
 	}
 
 	erpnext.set_about();
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.py b/erpnext/stock/doctype/sales_bom/sales_bom.py
index ae3378e..f292164 100644
--- a/erpnext/stock/doctype/sales_bom/sales_bom.py
+++ b/erpnext/stock/doctype/sales_bom/sales_bom.py
@@ -67,7 +67,7 @@
 				msgprint("Sales Bom Item " + d.item_code +" cannot be child item.")
 				raise Exception
 			# Check if is_main_item is modified once saved
-			if not self.doc.fields.get('__islocal') and d.is_main_item == "Yes" and cstr(d.item_code) != cstr(self.doc.name)[:-3] :
+			if not self.doc.fields.get('__islocal') and d.is_main_item == "Yes" and cstr(d.item_code) != cstr(self.doc.new_item_code)[:-3] :
 				msgprint("Modifying the main item is not allowed.")
 				raise Exception
 		if len(is_main_item) > 1:
@@ -165,19 +165,18 @@
 			return
 		
 		# get all Sales BOM that have the first item	
-		sbl = sql("select distinct parent from `tabSales BOM Item` where item_code=%s", il[0].item_code)
+		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))
 		
 		# check all siblings
 		sub_items = [[d.item_code, flt(d.qty)] for d in il]
 		
 		for s in sbl:
-			if not cstr(s[0]) == cstr(self.doc.name) :
-				t = sql("select item_code, qty from `tabSales BOM Item` where parent=%s", s[0])
-				t = [[d[0], flt(d[1])] for d in t]
+			t = 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])
-					raise Exception
+			if self.has_same_items(sub_items, t):
+				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.")
 
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.txt b/erpnext/stock/doctype/sales_bom/sales_bom.txt
index 476a319..dfc2a65 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-23 16:00:21',
+		'creation': '2012-04-26 13:04:56',
 		'docstatus': 0,
-		'modified': '2012-04-24 15:07:42',
+		'modified': '2012-04-27 11:00:18',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -15,7 +15,6 @@
 		'_last_update': u'1322549701',
 		'allow_trash': 1,
 		'colour': u'White:FFF',
-		'default_print_format': u'Standard',
 		'doctype': 'DocType',
 		'document_type': u'Master',
 		'is_submittable': 1,
@@ -127,6 +126,24 @@
 	# DocField
 	{
 		'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%'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'new_item_code',
 		'fieldtype': u'Data',
 		'label': u'New Item Code',
@@ -176,6 +193,15 @@
 	# 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',
@@ -188,6 +214,18 @@
 
 	# 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
+	},
+
+	# DocField
+	{
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'price_list',
@@ -216,42 +254,6 @@
 
 	# DocField
 	{
-		'colour': u'White:FFF',
-		'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'sales_bom_items',
-		'fieldtype': u'Table',
-		'label': u'Sales BOM Items',
-		'oldfieldname': u'sales_bom_items',
-		'oldfieldtype': u'Table',
-		'options': u'Sales BOM Item',
-		'permlevel': 0
-	},
-
-	# 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
-	},
-
-	# DocField
-	{
 		'depends_on': u'eval:doc.amended_from',
 		'description': u'The date at which current entry is corrected in the system.',
 		'doctype': u'DocField',
@@ -270,13 +272,46 @@
 		'fieldtype': u'Link',
 		'label': u'Amended From',
 		'no_copy': 1,
-		'options': u'Sales Invoice',
+		'options': u'Sales BOM',
 		'permlevel': 1,
 		'print_hide': 1
 	},
 
 	# DocField
 	{
+		'colour': u'White:FFF',
+		'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'item_section',
+		'fieldtype': u'Section Break',
+		'label': u'Items',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'sales_bom_items',
+		'fieldtype': u'Table',
+		'label': u'Sales BOM Items',
+		'oldfieldname': u'sales_bom_items',
+		'oldfieldtype': u'Table',
+		'options': u'Sales BOM Item',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
 		'doctype': u'DocField',
 		'fieldname': u'trash_reason',
 		'fieldtype': u'Small Text',
diff --git a/erpnext/stock/search_criteria/stock_report/stock_report.js b/erpnext/stock/search_criteria/stock_report/stock_report.js
index 5451eb1..d08d1e7 100644
--- a/erpnext/stock/search_criteria/stock_report/stock_report.js
+++ b/erpnext/stock/search_criteria/stock_report/stock_report.js
@@ -19,7 +19,7 @@
   this.mytabs.items['Select Columns'].hide()
   this.mytabs.items['More Filters'].hide()
   this.hide_all_filters();
-  this.add_filter({fieldname:'based_on', label:'Based On', fieldtype:'Select', options:'Warehouse'+NEWLINE+'Item Code',report_default:'Warehouse',ignore : 1,parent:'Stock Ledger Entry'});
+  this.add_filter({fieldname:'based_on', label:'Based On', fieldtype:'Select', options:'Warehouse'+NEWLINE+'Item Code',ignore : 1,parent:'Stock Ledger Entry'});
   this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'To Posting Date'].df.filter_hide = 0;
   this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Item Code'].df.filter_hide = 0;
   this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Warehouse'].df.filter_hide = 0;
@@ -57,8 +57,8 @@
     ware_type_cond = repl(' AND `tabWarehouse`.warehouse_type IN (%(war)s)', {war: war.substr(0,war.length-1)})
   }
   
-  if(based_on.length == 1){
-    if(based_on == 'Item Code'){
+  if(based_on.length == 1 && based_on[0]){
+    if(based_on[0] == 'Item Code'){
       cols = '`tabItem`.name AS "Item Code", `tabItem`.item_name AS "Item Name", `tabItem`.description AS "Description", `tabItem`.stock_uom AS "Stock UOM"';
       cond = '(IFNULL(`tabItem`.`end_of_life`,"") = "" OR `tabItem`.`end_of_life` = "0000-00-00" OR `tabItem`.`end_of_life` > NOW()) AND `tabItem`.is_stock_item = "Yes"';
       if(item_code) cond += repl(' AND `tabItem`.name = %(item)s', {item:'"'+item_code+'"'});
@@ -66,7 +66,7 @@
       tables = '`tabItem`';
       group_by = '`tabStock Ledger Entry`.item_code';
     }
-    else if(based_on == 'Warehouse'){
+    else if(based_on[0] == 'Warehouse'){
       cols = '`tabWarehouse`.name AS "Warehouse", `tabWarehouse`.warehouse_type AS "Warehouse Type"';
       cond = '`tabWarehouse`.docstatus < 2'
       if(warehouse) cond += repl(' AND `tabWarehouse`.name = %(warehouse)s', {warehouse:'"'+warehouse+'"'});
@@ -74,8 +74,7 @@
       tables = '`tabWarehouse`';
       group_by = '`tabStock Ledger Entry`.warehouse';
     }
-  }
-  else if(based_on.length == 2){
+  } else {
     cols = '`tabItem`.name AS "Item Code", `tabItem`.item_name AS "Item Name", `tabItem`.description AS "Description", `tabItem`.stock_uom AS "Stock UOM", `tabWarehouse`.name AS "Warehouse",  `tabWarehouse`.warehouse_type AS "Warehouse Type"';
     cond = '(IFNULL(`tabItem`.`end_of_life`,"") = "" OR `tabItem`.`end_of_life` = "0000-00-00" OR `tabItem`.`end_of_life` > NOW()) AND `tabItem`.is_stock_item = "Yes" AND `tabWarehouse`.docstatus < 2';
     if(item_code) cond += repl(" AND `tabItem`.name = %(item)s", {item:"'"+item_code+"'"});
@@ -87,4 +86,4 @@
 
   q = repl("SELECT %(cols)s FROM %(tables)s, `tabStock Ledger Entry` WHERE %(cond)s %(date_cond)s GROUP BY %(group_by)s", {cols:cols, tables:tables, cond:cond, date_cond:date_cond, group_by:group_by});
   return q;
-}
\ No newline at end of file
+}
diff --git a/erpnext/stock/search_criteria/stock_report/stock_report.py b/erpnext/stock/search_criteria/stock_report/stock_report.py
index 84866e9..b87f684 100644
--- a/erpnext/stock/search_criteria/stock_report/stock_report.py
+++ b/erpnext/stock/search_criteria/stock_report/stock_report.py
@@ -14,19 +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/>.
 
-if not filter_values.get('based_on'):
-  msgprint("Please Select Based On")
-  raise Exception
 cols, columns = [], []
 # Add columns
 # ------------
 based_on = filter_values.get('based_on').split(NEWLINE)
-if len(based_on) == 1:
+if len(based_on) == 1 and based_on[0]:
   if based_on[0] == 'Item Code':
     cols = ["Item Code", "Item Name", "Description", "Stock UOM"]
   elif based_on[0] == 'Warehouse':
     cols = ["Warehouse", "Warehouse Type"]
-elif len(based_on) == 2:
+else:
   cols = ["Item Code", "Item Name", "Description", "Stock UOM", "Warehouse",  "Warehouse Type"]
 
 for d in cols:
@@ -65,7 +62,7 @@
 cl_bal,tot_stock = 0,0
   
 for r in res:
-  if len(based_on) == 1:
+  if len(based_on) == 1 and based_on[0]:
     if based_on[0] == 'Item Code': closing_balance, stock_value = get_values(msgprint, flt, posting_date, item_code = r[col_idx['Item Code']])
     elif based_on[0] == 'Warehouse': closing_balance, stock_value = get_values(msgprint, flt, posting_date, warehouse = r[col_idx['Warehouse']])
     r.append(closing_balance)
diff --git a/erpnext/utilities/page/users/users.css b/erpnext/utilities/page/users/users.css
index 1a85d15..b739a57 100644
--- a/erpnext/utilities/page/users/users.css
+++ b/erpnext/utilities/page/users/users.css
@@ -32,4 +32,15 @@
 	text-align: center;
 	border-bottom: 1px solid #aaa;
 	min-width: 30px;
+}
+
+.subscription-info-box {
+	margin: 0px 11px;
+	background-color: #EEEEEE;
+    border: 1px solid #DDDBDB;
+    padding: 5px 3px;
+}
+
+.subscription-info {
+	padding: 0px 10px;
 }
\ No newline at end of file
diff --git a/erpnext/utilities/page/users/users.js b/erpnext/utilities/page/users/users.js
index ad238ae..704682e 100644
--- a/erpnext/utilities/page/users/users.js
+++ b/erpnext/utilities/page/users/users.js
@@ -63,6 +63,21 @@
 				}
 			}
 		});
+		if(!$('.subscription-info').length && (wn.boot.max_users || wn.boot.expires_on)) {
+			var $sub_info = $('<div class="subscription-info-box"><div>').insertAfter('.help');
+			if(wn.boot.max_users) {
+				$sub_info.append(repl('\
+				<span class="subscription-info"> \
+					Max Users: <b>%(max_users)s</b> \
+				</span>', { max_users: wn.boot.max_users }));
+			}
+			if(wn.boot.expires_on) {
+				$sub_info.append(repl('\
+				<span class="subscription-info"> \
+				Expires On: <b>%(expires_on)s</b> \
+				</span>', { expires_on: dateutil.str_to_user(wn.boot.expires_on) }));
+			}
+		}
 	},
 	render: function(data) {
 		if(data.file_list) {
@@ -207,6 +222,17 @@
 	},
 	add_user: function() {
 		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, \
+			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 /> \
+			2. <b>Disable one or more of your existing users and try again</b>",
+				{active_users: active_users.length}));
+			return;
+		}
 		var d = new wn.widgets.Dialog({
 			title: 'Add User',
 			width: 400,
diff --git a/erpnext/utilities/page/users/users.py b/erpnext/utilities/page/users/users.py
index 6735dc0..819f7bb 100644
--- a/erpnext/utilities/page/users/users.py
+++ b/erpnext/utilities/page/users/users.py
@@ -103,9 +103,24 @@
 @webnotes.whitelist()
 def add_profile(args):
 	from webnotes.utils import validate_email_add, now
-	email = args['user']
-			
+	email = args['user']		
 	sql = webnotes.conn.sql
+		
+	# validate max number of users exceeded or not
+	import conf
+	if hasattr(conf, 'max_users'):
+		active_users = sql("""select count(*) from tabProfile
+			where ifnull(enabled, 0)=1 and docstatus<2
+			and name not in ('Administrator', 'Guest')""")[0][0]
+		if active_users >= conf.max_users:
+			# same message as in users.js
+			webnotes.msgprint("""Alas! <br />\
+				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 /> \
+				2. <b>Disable one or more of your existing users and try again</b>""" \
+				% {'active_users': active_users}, raise_exception=1)
 	
 	if not email:
 		email = webnotes.form_dict.get('user')
diff --git a/index.cgi b/index.cgi
index 31da310..bf84c5f 100755
--- a/index.cgi
+++ b/index.cgi
@@ -50,8 +50,8 @@
 		return True
 	except webnotes.AuthenticationError, e:
 		return True
-	except webnotes.UnknownDomainError, e:
-		print "Location: " + (conf.redirect_404)
+	#except webnotes.UnknownDomainError, e:
+	#	print "Location: " + (conf.redirect_404)
 	except webnotes.SessionStopped, e:
 		if 'cmd' in webnotes.form_dict:
 			webnotes.handler.print_json()
diff --git a/js/all-app.js b/js/all-app.js
index c244fab..675bcab 100644
--- a/js/all-app.js
+++ b/js/all-app.js
@@ -2217,12 +2217,19 @@
  */
 var current_module;var is_system_manager=0;wn.provide('erpnext.startup');erpnext.modules={'Selling':'selling-home','Accounts':'accounts-home','Stock':'stock-home','Buying':'buying-home','Support':'support-home','Projects':'projects-home','Production':'production-home','Website':'website-home','HR':'hr-home','Setup':'Setup','Activity':'activity','To Do':'todo','Calendar':'calendar','Messages':'messages','Knowledge Base':'questions','Dashboard':'dashboard'}
 wn.provide('wn.modules');$.extend(wn.modules,erpnext.modules);wn.modules['Core']='Setup';erpnext.startup.set_globals=function(){if(inList(user_roles,'System Manager'))is_system_manager=1;}
-erpnext.startup.start=function(){$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
+erpnext.startup.start=function(){console.log('Starting up...');$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
 if(user=='Guest'){if(wn.boot.custom_css){set_style(wn.boot.custom_css);}
 if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;}
 if(wn.boot.startup_code){eval(wn.boot.startup_code);}}else{wn.boot.profile.allow_modules=wn.boot.profile.allow_modules.concat(['To Do','Knowledge Base','Calendar','Activity','Messages'])
 if(user_roles.indexOf('Accounts Manager')!=-1){wn.boot.profile.allow_modules.push('Dashboard');}
-erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup();}}
+erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup.show();}
+if(wn.boot.expires_on){var today=dateutil.str_to_obj(dateutil.get_today());var expires_on=dateutil.str_to_obj(wn.boot.expires_on);var diff=dateutil.get_diff(expires_on,today);if(0<=diff&&diff<=15){var expiry_string=diff==0?"today":repl("in %(diff)s day(s)",{diff:diff});$('header').append(repl('<div class="expiry-info"> \
+     Ahem! Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
+     Please renew your subscription to continue using ERPNext \
+     (and remove this annoying banner). \
+    </div>',{expiry_string:expiry_string}));}else if(diff<0){$('header').append(repl('<div class="expiry-info"> \
+     Ahem! This ERPNext subscription <b>has expired</b> and should be deleted. \
+    </div>',{expiry_string:expiry_string}));}}}
 erpnext.set_about();$('#startup_div').toggle(false);}
 show_chart_browser=function(nm,chart_type){var call_back=function(){if(nm=='Sales Browser'){var sb_obj=new SalesBrowser();sb_obj.set_val(chart_type);}
 else if(nm=='Accounts Browser')
diff --git a/js/all-web.js b/js/all-web.js
index 911c1d9..41512cd 100644
--- a/js/all-web.js
+++ b/js/all-web.js
@@ -824,12 +824,19 @@
  */
 var current_module;var is_system_manager=0;wn.provide('erpnext.startup');erpnext.modules={'Selling':'selling-home','Accounts':'accounts-home','Stock':'stock-home','Buying':'buying-home','Support':'support-home','Projects':'projects-home','Production':'production-home','Website':'website-home','HR':'hr-home','Setup':'Setup','Activity':'activity','To Do':'todo','Calendar':'calendar','Messages':'messages','Knowledge Base':'questions','Dashboard':'dashboard'}
 wn.provide('wn.modules');$.extend(wn.modules,erpnext.modules);wn.modules['Core']='Setup';erpnext.startup.set_globals=function(){if(inList(user_roles,'System Manager'))is_system_manager=1;}
-erpnext.startup.start=function(){$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
+erpnext.startup.start=function(){console.log('Starting up...');$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
 if(user=='Guest'){if(wn.boot.custom_css){set_style(wn.boot.custom_css);}
 if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;}
 if(wn.boot.startup_code){eval(wn.boot.startup_code);}}else{wn.boot.profile.allow_modules=wn.boot.profile.allow_modules.concat(['To Do','Knowledge Base','Calendar','Activity','Messages'])
 if(user_roles.indexOf('Accounts Manager')!=-1){wn.boot.profile.allow_modules.push('Dashboard');}
-erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup();}}
+erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup.show();}
+if(wn.boot.expires_on){var today=dateutil.str_to_obj(dateutil.get_today());var expires_on=dateutil.str_to_obj(wn.boot.expires_on);var diff=dateutil.get_diff(expires_on,today);if(0<=diff&&diff<=15){var expiry_string=diff==0?"today":repl("in %(diff)s day(s)",{diff:diff});$('header').append(repl('<div class="expiry-info"> \
+     Ahem! Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
+     Please renew your subscription to continue using ERPNext \
+     (and remove this annoying banner). \
+    </div>',{expiry_string:expiry_string}));}else if(diff<0){$('header').append(repl('<div class="expiry-info"> \
+     Ahem! This ERPNext subscription <b>has expired</b> and should be deleted. \
+    </div>',{expiry_string:expiry_string}));}}}
 erpnext.set_about();$('#startup_div').toggle(false);}
 show_chart_browser=function(nm,chart_type){var call_back=function(){if(nm=='Sales Browser'){var sb_obj=new SalesBrowser();sb_obj.set_val(chart_type);}
 else if(nm=='Accounts Browser')
