[journal voucher] [added opening entry] [cleanups]
diff --git a/accounts/doctype/account/account.js b/accounts/doctype/account/account.js
index db50ff6..252b708 100644
--- a/accounts/doctype/account/account.js
+++ b/accounts/doctype/account/account.js
@@ -82,7 +82,7 @@
 // -----------------------------------------
 cur_frm.cscript.add_toolbar_buttons = function(doc) {
 	cur_frm.add_custom_button('Chart of Accounts', 
-		function() { wn.set_route("Accounts Browser", "Account"); }, 'icon-list')
+		function() { wn.set_route("Accounts Browser", "Account"); }, 'icon-sitemap')
 
 	if (cstr(doc.group_or_ledger) == 'Group') {
 		cur_frm.add_custom_button('Convert to Ledger', 
diff --git a/accounts/doctype/cost_center/cost_center.js b/accounts/doctype/cost_center/cost_center.js
index e63fa04..2a98a96 100644
--- a/accounts/doctype/cost_center/cost_center.js
+++ b/accounts/doctype/cost_center/cost_center.js
@@ -28,6 +28,9 @@
 	
 	cur_frm.toggle_display('sb1', doc.group_or_ledger=='Ledger')
 	cur_frm.set_intro(intro_txt);
+	
+	cur_frm.add_custom_button('Chart of Cost Centers', 
+		function() { wn.set_route("Accounts Browser", "Cost Center"); }, 'icon-sitemap')
 }
 
 //Account filtering for cost center
diff --git a/accounts/doctype/journal_voucher/journal_voucher.js b/accounts/doctype/journal_voucher/journal_voucher.js
index 78956bf..7e2f22a 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.js
+++ b/accounts/doctype/journal_voucher/journal_voucher.js
@@ -139,10 +139,21 @@
 cur_frm.cscript.voucher_type = function(doc, cdt, cdn) {
 	cur_frm.set_df_property("cheque_no", "reqd", doc.voucher_type=="Bank Voucher");
 	cur_frm.set_df_property("cheque_date", "reqd", doc.voucher_type=="Bank Voucher");
+
+	if(wn.model.get("Journal Voucher Detail", {"parent":doc.name}).length!===0 // too late
+		|| !doc.company) // too early
+		return;
 	
-	if(in_list(["Bank Voucher", "Cash Voucher"], doc.voucher_type) 
-		&& doc.company
-		&& wn.model.get("Journal Voucher Detail", {"parent":doc.name}).length==0) {
+	var update_jv_details = function(doc, r) {
+		$.each(r.message, function(i, d) {
+			var jvdetail = wn.model.add_child(doc, "Journal Voucher Detail", "entries");
+			jvdetail.account = d.account;
+			jvdetail.balance = d.balance;
+		});
+		refresh_field("entries");
+	}
+	
+	if(in_list(["Bank Voucher", "Cash Voucher"], doc.voucher_type)) {
 		wn.call({
 			type: "GET",
 			method: "accounts.doctype.journal_voucher.journal_voucher.get_default_bank_cash_account",
@@ -152,14 +163,26 @@
 			},
 			callback: function(r) {
 				if(r.message) {
-					var jvdetail = wn.model.add_child(doc, "Journal Voucher Detail", "entries");
-					jvdetail.account = r.message.account;
-					// this is a data field????
-					jvdetail.balance = format_currency(r.message.balance);
-					refresh_field("entries");
+					update_jv_details(doc, r);
 				}
 			}
 		})
+	} else if(doc.voucher_type=="Opening Entry") {
+		wn.call({
+			type:"GET",
+			method: "accounts.doctype.journal_voucher.journal_voucher.get_opening_accounts",
+			args: {
+				"company": doc.company
+			},
+			callback: function(r) {
+				wn.model.clear_table("Journal Voucher Detail", "Journal Voucher", 
+					doc.name, "entries");
+				if(r.message) {
+					update_jv_details(doc, r);
+				}
+				cur_frm.set_value("is_opening", "Yes")
+			}
+		})
 	}
 }
 
diff --git a/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py
index 2c5cd4f..77fec8e 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/accounts/doctype/journal_voucher/journal_voucher.py
@@ -352,11 +352,20 @@
 	account = webnotes.conn.get_value("Company", company,
 		voucher_type=="Bank Voucher" and "default_bank_account" or "default_cash_account")
 	if account:
-		return {
+		return [{
 			"account": account,
 			"balance": get_balance_on(account)
-		}
+		}]
 
+@webnotes.whitelist()
+def get_opening_accounts(company):
+	"""get all balance sheet accounts for opening entry"""
+	from accounts.utils import get_balance_on
+	accounts = webnotes.conn.sql_list("""select name from tabAccount 
+		where group_or_ledger='Ledger' and is_pl_account='No' and company=%s""", company)
+	
+	return [{"account": a, "balance": get_balance_on(a)} for a in accounts]
+	
 def get_against_purchase_invoice(doctype, txt, searchfield, start, page_len, filters):
 	return webnotes.conn.sql("""select name, credit_to, outstanding_amount, bill_no, bill_date 
 		from `tabPurchase Invoice` where credit_to = %s and docstatus = 1 
diff --git a/accounts/doctype/journal_voucher/journal_voucher.txt b/accounts/doctype/journal_voucher/journal_voucher.txt
index d0163e6..603eb99 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.txt
+++ b/accounts/doctype/journal_voucher/journal_voucher.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-03-25 10:53:52", 
   "docstatus": 0, 
-  "modified": "2013-06-11 16:04:20", 
+  "modified": "2013-06-28 14:27:11", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -68,7 +68,7 @@
   "label": "Voucher Type", 
   "oldfieldname": "voucher_type", 
   "oldfieldtype": "Select", 
-  "options": "\nJournal Entry\nBank Voucher\nCash Voucher\nCredit Card Voucher\nDebit Note\nCredit Note\nContra Voucher\nExcise Voucher\nWrite Off Voucher", 
+  "options": "\nJournal Entry\nBank Voucher\nCash Voucher\nCredit Card Voucher\nDebit Note\nCredit Note\nContra Voucher\nExcise Voucher\nWrite Off Voucher\nOpening Entry", 
   "print_hide": 0, 
   "read_only": 0, 
   "search_index": 1
diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.js b/accounts/page/voucher_import_tool/voucher_import_tool.js
index bf6b065..48216b8 100644
--- a/accounts/page/voucher_import_tool/voucher_import_tool.js
+++ b/accounts/page/voucher_import_tool/voucher_import_tool.js
@@ -9,11 +9,11 @@
 		<p class="help">Import multiple accounting entries via CSV (spreadsheet) file:</p>\
 		<h3>1. Download Template</h3><br>\
 		<div style="padding-left: 30px;">\
-			<button class="btn btn-download-two-accounts">Download</button>\
+			<button class="btn btn-default btn-download-two-accounts">Download</button>\
 			<p class="help">Import multiple vouchers with one debit and one credit entry</p>\
 		</div>\
 		<div style="padding-left: 30px;">\
-			<button class="btn btn-download-multiple-accounts">Download</button>\
+			<button class="btn btn-default btn-download-multiple-accounts">Download</button>\
 			<p class="help">Import multiple vouchers with multiple accounts</p>\
 		</div>\
 		<hr>\
diff --git a/setup/doctype/setup_control/setup_control.py b/setup/doctype/setup_control/setup_control.py
index eb668a7..c481edf 100644
--- a/setup/doctype/setup_control/setup_control.py
+++ b/setup/doctype/setup_control/setup_control.py
@@ -61,13 +61,20 @@
 			WHERE name=%(name)s AND docstatus<2""", args)
 	
 	def create_fiscal_year_and_company(self, args):
-		curr_fiscal_year, fy_start_date, fy_abbr = self.get_fy_details(args.get('fy_start'))
-		# Fiscal Year
+		curr_fiscal_year, fy_start_date, fy_abbr = self.get_fy_details(args.get('fy_start'), True)
 		webnotes.bean([{
 			"doctype":"Fiscal Year",
 			'year': curr_fiscal_year,
 			'year_start_date': fy_start_date,
 		}]).insert()
+
+		curr_fiscal_year, fy_start_date, fy_abbr = self.get_fy_details(args.get('fy_start'))
+		webnotes.bean([{
+			"doctype":"Fiscal Year",
+			'year': curr_fiscal_year,
+			'year_start_date': fy_start_date,
+		}]).insert()
+
 		
 		# Company
 		webnotes.bean([{
@@ -198,13 +205,15 @@
 		
 	# Get Fiscal year Details
 	# ------------------------
-	def get_fy_details(self, fy_start):
+	def get_fy_details(self, fy_start, last_year=False):
 		st = {'1st Jan':'01-01','1st Apr':'04-01','1st Jul':'07-01', '1st Oct': '10-01'}
 		curr_year = getdate(nowdate()).year
+		if last_year:
+			curr_year = curr_year - 1
 		if cint(getdate(nowdate()).month) < cint((st[fy_start].split('-'))[0]):
 			curr_year = getdate(nowdate()).year - 1
 		stdt = cstr(curr_year)+'-'+cstr(st[fy_start])
-		#eddt = sql("select DATE_FORMAT(DATE_SUB(DATE_ADD('%s', INTERVAL 1 YEAR), INTERVAL 1 DAY),'%%d-%%m-%%Y')" % (stdt.split('-')[2]+ '-' + stdt.split('-')[1] + '-' + stdt.split('-')[0]))
+
 		if(fy_start == '1st Jan'):
 			fy = cstr(getdate(nowdate()).year)
 			abbr = cstr(fy)[-2:]
diff --git a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index 3492931..b2a1085 100644
--- a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -121,8 +121,6 @@
 			self.doc.posting_time = '00:00'
 			
 	def on_doctype_update(self):
-		webnotes.msgprint(webnotes.conn.sql("""show index from `tabStock Ledger Entry` 
-			where Key_name="posting_sort_index" """))
 		if not webnotes.conn.sql("""show index from `tabStock Ledger Entry` 
 			where Key_name="posting_sort_index" """):
 			webnotes.conn.commit()