error fixes in voucher import tool
diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.py b/accounts/page/voucher_import_tool/voucher_import_tool.py
index e42e11a..4fb033b 100644
--- a/accounts/page/voucher_import_tool/voucher_import_tool.py
+++ b/accounts/page/voucher_import_tool/voucher_import_tool.py
@@ -89,77 +89,86 @@
 				"against_journal_voucher:against_jv"], d, detail.fields)
 	
 	webnotes.conn.commit()
-	for i in xrange(len(data)):
-		d = data[i][0]
-		jv = webnotes.DictObj()
-
-		try:
-			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:
-					raise webnotes.ValidationError, \
-						"""Ref Date is Mandatory if Ref Number is specified"""
-				d.ref_date = parse_date(d.ref_date)
+	try:
+		webnotes.conn.begin()
+		for i in xrange(len(data)):
+			d = data[i][0]
+			if import_type == "Voucher Import: Two Accounts" and flt(d.get("amount")) == 0:
+				webnotes.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.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
 				
-			d.company = common_values.company
+				if d.ref_number:
+					if not d.ref_date:
+						raise webnotes.ValidationError, \
+							"""Ref Date is Mandatory if Ref Number is specified"""
+					d.ref_date = parse_date(d.ref_date)
+				
+				d.company = common_values.company
 						
-			jv = Document("Journal Voucher")
-			map_fields(["voucher_type", "posting_date", "naming_series", "remarks:user_remark",
-				"ref_number:cheque_no", "ref_date:cheque_date", "is_opening",
-				"amount:total_debit", "amount:total_credit", "due_date", "company"], d, jv.fields)
+				jv = Document("Journal Voucher")
+				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]
+				jv.fiscal_year = get_fiscal_year(jv.posting_date)[0]
 
-			details = []
-			if import_type == "Voucher Import: Two Accounts":
-				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)
+				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)
+					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":
-				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)
+					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:
-				messages.append("""<p style='color: red'>No accounts found. 
-					If you entered accounts correctly, please check template once</p>""")
-				return
-			webnotes.conn.begin()
-			doclist = DocList([jv]+details)
-			doclist.submit()
-			webnotes.conn.commit()
+				if not details:
+					webnotes.message_log = ["""No accounts found. 
+						If you entered accounts correctly, please check template once"""]
+					raise Exception
+					
+				doclist = DocList([jv]+details)
+				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))
-			
-		except Exception, e:
-			webnotes.conn.rollback()
-			err_msg = webnotes.message_log and webnotes.message_log[0] or unicode(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"))
-			webnotes.errprint(webnotes.getTraceback())
-
+				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.message_log and webnotes.message_log[0] or unicode(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.message_log = []
 			
 	return messages
@@ -192,12 +201,18 @@
 					d[columns[cidx]] = r[cidx]
 					
 				if accounts:
-					total = 0
+					total_debit = total_credit = 0
 					for acc_idx in xrange(len(accounts)):
 						col_idx = len(columns) + acc_idx
-						acc_dict[accounts[acc_idx]] = r[col_idx]
-						if flt(r[col_idx]) > 0: total += flt(r[col_idx])
-					d['amount'] = total
+						if flt(r[col_idx]) != 0:
+							acc_dict[accounts[acc_idx]] = 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])
 				
@@ -205,7 +220,7 @@
 			if r[0]=="--------Data----------":
 				start_row = i+2
 				columns = [c.replace(" ", "_").lower() for c in rows[i+1] 
-					if not c.endswith(company_abbr)]
-				accounts = [c for c in rows[i+1] if c.endswith(company_abbr)]
+					if not c.endswith(" - " + company_abbr)]
+				accounts = [c for c in rows[i+1] if c.endswith(" - " + company_abbr)]
 	
 	return data, start_row_idx
\ No newline at end of file