[fix] Removed voucher import tool webnotes/erpnext#1094
diff --git a/accounts/page/accounts_home/accounts_home.js b/accounts/page/accounts_home/accounts_home.js
index 0116247..40ee326 100644
--- a/accounts/page/accounts_home/accounts_home.js
+++ b/accounts/page/accounts_home/accounts_home.js
@@ -90,11 +90,6 @@
 				"doctype": "Period Closing Voucher",
 				description: wn._("Close Balance Sheet and book Profit or Loss.")
 			},
-			{
-				"page":"voucher-import-tool",
-				"label": wn._("Voucher Import Tool"),
-				"description": wn._("Import accounting entries from CSV.")
-			},		
 		]
 	},
 	{
diff --git a/accounts/page/voucher_import_tool/README.md b/accounts/page/voucher_import_tool/README.md
deleted file mode 100644
index 84561ad..0000000
--- a/accounts/page/voucher_import_tool/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Import accounting entries by uploading a csv file.
\ No newline at end of file
diff --git a/accounts/page/voucher_import_tool/__init__.py b/accounts/page/voucher_import_tool/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/accounts/page/voucher_import_tool/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.js b/accounts/page/voucher_import_tool/voucher_import_tool.js
deleted file mode 100644
index afacda8..0000000
--- a/accounts/page/voucher_import_tool/voucher_import_tool.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-wn.pages['voucher-import-tool'].onload = function(wrapper) { 
-	wn.ui.make_app_page({
-		parent: wrapper,
-		title: wn._('Voucher Import Tool'),
-		single_column: true
-	});
-	
-	$(wrapper).find('.layout-main').html('<p class="help">' +
-		wn._('Import multiple accounting entries via CSV (spreadsheet) file:') +
-		'</p><h3> 1. ' + wn._('Download Template') + '</h3><br>' +
-		'<div style="padding-left: 30px;">' +
-		    '<button class="btn btn-default btn-download-two-accounts">' +
-		    wn._('Download') + '</button>' +
-			'<p class="help">' + 
-			wn._('Import multiple vouchers with one debit and one credit entry') +
-			'</p></div>'+
-		'<div style="padding-left: 30px;">'+
-			'<button class="btn btn-default btn-download-multiple-accounts">' +
-				wn._('Download') + 
-			'</button><p class="help">' + 
-				wn._('Import multiple vouchers with multiple accounts')+
-			'</p>'+
-		'</div>'+
-		'<hr>'+
-		'<h3> 2. ' + wn._('Upload') + '</h3><br>'+
-		'<div style="padding-left: 30px;">'+
-			'<p class="help">' + wn._('Upload file in CSV format with UTF-8 encoding') +
-			'</p><div id="voucher-upload"></div>'+
-		'</div><br>'+
-		'<div class="working"></div>'+
-		'<div class="well messages" style="display: none;"></div>');
-		
-	wn.upload.make({
-		parent: $(wrapper).find("#voucher-upload"),
-		args: {
-			method: "accounts.page.voucher_import_tool.voucher_import_tool.upload"
-		},
-		callback: function(fid, filename, r) {
-			wrapper.waiting.toggle(false);
-			$(wrapper).find(".messages").toggle(true).html(
-				r.message.join("<div style='margin:4px; border-top:1px solid #aaa;'></div>"))
-		}
-	});
-	
-	wrapper.waiting = wn.messages.waiting($(wrapper).find('.working'), 
-		"Importing Vouchers...").toggle(false);
-
-	$(wrapper).find(".btn-download-two-accounts").click(function() {
-		window.location.href = wn.request.url + 
-			'?cmd=accounts.page.voucher_import_tool.voucher_import_tool.get_template' + 	
-			'&type=Two Accounts';
-	});
-
-	$(wrapper).find(".btn-download-multiple-accounts").click(function() {
-		window.location.href = wn.request.url + 
-				'?cmd=accounts.page.voucher_import_tool.voucher_import_tool.get_template' + 
-				'&type=Multiple Accounts';
-	});
-	
-	// rename button
-	$(wrapper).find('#voucher-upload form input[type="submit"]')
-		.click(function() {
-			$(wrapper).find(".messages").toggle(false);
-			wrapper.waiting.toggle(true);
-		});		
-}
\ No newline at end of file
diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.py b/accounts/page/voucher_import_tool/voucher_import_tool.py
deleted file mode 100644
index 73fe14b..0000000
--- a/accounts/page/voucher_import_tool/voucher_import_tool.py
+++ /dev/null
@@ -1,279 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-from webnotes import _
-from webnotes.utils import flt, comma_and, cstr
-import webnotes.defaults
-
-@webnotes.whitelist()
-def get_template():
-	"""download template"""
-	template_type = webnotes.form_dict.get('type')
-	
-	doctypelist = webnotes.get_doctype("Journal Voucher")
-	naming_options = doctypelist.get_options("naming_series")
-	voucher_type = doctypelist.get_options("voucher_type")
-
-	if template_type=="Two Accounts":
-		extra_note = ""
-		columns = '''"Naming Series","Voucher Type","Posting Date","Amount","Debit Account","Credit Account","Cost Center","Against Sales Invoice","Against Purchase Invoice","Against Journal Voucher","Remarks","Due Date","Ref Number","Ref Date"'''
-	else:
-		extra_note = '''
-"5. Put the account head as Data label each in a new column"
-"6. Put the Debit amount as +ve and Credit amount as -ve"'''
-		columns = '''"Naming Series","Voucher Type","Posting Date","Cost Center","Against Sales Invoice","Against Purchase Invoice","Against Journal Voucher","Remarks","Due Date","Ref Number","Ref Date"'''
-	
-	
-	webnotes.response['result'] = '''"Voucher Import: %(template_type)s"
-"Each entry below will be a separate Journal Voucher."
-"Note:"
-"1. Dates in format: %(user_fmt)s"
-"2. Cost Center is required for Income or Expense accounts"
-"3. Naming Series Options: %(naming_options)s"
-"4. Voucher Type Options: %(voucher_type)s"%(extra_note)s
-"-------Common Values-----------"
-"Company:",
-"--------Data----------"
-%(columns)s
-''' % {
-		"template_type": template_type,
-		"user_fmt": webnotes.defaults.get_global_default('date_format'),
-		"naming_options": naming_options.replace("\n", ", "),
-		"voucher_type": voucher_type.replace("\n", ", "),
-		"extra_note": extra_note,
-		"columns": columns
-	}
-	webnotes.response['type'] = 'csv'
-	webnotes.response['doctype'] = "Voucher-Import-%s" % template_type
-
-
-@webnotes.whitelist()
-def upload():
-	messages = []
-	try:
-		from webnotes.utils.datautils import read_csv_content_from_uploaded_file
-		rows = read_csv_content_from_uploaded_file()
-	
-		common_values = get_common_values(rows)
-		company_abbr = webnotes.conn.get_value("Company", common_values.company, "abbr")
-		
-		if not company_abbr:
-			webnotes.msgprint(_("Company is missing or entered incorrect value"), raise_exception=1)
-		
-		data, start_idx = get_data(rows, company_abbr, rows[0][0])
-	except Exception, e:
-		err_msg = webnotes.local.message_log and "<br>".join(webnotes.local.message_log) or cstr(e)
-		messages.append("""<p style='color: red'>%s</p>""" % (err_msg or "No message"))
-		webnotes.errprint(webnotes.getTraceback())
-		webnotes.local.message_log = []
-		return messages
-		
-	return import_vouchers(common_values, data, start_idx, rows[0][0])
-	
-	
-
-
-def map_fields(field_list, source, target):
-	for f in field_list:
-		if ":" in f:
-			target[f.split(":")[1]] = source.get(f.split(":")[0])
-		else:
-			target[f] = source.get(f)
-
-def import_vouchers(common_values, data, start_idx, import_type):
-	from webnotes.model.doc import Document
-	from webnotes.model.bean import Bean
-	from accounts.utils import get_fiscal_year
-	from webnotes.utils.dateutils import parse_date
-	messages = []
-	
-	def get_account_details(account):
-		acc_details = webnotes.conn.sql("""select is_pl_account, 
-			master_name from tabAccount where name=%s""", account, as_dict=1)
-		if not acc_details:
-			webnotes.msgprint("%s is not an Account" % account, raise_exception=1)
-		return acc_details[0]
-
-	def apply_cost_center_and_against_invoice(detail, d):
-		account = get_account_details(detail.account)
-
-		if account.is_pl_account=="Yes":
-			detail.cost_center = d.cost_center
-		
-		if account.master_name:
-			map_fields(["against_sales_invoice:against_invoice", 
-				"against_purchase_invoice:against_voucher", 
-				"against_journal_voucher:against_jv"], d, detail.fields)
-	
-	webnotes.conn.commit()
-	try:
-		jv = Document("Journal Voucher")
-		
-		webnotes.conn.begin()
-		for i in xrange(len(data)):
-			jv = Document("Journal Voucher")
-			
-			d = data[i][0]
-			if import_type == "Voucher Import: Two Accounts" and flt(d.get("amount")) == 0:
-				webnotes.local.message_log = ["Amount not specified"]
-				raise Exception
-			elif import_type == "Voucher Import: Multiple Accounts" and \
-			 		(flt(d.get("total_debit")) == 0 or flt(d.get("total_credit")) == 0):
-				webnotes.local.message_log = ["Total Debit and Total Credit amount can not be zero"]
-				raise Exception
-			else:
-				d.posting_date = parse_date(d.posting_date)
-				d.due_date = d.due_date and parse_date(d.due_date) or None
-				
-				if d.ref_number:
-					if not d.ref_date:
-						webnotes.msgprint(_("Ref Date is Mandatory if Ref Number is specified"), 
-							raise_exception=1)
-							
-					d.ref_date = parse_date(d.ref_date)
-				
-				d.company = common_values.company
-						
-				map_fields(["voucher_type", "posting_date", "naming_series", 
-					"remarks:user_remark", "ref_number:cheque_no", "ref_date:cheque_date",
-					"is_opening", "due_date", "company"], d, jv.fields)
-
-				jv.fiscal_year = get_fiscal_year(jv.posting_date)[0]
-
-				details = []
-				if import_type == "Voucher Import: Two Accounts":
-					map_fields(["amount:total_debit", "amount:total_credit"], d, jv.fields)
-					
-					detail1 = Document("Journal Voucher Detail")
-					detail1.parent = True
-					detail1.parentfield = "entries"
-					map_fields(["debit_account:account","amount:debit"], d, detail1.fields)
-					apply_cost_center_and_against_invoice(detail1, d)
-		
-
-					detail2 = Document("Journal Voucher Detail")
-					detail2.parent = True
-					detail2.parentfield = "entries"
-					map_fields(["credit_account:account","amount:credit"], d, detail2.fields)
-					apply_cost_center_and_against_invoice(detail2, d)
-				
-					details = [detail1, detail2]
-				elif import_type == "Voucher Import: Multiple Accounts":
-					map_fields(["total_debit", "total_credit"], d, jv.fields)
-					accounts = data[i][1]
-					for acc in accounts:
-						detail = Document("Journal Voucher Detail")
-						detail.parent = True
-						detail.parentfield = "entries"
-						detail.account = acc
-						detail.debit = flt(accounts[acc]) > 0 and flt(accounts[acc]) or 0
-						detail.credit = flt(accounts[acc]) < 0 and -1*flt(accounts[acc]) or 0
-						apply_cost_center_and_against_invoice(detail, d)
-						details.append(detail)
-								
-				if not details:
-					webnotes.local.message_log = ["""No accounts found. 
-						If you entered accounts correctly, please check template once"""]
-					raise Exception
-					
-				doclist = Bean([jv]+details)
-				
-				# validate datatype
-				from core.page.data_import_tool.data_import_tool import check_record
-				for d in doclist:
-					check_record(d.fields, d.parenttype)
-				
-				doclist.submit()
-			
-				messages.append("""<p style='color: green'>[row #%s] 
-					<a href=\"#Form/Journal Voucher/%s\">%s</a> imported</p>""" \
-					% ((start_idx + 1) + i, jv.name, jv.name))
-		webnotes.conn.commit()
-	except Exception, e:
-		webnotes.conn.rollback()
-		err_msg = webnotes.local.message_log and "<br>".join(webnotes.local.message_log) or cstr(e)
-		messages.append("""<p style='color: red'>[row #%s] %s failed: %s</p>"""
-			% ((start_idx + 1) + i, jv.name or "", err_msg or "No message"))
-		messages.append("<p style='color: red'>All transactions rolled back</p>")
-		webnotes.errprint(webnotes.getTraceback())
-		webnotes.local.message_log = []
-			
-	return messages
-
-def get_common_values(rows):
-	start = False
-	common_values = webnotes._dict()
-	
-	for r in rows:
-		if start:
-			if r[0].startswith("---"):
-				break
-			common_values[r[0][:-1].replace(" ", "_").lower()] = r[1]
-		if r[0]=="-------Common Values-----------":
-			start = True
-
-	return common_values
-	
-def get_data(rows, company_abbr, import_type):
-	start_row = 0
-	data = []
-	start_row_idx = 0
-	accounts = None
-	for i in xrange(len(rows)):
-		r = rows[i]
-		if r[0]:
-			if start_row and i >= start_row:
-				if not start_row_idx: start_row_idx = i
-				d, acc_dict = webnotes._dict(), webnotes._dict()
-				for cidx in xrange(len(columns)):
-					d[columns[cidx]] = r[cidx]
-					
-				if accounts:
-					total_debit = total_credit = 0
-					for acc_idx in xrange(len(accounts)):
-						col_idx = len(columns) + acc_idx
-						if flt(r[col_idx]) != 0:
-							if not acc_dict.get(accounts[acc_idx]):
-								acc_dict[accounts[acc_idx]] = 0
-							acc_dict[accounts[acc_idx]] += flt(r[col_idx])
-						if flt(r[col_idx]) > 0:
-							total_debit += flt(r[col_idx])
-						else:
-							total_credit += abs(flt(r[col_idx]))
-							
-					d['total_debit'] = total_debit
-					d['total_credit'] = total_credit
-				
-				data.append([d, acc_dict])
-				
-
-			if r[0]=="--------Data----------":
-				start_row = i+2
-				
-				# check for empty columns
-				empty_columns = [j+1 for j, c in enumerate(rows[i+1]) if not c]
-				if empty_columns:
-					raise Exception, """Column No(s). %s %s empty. \
-						Please remove them and try again.""" % (comma_and(empty_columns),
-						len(empty_columns)==1 and "is" or "are")
-
-				columns = [c.replace(" ", "_").lower() for c in rows[i+1] 
-					if not c.endswith(" - " + company_abbr)]
-					
-				if import_type == "Voucher Import: Multiple Accounts":
-					accounts = [c for c in rows[i+1] if c.endswith(" - " + company_abbr)]
-
-					if not accounts:
-						webnotes.msgprint(_("""No Account found in csv file, 
-							May be company abbreviation is not correct"""), raise_exception=1)
-
-					if accounts and (len(columns) != rows[i+1].index(accounts[0])):
-						webnotes.msgprint(_("""All account columns should be after \
-							standard columns and on the right.
-							If you entered it properly, next probable reason \
-							could be wrong account name.
-							Please rectify it in the file and try again."""), raise_exception=1)
-				
-	return data, start_row_idx
\ No newline at end of file
diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.txt b/accounts/page/voucher_import_tool/voucher_import_tool.txt
deleted file mode 100644
index 187ee58..0000000
--- a/accounts/page/voucher_import_tool/voucher_import_tool.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-[
- {
-  "creation": "2012-10-02 18:51:49", 
-  "docstatus": 0, 
-  "modified": "2013-07-11 14:45:25", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "doctype": "Page", 
-  "icon": "icon-upload", 
-  "module": "Accounts", 
-  "name": "__common__", 
-  "page_name": "voucher-import-tool", 
-  "standard": "Yes", 
-  "title": "Voucher Import Tool"
- }, 
- {
-  "doctype": "Page Role", 
-  "name": "__common__", 
-  "parent": "voucher-import-tool", 
-  "parentfield": "roles", 
-  "parenttype": "Page", 
-  "role": "Accounts Manager"
- }, 
- {
-  "doctype": "Page", 
-  "name": "voucher-import-tool"
- }, 
- {
-  "doctype": "Page Role"
- }
-]
\ No newline at end of file